1、突破登陆层
先来看下后台登陆界面:
遗憾的是,不存在任何注入
于是找突破口,看到“忘记密码”功能
于是点进去,一步一步来,输入admin
找回密码需要的不是邮箱,是手机,又是发验证码,下一步
确认发送后并没有数据包,根据console发现是.send()方法,所以当然截获不到数据包
那么线索到这里就断了,不能更换手机不能截获验证码
于是抓取页面所有js文件来看看有没有其他新的线索
通过排除发现这么一个JS函数:
脑海中闪电划过,我惊呆了
这里的验证是通过true和false来是否继续下一个页面
所以我们修改返回的数据包为true或者1都可以突破验证码页面来到更改密码页面
但是!!这并不是最优化方案!
来看最后一段:
直接构造post数据包,填好用户名、密码、再次确认密码然后直接发送就可以更改任意用户的密码。
地址提交到这里:/admin/user/login/confirm_password
3个参数:user_id、password、password_confirm
这里我将admin账户密码修改成为了wooyunorg
返回的数据包,成功,我们来登陆试试
登陆成功,下面开启第二层验证!
2、突破第二层手机验证:
登陆后又提示验证码输入,有了上一次的经验,继续爬行js,从js找出漏洞
然后看到这一段代码
问题出在这里:
window.setTimeout(2000, window.location.href = data.redirect)
这里设置了response,可以来跳转
那么构造以下response试试
但是结果并不尽人如意,跳转从admin转回了login,看来修改返回包还不能一步突破
继续看代码:
发现以下2处
这里设置了一个状态undefined,json提交数据
那么伪造cookie是可以突破验证的
由于比较费时间,还要fuzzing正则,不深入这条路
那么就来最简单的,爆破验证码突破吧
4位数验证码,设置payload 1000-9999
爆破出这次验证码是1068,然后登陆确认
成功突破前台,来到了后台
有了后台,1元购买终于成了可能
旗下所有微店、订单、数据全部泄露,包括新闻发布