掌易科技的程序员反应相当快啊,确认漏洞当天就修复以后出新版本了,前面在wooyun提的几个漏洞新版的mcms做了相应的处理,发布了新版v_3.1.3.enterprise,再来研究研究。
注入一枚:POST /app/public/adv.php?m=save_all post中有6个参数存在注入。首先说明一下,这里POST的参数是一个二维数组,然后直接把第二维的数组代入了SQL执行,虽然使用了过滤函数,但是过滤函数对KEY无效。因此整个第二维数组的key都存在注入,而这里使用的表是mcms_adv,有area_id,title,area_type,area_remarks,area_html,area_status,这6个参数均可注入,看代码吧
使用sqlxss()过滤,但是对KEY无效,代码如下
对用户输入的内容先用H::escape过滤,再用htmlspecialchars过滤,我们再去看看H::escape
虽然有以上的过滤,但是这几次过滤都没有对传入数组KEY进行过滤,而且是把用户传入的数组直接带入sql执行,并没有检查key是不是数据库的字段值。因此,这里的数组库的每个字段(用户传入数组的key)存在注入。
Payload:POST提交
因为是time-based blind 注入,猜测管理员用户名的第一个字母时,若错误,不延迟,如下图

若正确,延迟,如下图

按上面的方法依次做下去(burp intruder或者自己写个脚本跑),可测试管理员用户名为:mcmsadmin,密码为: f6fdffe48c908deb0f4c3bd36c032e72