KPPW最新版SQL注入漏洞八,从一处问题找出罪魁祸首,全局文件问题导致12处注入及越权操作
文件/control/pubgoods.php
看最后两行,这里的$arrModelInfo['model_dir']可以为goods或者service
当$arrModelInfo['model_dir']为goods时,我们跟进文件:
/shop/goods/control/pub.php
当action=delete_image,或者action=delete_goodsfile时,参数fileid都会进入sql语句,而且没有过滤,没有引号保护,最后导致sql注入
继续往下,参数fileid还进入了函数delFileByFileId,继续跟踪:
文件/lib/inc/CommonClass.php:
这里的fileid同样进入了select和delete语句,都没有过滤处理和保护,导致两处注入
这里在delete时,可以删除用户发布的商品或者任务的图片已经文件,而且这里最后删除时只根据fileid删除,没有判断删除对象的用户属性,导致可以任意删除任意用户发布的文件,导致越权操作。
下面来看看文件/lib/inc/CommonClass.php,这是一个全局调用的函数
来看看有多少文件使用了/lib/inc/CommonClass.php中的这个delFileByFileId函数
可以看到这里一个有12个文件使用了这个delFileByFileId函数,我们再来找两个其他文件,看看是不是也没有处理传入delFileByFileId函数的fileid参数
第一个文件/control/taskhandle.php:
fileid在全文上下没有处理,这里进入函数delFileByFileId后,也会导致注入
其他的就不一一列出来了,都存在同样的问题
fileid没有处理,直接进入函数delFileByFileId,然后fileid进入select和delete语句,导致sql注入,并且存在越权删除任意用户文件的漏洞
sql注入漏洞:
这里会延迟10秒返回
因为这里的存在两处select,所以sleep(5)了两次
看看数据库执行结果:
成功执行我们的sql语句
这里说UserName+password的第一个字符是a,继续执行,即可注入出完整的UserName和password,注入脚本之前已经有了,修改下请求即可