前言:
在最近的wxb举行hw中,同事让我帮他看看一些后台登录站点。尝试了未授权,弱口令皆无果,要么不存在弱口令,要么有验证码,没办法绕过。本文章仅提供一个思路,在hw中更多时候并不推荐尝试这种思路,只能作为一种解,因为花费的时间较长,前后大概花费了一个小时才拿下一个后台账号。
过程及思路:
在外围打点的过程中发现了一个站点,存在用户名枚举:
{width="3.425in" height="3.7395833333333335in"}
然后看到下面的验证码,估计很多都会放弃了吧!短信验证码+密码才能登录,爆破难度太大了。我一开始也是这么想的,后面尝试了下面的找回密码,看看是否能任意修改他人的账号密码。
{width="2.93125in" height="3.821527777777778in"}
后续先用自己不常用的手机号获取下验证码(这一步其实在hw中是很危险的,很容易被溯源)。发现短信验证码为四位数,而且失效时间大约在3分钟左右。查看这边重置密码的条件也就是短信验证码。这时候还记得我们前面发现的用户名枚举吗?我的思路是结合这两个漏洞,实现重置他人密码。
那么问题来了,我怎么知道用户的手机号码呢?或者说,手机号码那么多我要怎么找呢?这个是一个地级市的服务平台,那么他的用户理论上会存在大部分的该地级市的手机号码。每个地区的号码都是由前七位控制的,那么就可以查询一个地区的所有前七位号码,在加上遍历后面4位号码即可获得一个地区的手机号字典。这边给大家推荐一个工具,可以用来爬取一个地级市所有的手机号码。使用后会在本地生成字典号码。
https://github.com/SouthernYard/GetNumber
{width="5.761805555555555in" height="5.227777777777778in"}
然后把这些号码用burp去爆破,就可以获取到数据库里面存在的账号了。
{width="5.7652777777777775in" height="4.115972222222222in"}
通过爆破,我们获取到了后台账号,再结合前面的4位数验证码,去尝试爆破。
抓取重置密码的请求包,密码我们提前写好了:
{width="5.761111111111111in" height="3.7180555555555554in"}
再用intruder去爆破短信验证码:
{width="5.7652777777777775in" height="4.279166666666667in"}
皇天不负有心人,尝试了几次,终于成功了。当我高高兴兴拿着密码去登录时,发现还要验证码,这时候再重复一下前面的操作就行了。
{width="5.7652777777777775in" height="3.736111111111111in"}
然后就是把整个响应包的内容复制下来,再去点击下登录,然后替换掉登录报错的信息即可成功进入后台。
{width="5.759722222222222in" height="2.70625in"}
里面富含大量敏感信息,虽然没啥用。
{width="5.7555555555555555in" height="2.7555555555555555in"}
然后在功能列表里面找到一个上传图片的地方,并未做过滤,成功上传木马:
{width="5.761111111111111in" height="2.9458333333333333in"}
但是没啥用,解析不了QAQ。本次只是给大家介绍一下思路,方法是可行的。其实我也不想用这种方法,但是更多的是想验证自己的猜想,才最终去实践证明。
征集原创技术文章中,欢迎投递
投稿邮箱:edu@antvsion.com
文章类型:黑客极客技术、信息安全、热点安全研究分析等安全相关
通过审核并发布能收获200-800不等的稿酬
更多详情介绍,点我查看
靶场实操,戳“阅读原文“