护网蓝队面试题-漏洞篇
本文最后更新于633 天前,其中的信息可能已经过时

漏洞篇题目

Q:SQL注入的原理和产生原因?

A:

SQL注入原理:

通过某种方式将恶意的sql代码添加到输入参数中,然后传递到sql服务器使其解析并执行的一种攻击手法

漏洞产生原因(实现条件):

用户对sql查询语句参数可控

原本程序要执行的SQL语句,拼接了用户输入的恶意数据

Q:SQL注入的类型?

A:

1.联合注入

2.堆叠注入
3.宽字节注入
4.cookie注入
5.XFF头注入
6.UA注入(user-agent注入)

7.Referer注入
8.二次注入
9.base64注入

10.万能密码
1.文件读写

盲注类型:
1.基于时间的盲注 sleep() benchmark()
2.基于布尔的注入
3.基于报错的注入

updatexml() extractvalue() floor() exp()

Q:预防SQL注入的方法和原理?

A:

1.预编译(数据库不会将参数的内容视为SQL命令执行,而是作为一个字段的属性值来处理)

2.PDO预处理 (本地和Mysql服务端使用字符集对输入进行转义)
3.正则表达式过滤 (如果用户输入了非法信息则利用正则表达式过滤)

Q:SQL注入有哪些绕过方法?

A:

1.大小写绕过注入

2.双写绕过注入

3.编码绕过注入

4.内联注释绕过注入

Q:SQL注入有哪些危害?

A:

1.获取数据库数据

数据库中存放的用户的隐私信息的泄露,脱取数据库中的数据内容(脱库),可获取网站管理员帐号、密码悄无声息的进行对网站后台操作等。
2.网页篡改

通过操作数据库对特定网页进行篡改,严重影响正常业务进行与受害者信誉。
3.网页挂马

将恶意文件或者木马下载链接写入数据库,修改数据库字段值,进行挂马攻击。
4.篡改数据库数据

攻击数据库服务器,篡改或者添加普通用户或者管理员帐号。
5.获取服务器权限

列取目录、读取、写入shell文件获取webshell,远程控制服务器,安装后门,经由数据库服务器提供的操作系统支持,让攻击者得以修改或控制操作系统。

Q:XSS的原理和类型?

A:

原理:攻击者在Web页面中注入恶意的Script代码,当用户浏览该网页时,嵌入的Script代码会被执行,从而达到攻击的目的。

类型:反射型XSS 存储型XSS DOM型XSS

Q:XSS的绕过方法?

A:

大小写转换;
引号的使用;
使用 / 代替空格;
编码绕过(将字符进行十进制或者十六进制转码);
5.双写绕过;

6.使用制表符 换行符和回车符

7.使用 IMG 源

Q:XSS的危害?

A:

窃取cookie

抓取屏幕截图

获取键盘记录

重定向

植入广告,恶意链接

网页钓鱼

网页挂马

结合网页挂马或者其他工具(Metasploit)获取服务器或者操作系统权限

Q:XSS的防范措施?

A:

对用户的输入进行过滤

比如说添加黑名单或者白名单规则,比如说对& " ’ / javascript import等敏感字符进行转义
使用 HttpOnly Cookie

如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样可以有效的防止XSS攻击窃取cookie。
设置X-XSS-Protection属性

该属性被所有的主流浏览器默认开启。X-XSS-Protection,即XSS保护属性,是设置在响应头中目的是用来防范XSS攻击的。在检查到XSS攻击时,停止渲染页面。
开启CSP网页安全策略

CSP是网页安全策略(Content Security Policy)的缩写。开启策略后可以起到以下作用:禁止加载外域代码,防止复杂的攻击逻辑;禁止外域提交,网站被攻击后,用户的数据不会泄露到外域;禁止内联脚本执行(规则较严格,目前发现 GitHub 使用);禁止未授权的脚本执行(新特性,Google Map 移动版在使用)。合理使用上报可以及时发现 XSS,利于尽快修复问题。
避免内联事件

尽量不要使用 onLoad=“onload(’{{data}}’)”、onClick=“go(’{{action}}’)” 这种拼接内联事件的写法。在 JavaScript 中通过 .addEventlistener() 事件绑定会更安全。
使用模板引擎

开启模板引擎自带的 HTML 转义功能。例如: 在 ejs 中,尽量使用 而不是 ; 在 doT.js 中,尽量使用 {{! data } 而不是 {{= data }; 在 FreeMarker 中,确保引擎版本高于 2.3.24。

Q:CSRF漏洞原理?

A:

web应用程序在用户进行敏感操作时,如修改账号密码、添加账号、转账等,没有校验表单token或者http请求头中的referer值,从而导致恶意攻击者利用普通用户的身份(cookie)完成攻击行为。

受害者A登录网站,攻击者B构造有效链接诱导受害者A访问,网站在线期间会将该请求当做正常业务执行。(比如修改密码,向某用户转账等业务,当然现在这种简单的EXP基本上见不到,拿靶场验证一下用于理解原理就行了)

Q:CSRF漏洞类型?

A:

GET类型

POST类型

比如在一个页面中构造好一个表单表单,将这个页面隐藏在一个不可见的iframe窗口中,然后使用JavaScript自动提交这个表单,在整个过程中,对于用户来说是不可见的。当用户访问该页面后,表单会自动提交,相当于模拟用户完成了一次POST操作

Q:CSRF漏洞危害?

A:

盗用其他用户或者管理员的账号

获取个人隐私或者机密资料

联合其他漏洞组合拳

比如说拿到管理员账号之后,我们在某个页面利用XSS漏洞进行网页挂马,普通用户访问后就会下载木马程序,进而联合MSF或者CS等工具getshell。再比如说你把管理员密码还原一下,真正管理员登录的时候也会受到网页挂马的影响,结合工具可以进一步拿下管理员主机权限。

Q:CSRF漏洞防范措施?

A:

验证码验证

验证码被认为是对抗CSRF攻击最简洁而有效的防御方法。

CSRF攻击的过程,往往是在用户不知情的情况下构造了网络请求。而验证码,则强制用户必须与应用进行交互,才能完成最终请求。因此在通常情况下,对用户执行敏感操作时进行验证,就能够很好地遏制CSRF攻击。

但是验证码并非万能。很多时候,出于用户体验考虑,网站不能给所有的操作都加上验证码。因此,验证码只能作为防御CSRF的一种辅助手段,而不能作为最主要的解决方案。

在请求地址中添加 token 并验证

CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于 cookie 中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的 cookie 来通过安全验证。

要抵御 CSRF关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。

可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

验证 HTTP头的Referer 字段

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,头信息里会包含Referer。

比如我在www.google.com 里有一个www.baidu.com 链接,那么点击这个链接,它的头信息里就会有:

Referer=http://www.google.com

通过验证Referer,可以判断请求的合法性,如果Referer是其他网站的话,就有可能是CSRF攻击,则拒绝该请求。

HTTP 头中自定义属性并验证

这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。缺陷是要采用这种方法来进行防护,要把所有请求都改为 XMLHttpRequest 请求,就意味着可能要重写整个网站,这代价无疑是不能接受的。

Q:SSRF漏洞原理?

A:

当攻击者想要访问服务器B上的服务,但是由于存在防火墙或者服务器B是属于内网主机等原因导致攻击者无法直接访问。如果服务器A存在SSRF漏洞,这时攻击者可以借助服务器A来发起SSRF攻击,通过服务器A向主机B发起请求,达到攻击内网的目的。

Q:SSRF漏洞经常存在的位置?

A:

分享:通过URL地址分享网页内容

转码服务

在线翻译

图片加载与下载:通过URL地址加载或下载图片

图片、文章收藏功能

未公开的api实现以及其他调用URL的功能

Q:SSRF漏洞绕过手法?

A:

利用@绕过限制白名单域名

利用@,当网站限制只能访问 http://www.xxx.com类型的域名时,可以采用http基本身份认证的方式绕过,如:http://[email protected]

绕过限制白名单内网IP

采用短网址绕过

利用特殊域名,xip.io可以指向任意域名(原理是DNS解析),即 127.0.0.1.xip.io,可以解析为127.0.0.1

采用进制转换,127.0.0.1 八进制:0177.0.0.1;十六进制:0x7f.0.0.1;十进制:2130706433

利用[::],http://[::]:80/ 会解析为 http://127.0.0.1

添加端口号,http://127.0.0.1:8080

利用句号,如127。0。0。1 会解析为 127.0.0.1

采用302跳转

绕过限制请求http协议

采用302跳转

采用短地址

Q:SSRF漏洞的危害?

A:

对外网、服务器所在内网、本地进行端口扫描

向内部任意主机的任意端口发送payload来攻击内网服务

DOS攻击(请求大文件,始终保持连接Keep-Alive Always)

攻击内网的web应用,如直接SQL注入、XSS攻击等

利用file、gopher、dict协议读取本地文件、执行命令等

可以无视网站CDN

Q:SSRF漏洞的防范方法?

A:

禁止跳转

过滤返回的信息

如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

统一错误信息

避免用户可以根据错误信息来判断远程服务器的端口状态。

限制请求的端口

比如80,443,8080,8090。

禁止除HTTP和HTTPS外的协议

比如说仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp://请求等引起的问题。

对请求地址设置白名单或者限制内网IP

Q:XXE漏洞的原理?

A:

XML 文件在引用外部实体时候,可以沟通构造恶意内容,可以导致读取任意文件,命令执行和对内网的攻击

Q:如何构建XXE攻击?

A:

1.直接通过DTD外部实体声明

2.通过DTD文档引入外部DTD文档,再引入外部实体声明

3.通过DTD外部实体声明引入外部实体声明

Q:XXE漏洞的危害?

A:

任意文件读取

系统命令执行

执行远程代码

DOS拒绝服务攻击

内网端口探测

攻击内网网站

钓鱼

Q:XXE漏洞的防范?

A:

禁用外部实体的引入

比如PHP语言中使用libxml_disable_entity_loader(true);等方式。

过滤如SYSTEM等敏感关键字,防止非正常、攻击性的外部实体引入操作。

Q:文件上传漏洞的原理?

A:

Web页面中文件上传功能没有对上传的文件做合理严谨的过滤,导致用户可以利用此功能,上传能被服务端解析执行的文件,并通过此文件获得执行服务端命令的能力。

Q:文件上传漏洞的绕过手法?

A:

前端JS禁用绕过

在前端页面禁用JS,当然也有可能影响正常页面显示却没用

简单修改后缀名绕过

如果只是前端页面限制上传的文件后缀名,那么我们就可以利用burp suite等工具修改文件后缀名绕过。

抓包修改MIME类型

常见图片MIME类型: image/gif, image/png, image/jpeg, image/bmp, image/webp, image/x-icon, image/vnd.microsoft.icon

服务端代码是通过Content-Type的值来判断文件的类型,这样我们可以直接对文件的Content-Type值进行修改来绕过。

后缀名大小写绕过

如果源代码没有对文件后缀名进行大小写转换,那么只要更改文件名后缀大小写即可绕过黑名单

图片马绕过

使用edjpgcom等工具或者命令将图片和WebShell制作成一个图片马

GIF89a图片头文件欺骗

比如GIF89a,在webshell前面加上GIF89a,后台认为是图片,上传后再执行木马,更有效的做法是结合其他绕过方法更有针对性的绕过。

%00,0x00截断

比如修改文件名为 1.php%00.jpg,如果php 版本<5.3.4 在url中%00表示ascll码的0 ,而ascii码的0,表示字符串结束,所以当url中出现%00时就会认为读取已结束,最后会被解析为 1.php,从而实现绕过

.htaccess文件绕过

.htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过.htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

比如说在htaccess文件中有如下内容

AddType application/x-httpd-php .png 那我们随后上传png后缀图片马即可绕过

.user.ini.绕过

.user.ini文件里的意思是:所有的php文件都自动包含指定的文件,比如说某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件,否则也不能包含了。 再比如,你只是想隐藏个后门,这个方式是最方便的。

条件竞争绕过

一些网站上传文件的逻辑是先允许上传任意文件,然后检查上传的文件是否包含webshell脚本,如果包含则删除该文件。这里存在的问题是文件上传成功后和删除文件之间存在一个短的时间差(因为要执行检查文件和删除文件的操作),攻击者可以利用这个短的时间差完成条件竞争的上传漏洞攻击。比如上传一个php文件里面这样写

<?php fputs(fopen('../shell.php','w'),''); ?>

::$DATA绕过

在php代码中没有对::DATA之后的数据当成文件流处理,保持::DATA.jpg,如果成功上传到服务器就会去掉::DATA.jpg上传到服务器后缀仍然是.jpg

+空格+点绕过

某些情况下,源代码先是去除文件名前后的空格,再去除文件名最后所有的.,再通过strrchar函数来寻找.来确认文件名的后缀,但是最后保存文件的时候没有重命名而使用的原始的文件名,导致可以利用1.php. .(点+空格+点)来绕过

后缀名双写绕过

黑名单过滤,将黑名单里的后缀名替换为空且只替换一次,因此可以用双写绕过,比如1.pphphp,后端源代码过滤掉红色标注部分,剩余1.php。

特殊可解析后缀绕过

源代码有黑名单限制,那么我们就可以修改文件后缀名为根据后端的脚本语言能够解析的文件后缀,比如源代码是用php语言写的话,1.php1会被解析为1.php。PhP除了可以解析php后缀 还可以解析php1,php2,php3,php4 ,phtml等。Asp可解析 asa,cer,cdx。Aspx可解析 ashx,asmx,ascx。Jsp可解析jspx、jspf

然而这种绕过方法可能会让我们绕过成功,但服务器默认配置却可能不允许这些后缀的文件执行

Q:文件上传漏洞的危害?

A:

上传webshell,控制服务器、远程命令执行

上传系统病毒、木马文件进行挖矿、僵尸网络

进行提权操作

修改web页面,实现钓鱼、挂马等操作。

进行内网渗透。

Q:文件上传功能的监测点有哪些?

A:

客户端的JS检测(主要检测文件名后缀)

服务端检测(MINE类型检测、文件后缀名、文件格式头)

Q:文件上传功能的防范措施有哪些?

A:

文件上传的目录设置为不可执行

只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此这一点至关重要。

严格判断文件类型

在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。

使用随机数修改文件名和文件路径

文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。

单独设置文件服务器的域名

由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决。

内容检测

有效防范图片马和文件二次渲染

安全加固中间件

及时更新并加固中间件,可以有效避免因为中间件的漏洞而导致的文件上传漏洞,比如某些中间件以前的版本很多都具有文件解析漏洞

采用WAF等安全防护设备

采用WAF等安全防护设备可以有效的防御常见漏洞

Q:常见的未授权访问漏洞有哪些?

A:

a.MongoDB未授权访问漏洞

b.Redis未授权访问漏洞

c.Memcached未授权访问漏洞

d.JBOSS未授权访问漏洞

e.VNC未授权访问漏洞

f.Docker未授权访问漏洞

g.ZooKeeper未授权访问漏洞

h.Rsync未授权访问漏洞

Q:简单讲一下反序列化漏洞?

A:

序列化是指程序将对象转化为字节序列从而便于存储运输的一种方式,反序列化则与其相反,即将字节序列转化为对象供程序使用。程序在进行反序列化时会调用一些函数,比如常见的PHP 反序列化函数 unserialize()以及一些常见的魔术方法,比如构造函数_construct(),析构函数destruct() ,_wakeup(),toString(0) ,sleep0等等。如果这些函数在传递参数时没有进行严格的过滤措施,那么攻击者就可以构造恶意代码并将其序列化后传入函数中,从而导致反序列化漏洞

Q:常见的逻辑漏洞有哪些?

A:

验证码相关的,例如重复利用,验证码无效等,越权漏洞等等

Q:代码执行、命令执行、文件读取的函数有哪些?

A:

代码执行eval、call_user_func、call_user_func_array等

文件读取fopen()、readfile()、fread()、file()、show_source()等

命令执行system()、exec()、shell_exec()、passthru()、pcntl_exec()等

Q:常见的中间件和对应漏洞有哪些?

A:

•IIS:PUT漏洞、短文件名猜解、远程代码执行、解析漏洞

•Apache:解析漏洞、目录遍历

•Nginx:文件解析、目录遍历、CRLF注入、目录穿越

•Tomcat:远程代码执行、war后门文件部署

•JBoss:反序列化漏洞、war后门文件部署

•WebLogic:反序列化漏洞、SSRF任意文件上传、war后门文件部署

•ApacheShiro反序列化漏洞:ShirorememberMe(Shiro-550)、ShiroPaddingOracleAttack(Shiro-721)

Q:fastjson漏洞利用原理?

A:

在请求包里面中发送恶意的 json 格式 payload,漏洞在处理 json 对象的时候, 没有对@type 字段进行过滤,从而导致攻击者可以传入恶意的 TemplatesImpl 类,而 这个类有一个字段就是_bytecodes,有部分函数会根据这个_bytecodes 生成 java 实例,这就达到 fastjson 通过字段传入一个类,再通过这个类被生成时执行构造函数。

Q:如何发现shiro漏洞?

A:

登陆失败时候会返回 rememberMe=deleteMe 字段或者使用 shiroScan 被动扫描去发现

Q:哪些漏洞会被高频利用于打点?

A:

a.ApacheShiro相关漏洞

b.Fastjson漏洞

c.Log4j

d.上传漏洞

e.边界网络设备资产+弱口令

© 著作权归作者所有:来自 51CTO 博客作者李白来了的原创作品,请联系作者获取转载授权,否则将追究法律责任 2023 网络安全 HW 蓝队面试题汇总 https://blog.51cto.com/lihuailong/6249701

如果觉得本文对您有所帮助,可以支持下博主,一分也是缘😊
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇