Burp Suite实战:文件上传漏洞双写绕过技巧详解(附完整Payload)
Burp Suite实战文件上传漏洞双写绕过技巧详解附完整Payload在Web安全测试中文件上传功能往往是攻击者最青睐的攻击入口之一。许多开发者会通过黑名单过滤、后缀名检查等方式来防御恶意文件上传但这些防护措施往往存在可被绕过的漏洞。本文将深入探讨如何利用Burp Suite这一专业工具通过双写绕过技术突破文件上传限制并提供可直接用于实战的Payload构造方法。1. 文件上传漏洞基础与防护机制文件上传漏洞的本质在于服务器对用户上传的文件缺乏足够严格的验证。常见的防护机制包括后缀名黑名单禁止上传.php、.jsp等可执行文件MIME类型检查验证Content-Type是否符合预期文件内容检测通过文件头或魔术字节判断文件类型重命名策略自动修改上传后的文件名这些防护看似严密实则存在多种绕过方式。以黑名单过滤为例开发者可能使用简单的字符串替换$filename str_replace(php, , $_FILES[file][name]);这种过滤方式正是双写绕过技术能够发挥作用的关键所在。2. 双写绕过技术原理双写绕过(WAF Bypass via Double Writing)的核心思想是当防护系统对特定关键词进行删除或替换时通过构造关键词中的关键词来使过滤后的结果仍保留原始关键词。假设过滤规则是将select替换为空字符串那么原始Payloadselect * from users过滤后* from users双写Payloadselselectect * from users过滤后select * from users这种技术在文件上传中同样适用。例如当系统过滤php时上传文件名过滤后结果test.phptest.test.phphptest.php注意双写绕过成功的前提是过滤函数仅执行一次替换操作。如果系统采用循环替换或正则全局替换此方法可能失效。3. Burp Suite实战双写绕过3.1 环境准备与初步测试首先配置Burp Suite拦截文件上传请求启动Burp Suite确保代理设置正确浏览器配置为使用Burp代理访问目标网站的上传功能页面上传一个正常文件(如test.jpg)观察请求结构典型的文件上传请求示例如下POST /upload.php HTTP/1.1 Host: target.com Content-Type: multipart/form-data; boundary----WebKitFormBoundaryABC123 ------WebKitFormBoundaryABC123 Content-Disposition: form-data; namefile; filenametest.jpg Content-Type: image/jpeg [文件二进制数据] ------WebKitFormBoundaryABC123--3.2 构造双写Payload假设目标系统过滤了php后缀我们可以尝试以下步骤在Burp Repeater中修改filename参数filenametest.phphp发送请求并观察响应如果返回路径显示为test.php则双写绕过成功对于更复杂的过滤规则可能需要尝试多种变体p.phphp→ 可能过滤为p.phppphphp→ 可能过滤为phpphphpphp→ 可能过滤为phphp3.3 结合十六进制编码的高级绕过当简单的双写被防御时可以尝试结合十六进制编码将.php转换为十六进制2e706870构造双写Payloadfilenametest.p2e702e706870hp如果系统同时过滤十六进制表示可尝试混合编码filenametest.p%32e%37%30%37%30hp4. 完整Payload库与实战技巧以下是一些经过验证的有效Payload可直接用于测试4.1 常见后缀双写Payload目标后缀双写Payload预期过滤结果.php.phphp.php.jsp.jjspsp.jsp.asp.aaspsp.asp.exe.eexexe.exe4.2 特殊字符组合Payloadfilenametest.php filenametest.pscripthp/script filenametest.p\x00hp filenametest.p./hp4.3 大小写变异Payloadfilenametest.PhP filenametest.pHp filenametest.PpHp提示实际测试中建议将这些Payload保存为Burp Suite的Intruder攻击字典进行批量测试。5. 防御措施与检测方法作为开发者应当采取以下措施防止双写绕过白名单验证只允许特定的文件扩展名$allowed [jpg, png, gif]; $ext strtolower(pathinfo($filename, PATHINFO_EXTENSION)); if (!in_array($ext, $allowed)) { die(Invalid file type); }文件内容验证检查文件头是否符合扩展名随机重命名上传后为文件生成随机名称存储隔离将上传文件存储在非Web可访问目录作为安全测试人员可以通过以下方式检测双写漏洞使用Burp Scanner自动检测手动测试各种双写变体检查服务器错误日志观察过滤行为在一次实际渗透测试中我发现某系统虽然过滤了../路径遍历但使用..././仍能成功绕过。这种变异思维同样适用于双写绕过场景——当标准双写失效时尝试在双写中插入其他无害字符往往会有意外收获。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2447183.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!