他:今天youporn加入了bug赏金计划 我:在hacker one? 他:是的 我:没时间,我正在迁移我的DNS服务器
当我正在阅读关于绑定的文档时,他回复了我:
他: oh shit,不敢相信,搜索栏中存在可利用的XSS
事情开始变得有趣起来,使我不得不停下手中的工作。我很惊讶,这个问题之前竟然没有人能发现它。搜做表单中的XSS是最基本的情况之一,我和我的朋友都经常逛YouPorn,但从来没有发现过这个问题。
时间对我们来说是非常宝贵的,我们必须要在其他人之前利用并报告该漏洞。
我启动了浏览器和Burp,并在搜索表单上发送了一个请求。我搜索了foobar”。正如你在下面的截图中看到的那样,搜索词是在meta标签中,以没有任何过滤(大写字母除外)的形式输出的:
但当我们尝试写入关闭标签,并添加了Javascript payload,我们发现我们的payload并未被执行:
虽然如此,但我们仍然决定利用meta HTML标签。这是一个非常强大的标签,因为它包含有http-equiv指令。该指令相当于http的文件头作用。
http-equiv指令将值设为refresh,可用于将用户重定向到其他页面。如果发生网络钓鱼攻击,这种开放重定向漏洞是非常有用的:
您向有人发送链接到http://youporn.com的链接, 您的有效载荷将它们重定向到您控制的网站,模仿YouPorn的CSS; 你问他们的凭据,他们的信用卡号码等。
我们输入了以下payload来进行漏洞测试:
正如你所看到的,这里有一个小问题:http-equiv中的破折号,并未被插入到源代码中。我决定使用双重编码尝试绕过。首先我对破折号做了HTML编码,然后又对其进行了URL编码。
破折号, - ,HTML编码后为- ,URL编码后为%26%2345%3b:
bingo!现在我们已经成功获取到了一个可以重定向用户URL的有效载荷。
与此同时,我那发现并第一时间通知YouPorn的同时,收到了来自YouPorn的以下答复:
实际上你报告的这个漏洞,在你之前已被人提交过。但那位提交者并未能提供有效的利用证明,因此我当前只能将其标记为重复。但机会的大门会向你们敞开,如果你们能提供有效载荷,我们将很乐意接收并为你们提供相应的奖励! 感谢你们!
现在我们手中已经有了一个,可以重定向用户URL的有效载荷。
我的脑海中突然灵光一现,那么我们是否可以使用相同的技巧将破折号替换为>和<呢?
事实上这是可行的,使用“HTML-encode-then-URL-encode”技巧,我们可以插入任意的Javascript:
成功弹框:
之后我们继续做了一些测试,我们发现了YouPorn HTML渲染的一些奇怪的地方:无论我们在有效载荷上做了多少次HTML编码递归,服务器端仍然会完全的解码。这意味着:
最后,我们将有效载荷发送给了YouPorn,并最终获取到了YouPorn发放的250美金的奖励!
总之这个过程非常的有趣,哦!我突然想起来我手头的工作,好了回归原点继续迁移我的DNS服务器!
*参考来源:allyourbase,FB小编 secist 编译,转载请注明来自FreeBuf.COM