代码审计——zcncms后台SQL注入(一)

from:小黑屋

由于是后台注入,比较鸡肋,发上来供大家相互参考学习。zcncms版本1.2.14,官方网站地址:
zcncms

0x01 变量处理

文件/include/common.inc.php中

过滤变量的key是”_p”和”GLOBALS p”的形式,防止全局变量覆盖;并在函数_GetRequest()中进行了addslashes的操作。了解了上面的情况,那么有什么可利用的点就比较清楚了。

0x02 未正确过滤

文件/module/menus/admincontroller/menus.php

在$parentid != $infoold[‘parentid’]中,用的’!=’,很明显如果我们要控制$parentid的值,这个不等式肯定成立。但是errorinfo会使程序退出,所以这里需要一个在数据库不存在的parentid,使得取出$List为空,从而进入下面的sql操作

0x03 全局过滤(08sec ids)

在进行尝试的时候,发现了sql执行居然还有过滤

TB2wu4nuXXXXXXfXXXXXXXXXXXX_!!792076116
追踪sql语句执行函数,GetInfo()->Execute()->option()->SafeSql()

从代码和警告信息来看,是08sec的通用ids无疑,包括dedecms等内置这个这段代码。网上已经有较多的绕过方式。
构造payload:

2

0x04 多处类似处理不当

搜索了一下代码,发现多处parentid处理不当,不过都需要后台权限

3

发表评论

要发表评论,您必须先登录