在本文中,我将讨论我用来攻击反射型跨站脚本 (RXSS) 的技术。这是我之前遇到的全新体验,也让我学到了很多。让我们开始吧。
在我们的目标 target.com 中,有一个“联系我们”表单,其中包含一个上传文件选项,用于提交问题的屏幕截图。像往常一样,我通过输入“mchkltxss”之类的随机字符串来检查反射,结果发现它确实存在反射。我尝试注入 XSS 有效载荷,但由于 HTML 编码问题,它们失败了。
为了更好地查看请求,我切换到了 Burp Suite。我上传的文件名被放入了 filename 变量中。我尝试通过输入随机文本来修改这个变量,看看是否有任何反射,但最初没有任何结果。然后,我尝试输入一个随机扩展名,例如“helloworld.fakeext”。这反映了一条包含以下内容的错误消息:
提供的文件扩展名“helloworld.fakeext”与预期的媒体类型不匹配。
所以,我们有反思。
我尝试了 HTML 注入,成功了。然而,当我尝试 alert(document.domain) 时,它却失败了,因为该函数检测到 .domain 是一个扩展名。不过 JavaScript 很强大,它提供了一些不需要点的函数。我使用了 alert(document['domain']),成功了。但到目前为止,它只是 self-XSS,因为文件上传使用了带有 multipart/form-data 编码的 POST 请求。
我尝试了 Burp Suite CSRF PoC,包括多部分 PoC,它们都成功了,但文件上传部分却不行。所以,是时候开始写代码了。我编写了自定义代码来处理通过 POST 请求上传文件的操作,经过一些调整后,它终于成功了。
关于他的文章向我展示了做事的方法。
这段 js 代码动态地向表单添加隐藏输入,将 base64 编码的数据转换为文件,并将该文件附加到表单。之后,表单会自动提交。现在,我有一个完全可利用的 rXSS 漏洞。
要阅读利用代码,请检查csrf-file-upload-poc
它在两项资产中有效且不重复
总而言之,这次经历强调了彻底测试所有输入字段以及探索各种技术来检查反射、rXSS 或 HTML 注入的重要性。它强调了尝试不同方法和工具的价值。保持警惕,持续学习。
原文始发于微信公众号(红云谈安全):通过文件名 + CSRF 在联系我们的“multipart/data”表单上发起 Self-XSS
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论