目录
2、SQL注入漏洞根据攻击方式可分为哪些类型?分别负责解决那些问题?
7、存储型XSS和反射性XSS有什么区别?实际场景中,应如何挖掘?
9、任意文件上传漏洞的产生原理是什么?如何测试网站是否存在文件上传漏洞?
10、任意文件上传漏洞中的条件竞争漏洞原理是什么?如何利用条件竞争上传Webshell?
14、命令注入漏洞和代码注入漏洞的区别是什么?在代码层面如何防御?
16、PHP反序列化漏洞原理是什么?如何挖掘PHP反序列化漏洞?
19、短信验证码爆破和短信轰炸的原理各自是什么?如何挖掘此类漏洞?
20、在测试支付逻辑漏洞时,应该关注哪些测试点,如何挖掘支付逻辑漏洞?
面试题基础
-
1、渗透测试的流程
- 签署渗透测试
- 信息收集
- 漏洞发现
- 漏洞利用
- 权限提升
- 内网渗透
- 1、内网信息收集
- 2、内网横向移动
- 3、内网权限维持
- 清理痕迹
- 撰写渗透测试报告
-
2、SQL注入漏洞根据攻击方式可分为哪些类型?分别负责解决那些问题?
- 联合查询注入、报错注入、盲注(时间盲注、布尔盲注)、Dnslog注入、宽字节注入
- 1、联合查询注入:支持在页面有会显得情况下查询数据。、
- 2、报错注入:
- 3、盲注:解决无回显状态下的数据查询。
- 4、布尔盲注:根据页面返回状态的真/价执行判断。
- 5、时间盲注:根据页面返回的延时执行判断。
- Dnslog注入:旨在解决Windows系统上,页面无回显的问题,且不会导致想服务器端发送大量请求。
- 宽字节注入:解决存在单引号过滤或者magic——quotes——gpc开启的问题。
- 联合查询注入、报错注入、盲注(时间盲注、布尔盲注)、Dnslog注入、宽字节注入
-
3、SQL注入如何像网站写入Webshell?
- 拥有写入文件的数据库用户权限,例如:root
- 能够获取网站根目录的绝对路径
- 设置php.ini文件中的magic_quotes_gpc=off。在较早的PHP版本中,magic_quotes_gpc会影响到SQL注入漏洞的利用。但在较新的PHP版本中,magic_quotes_gpc已经废弃,此条件可能不再适用于最新的PHP环境中。
-
4、宽字节漏洞产生原理是什么?如何利用?
-
1、产生原理
- 主要利用了数据库和web应用程序之间编码不一致的问题。针对使用GBK、BIG5等双字节字符编码的网站。宽字节注入利用编码转换漏洞,通过在SQL查询语句中插入特殊构造得双字节字符来绕过输入过滤和验证,最终实现对数据库的非法查询或者篡改。
-
2、利用方式
- 在宽字节注入中,利用宽字节特性,在单引号前加入一个特殊的字节序列(如%df),与反斜杠(%5c)组合,使其在数据库中视为一个完整字符。从而,导致但因阿红成功逃逸。并执行SQL命令。
-
-
5、二次注入的漏洞产生原理是什么?怎么利用?
-
漏洞产生原理
- 将构造的而已查询语句存储在数据库中,然后在后续的查询中再次使用存储的恶意语句。
-
利用方式
- 1、寻找一个插入数据的位置,插入恶意SQL语句至数据库,例如admin'#
- 2、寻找一个从数据库调用所插入的而已语句的位置。
-
-
6、堆叠注入的漏洞产生原理是什么?怎么利用?
-
产生原理
- 1、目标存在SQL注入漏洞;
- 2、目标未对分号( ; )过滤;
- 3、目标中间层查询数据库信息时可同时执行多条SQL语句。
-
利用方式
- 通过SQL查询语句的结尾添加分号 ; 并继续添加另一条或多条SQL语句来执行多条命令。
- 例:select * from products where product id=1;delete from product;第一条显示查询结果,第二条执行删除操作。
-
-
7、存储型XSS和反射性XSS有什么区别?实际场景中,应如何挖掘?
-
区别
-
被攻击对象:
- 反射型:攻击对象由攻击方选择,攻击方需要将含有xss代码的URL链接发送给受害者。
- 存储型:攻击方将XSS代码放置在有漏洞的网站上,任何访问网站的受害者都可能受到攻击。
-
解析位置:
- 反射型:发生在浏览器端,当受害者访问含有XSS代码的页面时,浏览器解析并执行XSS代码。
- 存储型:发生在服务器端,xss代码被存储在服务器上,当用户访问网站时,服务器将XSS代码返回给卢岚气,浏览器执行代码。
-
存储时间:
- 反射型:没有持久性,即使用户访问了含有XSS代码的页面,XSS代码也不会在用户设备上留下任何痕迹。如果源代码没有改变,XSS代码也不会再次被执行。
- 存储型:只要服务器不崩溃,XSS代码一直存在,因此攻击的持久性更强。
-
允许输入点:
- 反射型XSS:可能出现在搜索框、页面跳转等地方,输入点通常由用户控制。
- 存储型XSS:可能出现在用户存储数据的地方,如留言板或用户配置文件等,输入点通常由网站开发者控制。
-
-
挖掘方式
-
黑盒方式
- 见框就插,测试所有评论区、留言板、搜索框等功能。
- 测试输入数据后,页面存在数据回显的功能。
-
白盒方式
- 搜索函数echo、print等关键字,寻找存在用户可控参数,且未经过过滤不严谨的位置。
-
-
-
8、XSS窃取Cookie的原理是什么?防御方式有哪些?
-
原理
- 向目标网站后台管理界面注入一段恶意JS代码,通过document。cookie获取当前网站的cookie信息,并将cookie与当前网站的URL一同发送给攻击饭的接收平台。
- 管理员登录网站后台,出发恶意Js代码,将当前网站URL和cookie信息发送给攻击方的接收平台。
-
防御方式:
- 设置set—cookie:httpOnly 禁止使用JS的documnet.cookie读取网站cookie信息。
- 设置set-cookie:secure 创建的cooie只能在HTTPS连接中被浏览器传递到服务器端执行会话验证,如果是HTTP链接则不会传递cookie信息,故不会受到窃取。
- 对输出的内容执行HTML编码
- 过滤敏感字符,如 "<" ">" "script"
-
-
9、任意文件上传漏洞的产生原理是什么?如何测试网站是否存在文件上传漏洞?
-
原理
- 网站存在文件上传功能,允许用户上传于当前网站类型一致的脚本文件,并执行解析。
-
挖掘思路
- 寻找文件上传接口,判断文件上传功能是否存在过滤
- 判断上传接口使用客户端监测(JS)or 服务端(PHP、JSP)检测
- 判断方式:抓取数据包,观察拦截发生前,BurpSuite是否抓取到数据包,如果抓取到则为后端校验。未抓取到,则为客户端/前端检测。
- 如果是前端过来,绕过方式:
- 禁用JS
- 删除前端校验代码
- 上传图片马并抓包,将图片后缀修改为特定脚本后缀,如:.php。
- 如果是后端过滤,则可通过上传文件名为1.xyz的文件,判断是白名单顾虑还是黑名单过滤
- 黑名单过滤:尝试上传.htaccess、php、jsp、jspx、asp、asa、cer、phtml、大小写等方式绕过。
- 白名单过滤:00截断、中间件解析漏洞、上传图片吗并配合文件包含漏洞Getshell
-
-
10、任意文件上传漏洞中的条件竞争漏洞原理是什么?如何利用条件竞争上传Webshell?
-
条件竞争漏洞原理
- 网站再执行文件上传的校验是,允许用户所上传的文件会保存在服务端,并在保存后执行校验,如不符合特定后缀名或匹配鬼册,则删除文件。此时,攻击方如果能够上传一个脚本文件,并立刻访问,则可正常解析执行。
-
利用方式
- 基于上述代码编写规则,攻击方可构造上传大量的创建后门脚本文件,并编写脚本或使用BurpSuite等工具访问上传的文件,出发创建后门的代码。
-
-
11、文件上传中,使用了白名单过滤的方式,如何绕过?
- 上传图片马,结合文件包含漏洞绕过。
- 利用中间件解析漏洞,执行绕过。利用00阶段绕过。
- 如果代码中仅依据Content-Type执行白名单校验,则可通过抓包MIME类型绕过。
-
12、SSRF的漏洞产生原理是什么?如何挖掘SSRF漏洞?
-
SSRF漏洞产生原理
- 服务端存在发起网络请求的功能/函数,例如:file_get_contents()
- 服务端中发起网络请求的函数中,存在用户可控参数服务端
- 未对用户输入的参数(URL等)执行严格过滤
-
SSRF挖掘思路
-
黑盒
- 1.寻找类似于url、page、file、filename的参数
- 2.修改参数值为 本地IP:PORT 或 Dnslog服务器的URL
- 3.观察页面回显情况和Dnslog平台回显
-
白盒
- 利用Seay、Fortify_SCA等代码审计工具查找可发起网络请求的函数,例如:file_get_contents()、curl_exec()、fopen()
- 观察函数中是否存在用户控参数,且未经严格过滤
-
-
13、SSRF如何攻击内网Redis服务?
-
Gopher攻击内网Redis主机流程:
- 探针目标主机SSRF漏洞产生点
- 探针目标主机的开放端口与服务
- 探针目标内网存活主机与开放服务
- 如发现Redis服务(存在未授权访问),则利用计划任务反弹Shell
-
-
14、命令注入漏洞和代码注入漏洞的区别是什么?在代码层面如何防御?
-
命令注入漏洞:
- 存在命令执行函数,例如:system、exec、shell_exec
- 命令执行函数中存在用户可控参数
- 无服务端未执行严格过滤
-
代码注入漏洞:
- 存在代码执行函数,例如:eval、assert、preg_replace、create_function、ll user func、popen()、proc_popen()、passthru()
- 命令执行函数中存在用户可控参数
- 无服务端未执行严格过滤
-
区别:
- 命令注入是指攻击方构造并执行恶意的操作系统命令。
- 代码注入是指攻击方构造并执行恶意的后端脚本代码,例入:PHP代码、JSP代码。
-
-
15、如何检测反弹Shell?
- 主要检测方式是进程检测、流量检测。
-
进程检测
- 使用lsof检测,如果出现了 0 1 2 文件描述符的重定位,则存在反弹shell的风险。
-
流量检测
- 检测用户传输的数据包是否存在交互式命令执行特征。
-
- 主要检测方式是进程检测、流量检测。
-
16、PHP反序列化漏洞原理是什么?如何挖掘PHP反序列化漏洞?
-
反序列化漏洞原理
-
1.序列化流程:
- 序列化是将对象转换为字节流的过程,以便存储或传输。在序列化过程中,对象的状态被转换为字节流,并包含有关对象类型和结构的信息。
-
2.反序列化流程:
- 反序列化将字节流转换回对象,恢复之前的状态。在反序列化过程中,字节流被解析并创建相应的对象。
-
3.攻击利用:
- 攻击方构造恶意的序列化数据,并将其发送给目标应用程序。当应用程序尝试解析恶意的序列化数据时,由于缺乏足够的安全检查机制,可能导致执行恶意代码或触发非预期的操作。
-
4.恶意代码执行:
- 通过精心构造的恶意序列化数据,攻击方可以触发调用特定方法、加载特定类或执行任意代码等操作。这可能导致敏感信息泄露、远程命令执行、拒绝服务等安全问题。
-
-
挖掘思路
- 代码审计
- 对于特定框架或组件,例如,Thinkphp、Laravel、Yii,使用lday或nday漏洞测试。
-
-
17、PHP反序列化漏洞的修复方式有哪些?
-
修复方式:
-
1.验证和过滤输入:
- 在执行反序列化之前,对用户输入数据执行验证和过滤。
-
2.使用安全的序列化方法:
- 避免使用 PHP 的不安全序列化方法(例如,unserialize()),而是使用更安全的替代方法,如 JSON 或 XML 序列化/反序列化。
-
3.序列化和反序列化的白名单验证:
- 限制反序列化操作的类范围,可创建一个白名单,只允许指定的类执行反序列化,或者创建一个黑名单,禁止一些危险的类执行反序列化。以限制攻击方能够执行的恶意代码。
-
-
-
18、在业务逻辑漏洞中,如何挖掘水平越权和垂直越权漏洞?
- 水平越权(Horizontal Privilege Escalation),指权限等级相同的两个用户之间的越权访问。
- 垂直越权(Vertical Privilege Escalation),指权限不等的两个用户之间的越权操作,通常是低权限用户可直接访问到高权限用户信息。
-
挖掘思路:
- 注册两个账户
- 登录用户A后台,寻找修改口令、绑定手机号、编辑文章等功能,并利用Burpsuite抓包尝试将表示用户A的凭证字段修改为用户B的凭证字段值,实现改用户B的个人信息。
- 尝试将表示用户A的凭证字段修改为用户B的凭证字段值,实现篡改用户B的个人信息。
-
19、短信验证码爆破和短信轰炸的原理各自是什么?如何挖掘此类漏洞?
-
短信码验证爆破
- 验证码爆破:后端在执行短信验证码校验时,未对用户传入的验证码执行错误次数限制。
-
短信轰炸
- 短信轰炸:后端在执行,未限制短信发送的间隔时间。
-
测试方法:
- 在发送验证码时抓取数据包,并转发至repeater模块测试是否可发送多条短信。
-
-
20、在测试支付逻辑漏洞时,应该关注哪些测试点,如何挖掘支付逻辑漏洞?
-
支付逻辑测试项:
- 1.篡改支付金额
- 2.优惠券复用
- 3.篡改订单号
- 4.篡改商品数量
-
挖掘思路:
- 1.抓包修改各个参数
-
-
21、SQL注入漏洞的防御方式有哪些?
- 使用预编译机制,例如:PHP的PDO
- 编写关键字过滤函数,过滤单引号、双引号、union select等敏感字符串
- 部署WAF
-
22.WAF绕过的手法你知道哪些?
- 这里从以sql注入为例,从三个层面简单总结一下手法。
- 1.从架构层面:找到服务器真实IP,同网段绕过,http和https同时开放服务绕
- 过,边缘资产漏洞利用绕过。
- 2.从协议层面:分块延时传输,利用pipline绕过,利用协议未覆盖绕过,POST
- 及GET提交绕过。
- 3.从规则层面:编码绕过,等价符号替换绕过,普通注释和内敛注释,缓冲区溢
- 出,mysql黑魔法,白名单及静态资源绕过,文件格式绕过,参数污染。
-
23.PDR模型是?
- 保护-检测-响应
最后,祝大家面试顺利!