安全街
一步步,我们的信息安全时代

漏洞分两种:编码上的漏洞和逻辑漏洞。不管是SQL注入XSS这种流行漏洞,还是心脏滴血Java反序列化RCE,统统都属于编码上的漏洞。随着信息安全的日益发展,框架的成熟,越来越深刻的重视,可利用的编码漏洞会越来越少。这种漏洞可以使用扫描器批量检测,是白帽子们的最爱。
逻辑漏洞是业务上的,如密码重置覆盖注册短信轰炸刷单等,这类漏洞只有当针对性检测时才能被发现,是工具无法扫描到的。一般来说,只有大的厂商才会有被白帽子检测的机会,不值钱的小厂商实在难以让他们亲力亲为。

任意用户密码重置漏洞

某次渗透任务中,我久攻一个商城无结果,于是找到了它的总公司官网,准备从侧面下手。在官网的商城中,我发现了一个密码重置漏洞。
在整个挖洞全靠分析与burpsuite抓包。找回密码的流程共分4步,对应的四个页面为:

  • www.target.com/findPWD.html?tmpAction=1
  • www.target.com/findPWD.html?tmpAction=2
  • www.target.com/findPWD.html?tmpAction=3
  • www.target.com/findPWD.html?tmpAction=4

可以看到,页面的跳转全靠tmpAction的值。在测试过程中,有一个包引起了我的关注。
这是在找回密码过程中,当我输入了正确的手机验证码,点击确定后发出的包与Response。可以看到页面返回了一句js代码location.href='/findPWD.html?tmpAction=3'。正是这句代码让我目光一亮,在后台完成验证后,他企图直接跳到第三个页面引导用户输入新密码。我怀疑这里面可能存在逻辑漏洞,我试图在最开始就跳到tmpAction=3这步,然而事实证明这并不行。
经过一系列测试后,我最终发现了漏洞。下面是复现过程:
首先进入找回密码页面http://www.target.com/findPWD.html,输入绑定了我们手机的账户名和验证码

提交,选择手机验证。这里邮件验证并没有收到对应的验证码,所以只好使用手机验证了。

得到手机验证码为949572,但我们不输入正确手机验证码,输入一个错误的123456,目的是在获取包的同时留在第二步验证身份页面。用burpsuite抓包,转到repeater,放掉抓到的包。页面会提示我们请输入正确的手机验证码,这时我们在repeater内将123456更改为正确的949572

提交,返回包中出现location.href='/findPWD.html?tmpAction=3',说明后台验证成功。 一直后退到第一个页面,填入随便一个已知的用户名(在此页面可以试出用户名是否存在)。

接下来到验证身份页面,无需操作

直接在地址栏将tmpAction的值改为3,直接跳转到了输入新密码页面

随便输个123456好了,提交,新密码重置成功

登录jack,密码123456,成功。由于密码重置漏洞会影响到被重置的用户,为了避免有较大的影响,终止了更多的测试。

PeopleSoft XXE to RCE

逻辑漏洞虽然也是影响不小的漏洞,但毕竟无法Getshell。我日常爆破这个站的子域名,在hr域名下发现了PeolpeSoft 8的登陆页,立刻想起了之前在Freebuf看到过的PeopleSoft XXE to RCE漏洞。
原文章地址:http://www.freebuf.com/vuls/135318.html
由于我对XXE并不是很熟,就直接拿了exp来用,发现这个exp还有点小问题。
经过一番修改之后,我成功得到了一个jsp一句话shell,权限为Administrator

结语

逻辑漏洞的发现其实是靠积累和耐心的。积累会告诉你怎么去尝试,而足够的耐心则会支撑你持续尝试下去,也许有很多的时间,你的尝试都是无用的,目标站并不存在那样的漏洞,但是一旦成功,那种酣畅淋漓挖到宝的感觉会令你觉得一切都值了。多学习前人的套路,多开阔猥琐的思路,并且要学习开发,才能对逻辑漏洞有所建树。
我们不应该总是去拿着0day的利用工具到处乱碰,虽然我最后的Getshell也是通过一个较新的漏洞利用,但显然,如果吊死在工具上,我们就会成为工具的奴隶,而不是工具成为我们的助力。

*本文为原创,作者T1dDl3R,首发于本博客。转载请注明

这篇文章还没有人发言,快抢第一!

发表评论