代码审计之某企业网站管理系统
源码是网上随便找的,结构如下
安装完成后分析index.php,大部分功能我已经注释出来了,
分析源码发现,此处总共关注几个变量,分别是bid,cid,did,setpage,setid。但是传入的参数均经过正则处理,无法进行SQL注入
根据包含文件接着分析includes文件夹下的文件
其中comm.php中比较重要的代码如下
这段代码对GET和POST方法输入的字符串进行处理,可以避免发生SQL注入。
再接着分析文件夹内的文件,发现save.php中存在一处SQL注入,关键代码如下
分析代码可以看到,变量abc的值是由text’.$rs[“id”].'的值拼接特殊符号|@;得到的,此处POST请求的内容可控,而开头文件并没有包含comm.php,因此此处可以拼接sql语句造成SQL注入
另外,代码中还有个危险函数eval(),eval() 会将符合PHP 语法规范字符串当作php 代码执行,例如
遗憾的是,此处没有代码执行漏洞。因为单引号包裹了内容,我再test.php构造了类似的函数,打印如下,故不存在代码执行漏洞
再分析后台代码,文件目录如下
其中存在漏洞的文件为databackup.php文件,漏洞代码如下
此处未对f参数进行过滤操作,所以存在任意文件删除
漏洞复现如下图
第一处SQL注入:
第二处任意文件删除: