又一个登陆框引起的血案

栏目: 编程工具 · 发布时间: 7年前

*本文作者:丶楼兰,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

继上次登陆框引起的血案这个文章之后,时隔一个月笔者又写了续集,呃……升华版。

0×00 文章内容结构图

又一个登陆框引起的血案

0×01 信息泄露

利用泄露的信息可以大大增加我们的可测试点,从而增加我们的成功率。

1. HTML源代码

必看的肯定要属HTML源代码了,源代码里包含了下面所说的JS文件。HTML源代码会泄露很多信息,像 程序员 未删除的注释、敏感路径等都可能在HTML源代码中找的到,从来增加发现漏洞的成功率。

2. JS文件

很多JS文件中会泄露其他路径,或者敏感函数等。泄露其他路径可以增加我们可以测试的点,泄露一些敏感函数可以实现未授权访问等恶意操作。

3. 其他敏感文件

还可以利用其他途径获得到的文件,如爆破、爬虫等其他方式得到的敏感文件,可能会发现日志文件、配置文件、网站的其他业务页面等。

0×02 点我链接登陆你的账号

这个问题多出现在第三方登陆功能中

1. 主站账号登陆
2. 微信登陆
3. QQ登陆
4. 微博登陆
5. ….

1. 一个二维码引领风骚

呃,小石师傅是真男神,把我带进了米斯特,从此不知归路..……

子业务选择使用主站账号扫码登陆时:

又一个登陆框引起的血案

将二维转换为HTTP请求( https://cli.im/deqr/)

可以发现只有一个TOKEN参数:

又一个登陆框引起的血案

使用主站APP 扫码进行登录扫描之后,会弹出确认登录框以确认登录。在点击“登录”按钮的之后,发送如下POST数据包来进行登陆:

POST https://xxx.com/xxxx/confirm HTTP/1.1

….

token=xxxxx&source=passport&fingerprint=一大长串字符

删除finderprint参数,发现对请求无影响=>删除

删除referer参数,发现对请求无影响=>可以CSRF

将请求方法改为GET型,发现失败=>只能构造表单进行CSRF

此时受害者只要是主站登陆状态下,发送了我们构造好的这个表单,那么我这里就可以直接登陆他的账号。

2. 二维码又起风波

使用账号所绑定的微信登陆:

又一个登陆框引起的血案

扫描之后发现不需要点击确认就登录了,和常规的微信二维码扫描登录完全不一样,这时候才发现原来这里是使用的微信公众号绑定的账户去登录的,解析的二维码地址为:

又一个登陆框引起的血案

条件:

受害者微信公众号绑定了账号;

受害者微信内点击我们的链接,我这里就这可以直接登陆了

0×03 劫持用户身份凭证

1. XSS劫持

子站使用主站账号登陆时,来来回回N个数据包,经过我仔细观察,得出重要结论:

如果主站是登陆状态,那么访问如下链接,主站便会返回身份凭证

经过测试发现:这个client_id参数必须存在,但是没有什么影响,不会影响整个攻击。

又一个登陆框引起的血案

然后,我们便可以使用返回的这个链接来登陆受害者这个子站。为了获得响应包里面Locatin的值,我们可以使用该域下面的XSS来获得。

2. JSON劫持

当然,如果发现此处返回的用户凭证如下格式,那么当然首先考虑到的便是json劫持了。

又一个登陆框引起的血案

关于json劫持,大家可以移步key师傅博客

http://gh0st.cn/archives/2018-03-22/1

0×04 XSS

1.登陆时XSS

又一个登陆框引起的血案

POST类型,尝试修改改为GET类型:

又一个登陆框引起的血案

发现成功弹窗,呃,即使不能修改成功,那么还可以组合CSRF一起使用。

2. 登陆成功时XSS

又一个登陆框引起的血案

所有参数测试一遍,发现link参数,存在xss,直接在script标签里面,并且还送URL跳转一个。

又一个登陆框引起的血案

3. 登陆失败时XSS

又一个登陆框引起的血案

逐个参数进行测试后,最后发现gourl参数存在xss,过滤了script关键字,使用tab键进行绕过。

又一个登陆框引起的血案

4. 利用泄露的文件进行XSS

通过源代码发现了一个隐藏的链接:

又一个登陆框引起的血案

打开之后发现提示缺少sid参数,此时手动构造:

又一个登陆框引起的血案

点击确定之后,跳过去的是一个荒废的页面,此时我回过头来看了一下源代码,尝试手动添加action、method参数:

又一个登陆框引起的血案

发现了method参数有效,此时构造xss payload,成功弹窗(= = 没想到method参数也可以)。

又一个登陆框引起的血案

5. 接口JSON XSS

发现请求链接是: http://xxxx/swap/im?callback=jQuery18900926711223842687

而响应包内容是:

jQuery18900926711223842687({"errorCode":1,"errorMessage":xxxxxxx})

灵光一闪:可以测试JSON劫持嘛。但是由于响应包的内容并没有啥作用,所以此处的JSON劫持完全没有危害,但是这里却还可以测试XSS漏洞。

又一个登陆框引起的血案

构造如下链接,成功弹窗:

http://xxxx/swap/im?callback=<script>alert(1)</script>

又一个登陆框引起的血案

0×05 URL跳转

用户登陆这个功能这里,可以测试的点可以但不仅仅并且不一定是如下几个:

1.登陆成功后跳转到的页面

此处link1参数可以控制跳转到的页面:

又一个登陆框引起的血案

又一个登陆框引起的血案

2.登陆失败后跳转到的页面

此处的gourl参数可以控制返回的页面:

又一个登陆框引起的血案

可以看到设置了自动跳转,(呃……我们让他跳转到 mstsec )。

又一个登陆框引起的血案

又一个登陆框引起的血案

0×06 未授权访问

1. JS文件背后的秘密

在查看源代码时发现引入了该JS文件,跟踪……

又一个登陆框引起的血案

发现了两处接口,逐个跟踪。

又一个登陆框引起的血案

发现下面那个接口直接未授权访问… 泄露了该站,所有的用户名,此时便可以进行有针对性撞库了。

又一个登陆框引起的血案

2.看JS如何不见泰山

通过JS来验证权限时,还可以通过删除JS来实现未授权访问,例如登陆失败时通过JS来实现跳回主页面。简言之便是绕过客户端校验类型,so easy~

0×07 不安全的对象直接引用 | 设计缺陷

1. JS文件GETSHELL

通过读取JS代码时发现这么一段,竟然可以文件上传。

又一个登陆框引起的血案

构造如下表单:

又一个登陆框引起的血案

成功GETSHELL:

又一个登陆框引起的血案

2. 任意用户登陆之绕过客户端校验

又一个登陆框引起的血案

登陆成功后相应包里返回一条链接 http://xxx.com/user/login.php?id=MTAw 。发现是用户ID的base64编码,此时遍历用户ID,实现任意用户登陆。

又一个登陆框引起的血案

3. 最风骚之参数的FUZZ

1)任意后台地址,手动添加参数admin=1之后,发现返回了cookie,成功登陆
2)普通用户时,手动添加debug=1之后,发现权限竟然多了一些。。

呃。。关于参数的fuzz,增删改都可以进行尝试

0×08 感言

笔者现在是米斯特安全团队的成员(外围 .. 并且实习),想对大家说的是:欢迎各位大佬加入我们的团队,一起进行孜孜不倦的学习

呃 … 猝死的那种 ==

最后真心感谢米斯特安全团队各位师傅的指导,他们的思路是真的骚 = =

万分感谢米斯特的各位师傅,协助我完成了这篇文章,包括但不限于:

key师傅,动不动就秋名山走一圈的男人!

小石师傅,我男神!带我走进了米斯特的男人,自此一去不复返 = =

狗哥师傅,dogboy,呃… 总感觉怪怪的,还是喊狗师傅吧。此时狗哥抿了抿嘴,满意的笑了 = =

Taskshi师傅,米斯特新秀,裤兜装满0day的男人!

*本文作者:丶楼兰,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First jQuery

Head First jQuery

Ryan Benedetti , Ronan Cranley / O'Reilly Media / 2011-9 / USD 39.99

Want to add more interactivity and polish to your websites? Discover how jQuery can help you build complex scripting functionality in just a few lines of code. With Head First jQuery, you'll quickly g......一起来看看 《Head First jQuery》 这本书的介绍吧!

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具