此问题的产生是由于Destoon对加密解密函数过分的依赖和使用。首先来看加密函数`mobile\search.php`
当我们提交wd明文时,程序会将内容进行加密,并且在header里提示出来。例如:
这里的`1d81E9mw4aiA5......CWDwaGD`就是wd明文加密后的内容。
我们再看另外一个位置。`mobile\mobile.php`,14行
程序经过简单的条件判断以后,进入 `$auth = decrypt($auth);`。然后对auth进行解密和解析。最终传入 `$do->login($arr[0], '', 0, true);`。我们来看一下login的代码:
当 admin 为true时,实际上不检查用户的密码。所以我们传入用户名就可以登陆了。
接下来的思路就是:我们使用search.php里的wd,构造加密语句。然后将加密后的字符串传入mobile.php里的auth,最终返回目标用户的cookies凭据。
## 漏洞利用代码
首先要注册一个正常的用户(我这注册的是test),然后修改cookies,并修改数据包如下
要注意修改以下几个位置
构造好以后返回一个302转向
这里的kw为之前wd的加密后数据。接下来发第二个数据包:
Cookies部分注意替换成你自己的。`cz4_mobile=screen;`这部分不要忘记了。然后auth的值就是上方kw的值。
接下来系统将会再次返回一个302.这里sec-cookies为目标用户的cookies值。拿着这些凭据即可登录后台。
在此补充一下如何拿到后台的地址。
我们可以利用给管理人员发信息,通过http referer进行获取。
例如我们可以在前台申请广告。
当管理人员审核申请时,可以获取到http referer。