前提
之前学习了sql注入、xss、RCE,了解了逻辑漏洞等基础知识,也看了一些文章,复现了一些漏洞自己尝试。所以今天,准备试试zzcms8.1版本的逻辑漏洞
好的,进入正题。
环境介绍
在虚拟机中搭建了一个zzcms8.1,之前原本想用DC_1来测试来,但尝试了一下用户注册,发现必须要管理员同意才算注册成功,就想着先找个简单的下手,这里先留个坑,之后再去填吧。
渗透测试
挖掘一个站时,大概思路就是:
确定业务流程—>寻找流程中可以被操控的环节—>分析可被操控环节中可能产生的逻辑问题—>尝试修改参数触发逻辑问题
拿到一个站后,第一步可以看看,但真正的第一步,是注册,就业务逻辑漏洞来说,我个人的理解,就是因为逻辑程序不严谨或逻辑太过复杂,才导致了一些逻辑分支不能正常处理
逻辑分布主要分布在用户身份、业务一致性、用户信息方面。今天就尝试一下用户身份,关于注册和密码找回
恶意用户批量注册
先随意注册一个
成功登录
既然摸清了注册套路,直接抓包
然后直接将username更改为其他名字,进行提交尝试
提交
然后尝试用test4登录,成功
那反正意思就是,图形验证码是无效的,并且未对电话,联系人,邮箱等信息校验嘛,那就ok啊,用burp字典跑,批量注册跑不掉的。
批量用户名猜解
再注册了test以后,又接着尝试再注册一个test,发现它有用户名已存在的提示
这样的话,先用burp抓包看看它返回的数据有些什么吧
这是抓取的包,明显看到它有一个检验,然后后边id接的就是我们想要注册的用户名
看看返回的包
直接上burp跑字典,这里提前注册了test1、test2、test3、test4等用户,所以我只添加了一部分字符串进行猜解尝试
很ok的,都猜解出来了。
密码找回
既然注册的地方存在逻辑漏洞,未对图形验证码做任何防护。那大胆猜测一下,找回密码处也存在漏洞
好的,抓包
这是找回密码的界面,很简单,就一个图形验证,但刚刚已经发现,注册的地方图形验证好像也没什么用,那估计这里也一样。
继续下一步
发现需要验证码,但是邮箱地址是假的啊,上哪找去,emmm,在经过了一般思考后,我决定先把每一步用burp抓包看一下,然后发现它返回的包是这样的
这是一个JavaScript代码
题外话:刚刚检测用户是否存在也是这个提示,或许待会可以试试用户注册重置
先把这里完成吧
这里,我在大佬们的博客里面学到了,可以在***控制台***进行改变
window.document.userreg.yzm_mobile2.value=‘yes’;
啊,完全没想到这个,感觉之前自己学的都白进脑子了,不开心
成功修改
哎,这个也算邮箱验证码绕过吧,行吧,大概就是这样。
之前我是想用burp抓包然后修改"window.document.userreg.yzm_mobile2.value=‘yes’;"值,但是不知道为什么,我不能抓取返回包,可能是我太弱了,还不知道怎么获得
用户注册重置
好的,接下来回到刚刚那个题外话,也就是用户注册重置。
输入已注册的用户名,可以清楚看到下边的响应值有一样的参数。同样用控制台尝试修改。
虽然还是在报错,但尝试提交然后,发现是可以的。
然后,尝试登录
成功,密码是我重新注册的密码