天融信TopScanner默认会对输入的参数进行转义,大部分都是用了单引号和双引号对输入参数进行了保护,但是还是有一些地方漏掉了,没有进行引号保护,导致绕过gpc进行sql注入
第一处sql注入
文件task/htmlReportShow.php
看这里$modeID = $_GET["modeID"];进入了函数$arrReportMode=$report->getReportMode($modeID);
跟进函数getReportMode,文件task/CTaskReport.php
可以看到$modeID参数直接进入sql语句然后执行,导致sql注入漏洞
而且这里没有判断登录状态,所无需登录即可进行注入,见漏洞证明
第二处sql注入,文件task/rtf_report.php
同理第一处sql注入:
$modeID = $_GET["modeID"];参数进入函数$report->getReportMode($modeID),然后进入sql语句,无引号保护,导致无需登录sql注入漏洞产生
第三处sql注入,文件/task/verticalReportShow.php
可以看到参数$modeID=$_GET["modeID"]进入函数$globalReport->getReportMode_VH($modeID);
跟进函数getReportMode_VH,文件/task/CTaskReport.php
可见参数$modeID进入$sql,最后进入数据库被执行,没有引号保护,导致sql注入漏洞
且这里无登录状态验证,导致无需登录即可利用注入
第四处sql注入,文件/task/vertical_rtf_report.php
漏洞原理同第三处sql注入,参数$modeID进入$sql,最后进入数据库被执行,没有引号保护,导致sql注入漏洞
第一处证明:
第二处SQL注入
第三和第四处同第一处和第二处证明
可直接跑出数据,且为root权限:
由于是盲注,跑数据很慢,就不跑出具体数据了,而且容易就将服务器跑挂。。。
测试案例:
**.**.**.**/
**.**.**.**/
**.**.**.**/