首页 代码审计

漏洞信息

审计版本:zzcms 201910

通过/one/getpassword.php重置任意用户密码
更多详情见CNVD-2021-34731

用于xio习 比较简单

分析

直接跟进/one/getpassword.php

上面的包含就不看了,看下$action是POST获取的就行了,下面直接看上图红框内的内容,这部分主要是获取html页面,用于后面返回页面
46684-xsl6j0p562j.png

下图第一部分的strbetween()函数用于取两个标签之间的内容,第二部分的最终效果就是在未提交action参数值的时候返回{step1}与{/step1}直接的内容
20722-yxcos738pr.png
/template/red13/getpassword.htm下图选中部分的内容
02686-l4hmg6by3q.png

上面能理解明白的话,那这个密码重置基本就十拿九稳了
修改密码的流程大致是:

  1. 提交POST的参数action=step1 --> 返回{step2}{/step2}之间的页面(即安全验证,提交验证码的页面)
  2. 提交POST的参数action=step2 --> 返回{step3}{/step3}之间的页面(即设置新密码,提交修改密码请求的页面)
  3. 提交POST的参数action=step3 --> 返回{step4}{/step4}之间的页面(即修改密码成功的页面)

页面请求的参数action对应关系是:

  1. {step1}{/step1}之间的页面用于提交参数action=step1
  2. {step2}{/step2}之间的页面用于提交参数action=step2
  3. {step3}{/step3}之间的页面用于提交参数action=step3

要实现修改密码成功就需要提进入到{step3}{/step3}之间的页面内容,然后提交参数action=step3,实现密码修改

所以直接从$action==step3开始跟进,此处仅判断了$action,及$_SESSION['username']
85841-xi9fl2qnzs.png
$action是可控的,所以向上查找$_SESSION['username']在哪儿赋值。
找到在进入$action=="step1"后会进行一次赋值,其余的验证码验证等都在其后面进行判断,且写入session且后续未进行重置
06492-b3cbgpk63qc.png
那么大体流程清楚了,下面就是看如何进入{step3}{/step3}的页面了
跟进到$action=="step2",看到进入条件只判断@$_POST['yzm_mobile']==@$_SESSION['yzm_mobile']
66691-27qn5tsh2qx.png
上图deyzm_mobile在前一步页面通过向/ajax/send_yzm_ajax.php发起请求获取,但是如果不进行获取直接提交的话,那他就是空"",yzm_mobile参数提交为空时为null,弱类型判断那么两者相等,可进入此步骤
这里可调试查看下两个的值,burp发包修改验证码为空:

64282-ti5cypod4op.png

调试可看到$_SESSION['yzm_mobile']为null,$_POST['yzm_mobile']为"",成功进入到此条件内
63437-dp4apbk85xr.png

那么实现任意用户密码重置流程就清晰了,只需要在进行安全验证步骤不获取验证码然后提交个空验证码值就行了,或者在提交step1绑定好session的username后,再提进入确认帐号界面,修改action=step2,直接进入修改密码界面

复现

复现方法1

正常提交
43373-afjamkwel8t.png

burp拦截下一步请求
87981-xgkps8ubyoo.png

输入验证码后会ajax发起请求验证验证码,会导致不能点击下一步,可以修改返回包为yes,然后就能正常点击下一步了
99617-ey6gz09zgfd.png
拦截成功后,删掉你提交的验证码值后放行
26186-sq6a6lpk7ab.png
进入修改密码界面
49155-9u2daaq49s4.png
输入密码提交,修改成功
38929-v60lsik77x.png

复现方法2

输入正确用户名,错误验证码进行提交
32877-unq6w3pcmh.png
然后会回到该页面,然后再次输入正确用户名,错误验证码,用burp拦截
12117-qjvn5h9kbp.png
修改action=step2
62358-eryu5qaklx.png
然后会进入到设置密码界面
98508-97zx1ld15y.png
输入任意密码提交即可修改成功
60026-sff934ojskc.png

两种方法其实都一样
也可在第一步操作后直接提交参数action=step3&password=123进行修改密码
31590-d5gx8bzfd86.png



文章评论

    萌宇 访客ChromeAndroid
    2021-05-22 16:47   回复

    更新一下链接
    名称:萌宇博客
    链接:https://blog.cutewo.com
    描述:好奇永无止境|探索从未停止
    头像:https://blog.cutewo.com/img/tx.jpg

      cooyf 站长ChromeWindows
      2021-05-26 14:11   回复

      已更新

目录