logical-vulnerability

 · 2020-5-24 · 次阅读


前言:一直想找有真实逻辑漏洞的靶场,一直没有机会。挖SRC的话费了很多时间也没有收获,通过一些途径发现了墨者学院并开始了刷题之路。
但是很遗憾这不是一个免费的平台,因而白嫖怪表示能做几道就做几道(当然手机号码用完全部注册一遍,然后享受12墨币的快乐)。

1.登录密码重置漏洞分析溯源

进入靶场后有如下提示:

也就是需要重置一个我们不知道密码的账号的密码,这看似有点困难,点进链接试试。
发现:

这里我们有一个自己的号码了,也就是说逻辑上我们可以改自己的手机号的密码。
试试能不能在改自己手机密码的同时抓个包然后把手机号码修改成题目让我们改的手机号码。

然后发现我们的手机号码验证码等的信息都在post形式框框中明文传输,我们直接把mobile改成犯罪分子的手机号码,然后发包:

很明显失败了。
json部分是短信验证码错误,我们回到页面上面,极有可能是抓包出了问题。重新来一次。
这次不抓包,先输入了自己的手机号码,填写了密码和验证码后,在点击重置密码之前
将手机号迅速改为犯罪分子手机号,然后单击重置,如下图所示成功拿到key.

summary:出现这种问题主要是设计缺陷,程序员觉得用户重置密码会按照顺序先输入手机号码,在输入重置密码,短信验证码。。。。
但攻击者恰好利用这点,在最后一步重置密码的按钮前修改第一步输入的手机号码,导致成功绕过手机短信验证码,修改到他人的密码。
很典型的一个逻辑漏洞,也属于越权漏洞。

2.身份认证失效漏洞

进入页面后是下面这样的:

其实复现漏洞简单的一点是告诉我们了这是个什么漏洞,这就有个心理暗示并引导,所以很好复现。然而真实挖掘SRC需要考虑所有的方面并不断尝试,然后从中寻得一洞,所以拓展自己的知识面是很重要的,看到的点就多了,可以尝试的点就多了,挖到漏洞的概率就提高了。

又是一堆废话,直接看要求:
请获取钻石代理”马春生”的个人信息!已知系统测试账户(test/test)。

也就是说我们现在已经有一个系统测试账户了,需要获取比我们权限高的个人信息。我们先进入test账户看一下。
太真实了,这简陋的界面,不亏是靶场:

在浏览页面源代码时候发现一个泄露的文件:

仔细观察会发现id还在上面,这里由于是逻辑就不考虑sql,修改其大小看能否访问到其他用户。
发现其他人的用户名和密码也泄露了,然而这样手工查找太慢了,写个python脚本遍历一下然后找到admin的用户和密码(极有可能是钻石代理)
编写脚本的时候注意加上cookie身份,不然,会跳转到登录页面导致抓取到的是登录页面。

import requests
#先初始化id和url
id = 20128880322
url = "http://219.153.49.228:48791/json.php?card_id=%d"%id
headers = {'Cookie': 'PHPSESSID=m4kpnoeqlup8r1osb9srq0fvo6; uid=test; mid=6927071f788211ee17211be0b89ef1e6'}

def find_bigger():
    for id in range (20128880322,20128880332):
        url = "http://219.153.49.228:48791/json.php?card_id=%d"%id
        html = requests.get(url,headers=headers)
        print(html.text)
def find_smaller():
    for id in range (20128880312,20128880322):
        print(id)
        new_url = "http://219.153.49.228:48791/json.php?card_id=%d"%id
        req2 = requests.get(new_url,headers=headers)
        print(req2.text)
find_bigger()
find_smaller()

一开始我想的是获取一个用户名是admin的然后应该是钻石代理,但我忽略了登录界面的源代码中也泄露了信息:

从中可以知道钻石代理的ID是后两位16直接访问就拿到用户名和密码了,密码是md5加密的,去somd5解密一下登录就拿到了key.
原则上不应该这么容易的,后续python可以对接somd5,提取出password字段进行解密后提取出来,再去登录页面登陆进去判断是否是钻石代理,即可完成整个自动化的搜索过程。

summary:对于这种身份认证失效漏洞,我不太理解失效的点在哪,我觉得应该叫信息泄露漏洞,一些重要的信息存放到前段页面中并且是明文传输,这是最大的错误点。