文章总结: 本文对Tmall_demo商城系统进行代码审计,发现多处高危漏洞。核心发现包括后台鉴权绕过、前台任意文件上传、基于MyBatis排序参数的多处SQL注入,以及产品、订单及管理员处的存储型XSS。文章提供了详细的漏洞复现过程与环境搭建指南,建议修复鉴权逻辑、加强文件后端校验及使用预编译SQL语句。 综合评分: 88 文章分类: 代码审计,WEB安全,漏洞分析,漏洞POC
Tmall_demo商城代码审计
原创
时针 时针
船山信安
2026年1月30日 20:00 广东
与作者沟通过可发布他的作品并标注原创,原文连接:https://xz.aliyun.com/news/19037
环境搭建
项目地址:https://gitee.com/project_team/Tmall_demo
修改src/main/resources/application.properties中的对应数据库配置信息,创建对应数据库,导入sql文件。
jdk版本1.8
前台地址:http://127.0.0.1:8080/tmall
后台地址:http://127.0.0.1:8080/tmall/admin
后台管理员账户密码:admin/123456
如果登录后台出现500,系统错误的提示,可以将src/main/resources/mybatis/mapper/ProductMapper.xml中的最后一条select语句改成如下即可
<select id="selectTotalByGroupCategory" resultType="map"> SELECT category.category_name name, COUNT(0) value FROM product LEFT JOIN category ON category.category_id = product.product_category_id GROUP BY category.category_id, category.category_name ORDER BY category.category_id </select>
代码审计
鉴权绕过
在pom.xml中没有发现jwt或者shiro之类的鉴权关键字,看一下目录结构是否有filter或者Interceptor
可以看到存在filter,里面只有一个鉴权文件
里面只有一段,可以看到这里,只有url中包含/admin/login或/admin/account即可直接放行,绕过鉴权。
在后台找个需要登录才能查看的功能点
抓包看一下
接着我们退出登录,可以看到直接访问是无法查看人员信息的
在前面加上/admin/login或/admin/account结合目录穿越即可绕过鉴权
前台文件上传
在前台个人资料处的头像上传功能存在文件上传。
在前端校验文件后缀,可以看到使用了uploadImage函数,
在js中搜一下这个函数,可以看到只校验了MIME类型和大小
哥斯拉生成个jsp马,后缀改成png,抓包之后再改成jsp即可。
抓包可以看到对应的路由为/user/uploadUserHeadImage,去源码里全局搜索一下,发现没有对文件进行检测过滤,只是对文件名进行了uuid编码,并且也给了文件路径,也会返回文件名。
在pom.xml文件中也可以看到有jsp解析依赖,传马也能解析。
在前台查看头像地址,再拼接jsp马即可。
http://localhost:8080/tmall/res/images/item/userProfilePicture/ac5f3dcf-b85f-4360-b610-59bdbcfcb455.jsp
多处sql注入
翻一下pom.xml,可以看到使用了Mybatis,那么大概率会使用
直接全局搜${,可以看到好几处都是使用orderUtil.orderBy这个参数,随便找一个跟进去看一下
搜索一下orderUtil类,这里有两个OrderUtil方法,第一个没有引用,看第二个的使用
优先看一下orderBy参数是否可控,看一下使用
这里跟进第二条看一下,可以看到参数是orderBy,通过get方法获取参数,也是可控的。(其他几条也和这种类似)
在查询订单这里搜索
可抓到下面这个包,并且有orderBy参数
直接sqlmap一把梭哈
同样的admin/product/{index}/{count}、admin/user/{index}/{count}、admin/reward/{index}/{count}、product/{index}/{count}路由也一样存在sql注入
多处xss
所有产品处
添加商品这里见框就插
然后搜搜产品名称<script>alert(1)</script>即可弹出多个xss弹窗
前台下单/后台查询订单处
提交订单即可弹出xss弹窗
后台在全部订单这里查看刚刚的订单详情,也会弹窗
管理员昵称处
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:船山信安 时针 时针《Tmall_demo商城代码审计》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论