之前4月13日在360的漏洞平台提交过一次,当时给出了能计算出db_pscode的利用工具。db_pscode是安装的时候随机生成的一个字符串常量,保存在配置文件里。4月22日,官方发布了新版本,改进了程序安装时候生成db_pscode的方法,"修复了"该漏洞。其实官方只是防住了当时的那个exp,并没有从根本上防住漏洞。22日之前是32位的md5hash字符串,这次长度变的不固定可以是1-39位的字符串,但是依然可以逆向出来,这里还是以后台绕过的方法来利用这个漏洞。
先看一下EspCMS后台的验证流程
管理的主界面important类的构造函数:
这里关键是 $this->fun->eccode() 这个函数的解密密钥 db_pscode 的获取了。
通过对比明文和密文可以逆向出这个值:
为了不必要的误会和麻烦,这里就不给出计算db_pscode的具体代码了。说下方法吧:
通过useragent 和 网站根目录网址就能逆向出超过66位的字符串值。
0422后db_pscode长度如果在32位之内也可以通过别的地方如发送验证邮件的地方获得32位的验证码。
总之N多方法。
这里直接给出后台绕过的javascript利用代码的生成代码: