最新要闻
- 65寸4K大屏电视不到2000元 LCD白菜价即将结束:3月价格上涨10%
- 环球微头条丨最强AI再次进化 ChatGPT下周升级GPT-4:支持视频了
- 【环球聚看点】免费玩!《生化危机4:重制版》体验版上线:不限时、不限次
- 当前滚动:德国电动空中出租车Lilium jet完成测试:时速250km/h 全机36个电风扇
- 杀疯了!长安深夜放大招 购车百亿补贴:深蓝SL03直降2.2万
- 世界观点:佳兆业成今年首家复牌出险房企
- 全球球精选!一座河南小县城的全球钻石生意爆火:价格不到天然的1/3
- 我国再次成功发射一箭双星:天绘六号A/B星顺利进入预定轨道
- 当前快看:资助8年的女生毕业放弃工作 嫁给有钱人成家庭主妇 资助人:失眠好几天
- 天天通讯!上班族如何备考公务员_如何备考公务员
- 环球热议:用盆吃10袋泡面男子火了 回应月薪2万邀约:浇完家里18亩地再说
- 快讯:苹果iPhone 14黄色款预售:全新配色不加价 5999元起
- 天天微速讯:租客辞职要搬走被房东介绍工作 当事人感动
- 即时焦点:一辆腾势敢占两个充电桩:真不怕挨揍?
- “常温超导”把A股都晃晕了!真要改变我们的生活?
- 《霍格沃茨之遗》渗人面部Bug:玩家看了起鸡皮疙瘩
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
迷你天猫商城代码审计
迷你天猫商城代码审计
一、项目简介
迷你天猫商城是一个基于Spring Boot的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。 作为迷你天猫商城的核心组成部分之一,天猫数据管理后台包含商品管理,订单管理,类别管理,用户管理和交易额统计等模块,实现了对整个商城的一站式管理和维护。
二、第三方组件漏洞审计
本项目是基于Maven构建的。对于Maven项目,我们首先从 pom.xml 文件开始审计引入的第三方组件是否存在漏洞版本,然后进一步验证该组件是否存在漏洞点。本项目引入的组件以及组件版本整理如下。组件名称组件版本SpringBoot2.1.6.RELEASE开发框架Mysql5.1.47数据库Druid1.1.19数据源监控Fastjson1.2.58开源JSON解析库Taglibs1.2.5标签库Mybatis3.5.1持久层框架Log4j2.10.0日志记录库经过搜索查询,发现Fastjsonj、Mybatis、Log4引入的版本是存在漏洞的。
1)Fastjson 反序列化漏洞
① 本项目引入的Fastjson版本为1.2.58,该版本存在反序列化漏洞。
(资料图片仅供参考)
② 已确定了Fastjson版本存在问题,进一步寻找触发Fastjson的漏洞点。反序列化过程中会使用这两个函数 JSON.parse() 和 JSON.parseObject() (parseObject() 相比parse()多执行了 JSON.toJSON(obj),在处理过程中会调用反序列化目标类的所有 setter 和 getter 方法。)全局搜索两个关键字,发现本项目存在 JSON.parseObject() ,如下图所示:
③ 双击进入 ProductController.java 文件,问题代码出现在了 第151行 ,使用JSON.parseObject() 方法反序列化了 propertyJson 参数。如下图所示:
④ 我们向上追踪propertyJson 参数,该参数是 添加产品信息 接口中 产品属性JSON 字段。如下图所示:
⑤ 通过代码审计,找到了Fastjson反序列化漏洞点。我们通过渗透测试进一步验证。访问管理后台,发现漏洞输入点位于 所有产品-添加一件产品 功能下。
⑥ 点击添加一件产品后,使用BurpSuite抓包拦截记录请求数据包,发现请求地址为admin/product ,并且产品属性信息为 propertyJson 字段参数,如下图所示:
⑦ 对 propertyJson 参数值进行URL解码,发现为JSON格式字符串,如下图所示:
⑧ 访问在线DNSlog地址,点击获取一个子域名,如下图所示:
⑨ 我们构造漏洞验证POC:{"@type":"java.net.Inet4Address","val":"65qezy.dnslog.cn"},将其粘贴到 propertyJson 字段中。击发送数据包后,稍等一小会,能看到获取到回显信息,成功触发了Fastjson漏洞。如下图所示:
⑩ 或者去到访问NDSLog地址,点击 Refresh Record ,也可以看到获取到回显信息。
2)Mybatis 远程命令执行漏洞
- ① 本项目引入的Mybatis版本为3.5.1,该版本存在远程命令执行漏洞。
在满足以下三个条件的时候,攻击者可以触发远程代码执行:1、用户启用了内置的二级缓存(默认不开启,需手动配置)2、用户未设置JEP-290过滤器3、攻击者找到了一种修改私有Map字段条目的方法,即修改org.apache.ibatis.cache.impl.PerpetualCache.cache有效的缓存密钥二级缓存:将查询结果放到缓存中,下次查询时结果相同的话直接从缓存中获取结果。Mybatis开启二级缓存语句
- ② 经过查找在 src\main\resources\mybatis 下面的配置文件,本项目并 未开启 二级缓存。不满足该漏洞的触发条件,所有该漏洞可忽略。
3)Log4j远程代码执行漏洞
① 本项目引入的Log4j版本为2.10.0,该版本存在远程代码执行漏洞。
② 该组件漏洞主要发生在引入的 log4j-core(源码),log4j-api(接口) 是不存在该问题的。
③ 寻找漏洞触发点。全局搜索关键字logger.info (也可用logger.error查看)。发现多处日志记录拼接了变量参数,让我们看看这些参数是否是从前端传来的。如下图所示:
④ 双击进入该代码文件,位于\src\main\java\com\xq\tmall\controller\fore\ForeUserController.java。
⑤ 对上述代码进行分析。触发漏洞点的代码为77行的 logger.info("获取图片原始文件名:{}", originalFileName); 向上追踪,发现通过file.getOriginalFilename(); 获取file的文件名后赋值给 originalFileName; 在向上追踪,file参数来自 user/uploadUserHeadImage 接口,通过注释我们可以知道此处为 用户头像上传 功能。将文件名改为攻击语句,即可触发Log4j漏洞。
三、单点漏洞审计
对组件是否存在漏洞进行验证后,我们针对功能单点代码审计,发现存在的漏洞。对于单点功能代码审计除了特定漏洞存在特定代码审计方法,一般先去看一遍Controller层代码,了解基本功能。再从功能出发进行代码。
1)SQL注入漏洞代码审计
① 本项目使用了Mybatis,来定义SQL。我们主要查看Myabatis中 xxxMapper.xml 文件中是否存在使用 $ 拼接SQL语句的情况。使用 $ 是直接拼接SQL语句的,未进行转义。全局搜索关键字 $ ,确实存在几处 order by 使用了 $ 拼接SQL语句,因为 orderby 是没办法使用 #{} 的。搜索结果如下图所示:
② 双击进入 UserMapper.xml 文件,第70行存在问题。向上查看根据 select id追踪该dao层的代码文件。如下图所示:
③ 点击绿色箭头跳转到dao层代码文件,可以看到select函数中存在 orderUitl 参数,我们继续逆向追踪,看看参数值从何而来。
④ 键盘按住 ctrl 键后鼠标左击 select ,查看谁使用该函数,如下图所示:
⑤ 可以看到有两个文件使用了该函数方法,点击 UserServiceImpl.java 文件,定位到37行。如下图所示:
⑥ 从上图可以看出。 getList 方法中需要 orderUtil 参数,我们继续逆向追踪,看看orderUtil又是从何而来。首先看看谁使用了 getList 方法,键盘按住 ctrl 键后鼠标左击 getList ,如下图所示:
⑦ 可以看到 UserController.java 使用了该方法,且第170行中传入了orderUtil 值,进入文件查看具体代码,如下图所示:
⑧ 针对上述文件进行分析,先看161行实例化OrderUitl工具类,该类需要两个参数(orderyBy和isDesc )。点击进入查看该类的代码,该类文件位于src\main\java\com\xq\tmall\util\OrderUtil.java 。通过注释了解该类用于 排序/倒序 字段。如下图所示:
⑨ 此时应该追踪 orderBy 参数是从何而来。从下图可以看到,该值通过admin/user/{index}/{count} 接口传过来的。通过注释可以看出来该接口用于按条件查询用户,如下图所示:
⑩ 整个流程串下来,确定了漏洞点为 orderby 参数,该参数值来源于 按条件查询用户 。
⑪ 既然接口找到了,我们可以使用BurpSuite来构造请求,然后进一步攻击验证。通过注释我们了解到该接口为查询用户,我们访问后台寻找功能点,发现用户管理翻页查询会向该接口发送请求数据包,如下图所示:
⑫ 点击翻页时,使用BurpSuite抓取数据包,可以看到发送数据包中存在orderby字段,如下图所示:
⑬ 给orderBy赋值1,发送出去,可以看到排序在第一的数据信息
⑭ 给orderBy赋值99,发送出去时。出现异常。因为只有十几个用户。
⑮ 在浏览器那边也可查看到相应数据,如下图所示:
⑯ 至此,确定了用户管理功能翻页查询数据处存在SQL注入漏洞。
⑰ 该项目还存在多处相同注入点的SQL注入就不一一列出了。
2)管理员头像任意文件上传漏洞
对于代码审计任意文件上传漏洞来说,首先是看看是否存在文件上传功能,然后进一步审计是否存在任意文件上传漏洞。或者搜索相关关键字,文件上传关键字如下:FileFileUploadFileUploadBaseFileItemIteratorImplFileItemStreamImplFileUtilsUploadHandleServletFileLoadServletFileOutputStreamDiskFileItemFactoryMultipartRequestEntityMultipartFilecom.oreilly.servlet.MultipartRequest
① 在做Log4j漏洞代码审计时,我们发现 管理员头像上传 存在文件上传功能,对于该功能,我们审计一下是否存在任意文件上传漏洞。相关代码如下图所示:
② 发现并没有相关过滤恶意后缀名的代码。本项目中filter层也没有相关过滤代码。经过分析确定该位置存在任意文件上传漏洞。
③ 在管理员后台的管理员帐户里直接上传.php文件的话上传不了,因为前端 accept=”image/*”做了过滤处理,只能上传图片类的文件。
④ 我们先上传正常的图片,然后进行抓包,如下图所示:
⑤ 把filename的地方改成2.jsp,点击发送,收到上传成功的信息,如图所示:
3)产品分类添加分类文件任意上传漏洞
① 再全局搜索file,发现还有其他功能点疑似有漏洞。如下图所示:
② 双击进入 产品分类 相应的代码CategoryController.java,如下图所示:
③ 全程看下来发现和管理员头像处的做法一样,没有过滤处理。在后台找到该功能点位置,如下图所示:
④ 上传正常的图片,然后进行抓包,如图所示:
⑤ filename处改为 ”1.php”,点击发送,可以看到发送成功的信息,如图所示:
4)所有产品添加产品处任意文件上传漏洞
① 全局搜索file,发现在 所有产品 添加一个产品处疑似有漏洞,如图所示:
② 查看代码,发现除了 465行 判断上传的图片是单张还是图集,没有发现其他过滤处理。找到后台功能点处,如图所示:
③ 上传图片,然后抓包,在把filename处的值改为”2.php”,点击发送,可看到上传成功的信息,如图所示:
5)用户头像任意文件上传漏洞
① 全局搜索file,发现在 用户头像 处疑似有漏洞,如图所示:
② 查看代码后,没有发现有过滤处理。找到前台功能点处,如图所示:
③ 上传正常的图片,进行抓包,在修改filename的值为“2.php”(tips:因为是Java项目,所以本应该上传jsp的一句话木马才比较合理,因为上面有案例了就懒得再弄了),点击发送,即可看到上传成功的信息,如图所示:
6)管理员昵称处XSS漏洞
从开发视觉来看防护XSS漏洞,大多是过滤/转义用户的输入和输出。对于开发人员来说,不可能对每一个输入和输出点进行过滤/转义。一般常使用filter层(过滤器)或拦截器进行统一过滤。或者所使用的前端框架自带防XSS机制。
① 所以,我们审计XSS漏洞第一步看看filter层是否存在XSS过滤代码。对本项目审计发现filter层并没有关于防护XSS的代码,如下图所示:
② 第二步,我们看看使用的前端框架是什么,版本是多少,以及是否存在防XSS漏洞机制。经过一番查找,发现pom.xml和webapp文件下,都表明使用了传统的JSP。JSP大多配合Filter进行XSS防护,上述我们发现filter层并没有XSS防护机制。所以本项目存在XSS漏洞。
③ 我们在管理员昵称处键入XSS漏洞验证
POC:
,点击保存。如下图所示:④ 每次登录管理员后台就会触发XSS弹框,如下图所示:
7)前台搜索栏XSS漏洞
- ① 在前台的搜索栏键入XSS漏洞验证
POC:
,也能触发XSS弹框,如下图所示:
8)所有产品的添加产品处XSS漏洞
① 在添加一个产品的产品标题键入XSS漏洞验证
POC:
,如下图所示:② 在前台搜索后,点击产品也能触发弹框,如下图所示:
前台用户登录处,管理后台登录处均没有图形验证码,以及其他防暴力破解措施。可以对账号进行爆破破解。
关键词:
-
焦点简讯:K8S 性能优化 - K8S APIServer 调优
前言K8S性能优化系列文章,本文为第二篇:KubernetesAPIServer性能优化参数最佳实践。系列文章:《K8S性...
来源: -
【全球聚看点】Prompt-Engineering-Guide 学习摘要1
Prompt工程(Prompt-Engineering)是一种用于主动支持和协助工程团队进行及时决策的软件工具。它提供了...
来源: 工厂模式进阶用法,如何动态选择对象?
迷你天猫商城代码审计
焦点简讯:K8S 性能优化 - K8S APIServer 调优
【全球聚看点】Prompt-Engineering-Guide 学习摘要1
前端设计模式——装饰者模式
65寸4K大屏电视不到2000元 LCD白菜价即将结束:3月价格上涨10%
环球微头条丨最强AI再次进化 ChatGPT下周升级GPT-4:支持视频了
【环球聚看点】免费玩!《生化危机4:重制版》体验版上线:不限时、不限次
当前滚动:德国电动空中出租车Lilium jet完成测试:时速250km/h 全机36个电风扇
杀疯了!长安深夜放大招 购车百亿补贴:深蓝SL03直降2.2万
世界快看点丨分享几个常用的运维 shell 脚本
世界观点:佳兆业成今年首家复牌出险房企
全球球精选!一座河南小县城的全球钻石生意爆火:价格不到天然的1/3
我国再次成功发射一箭双星:天绘六号A/B星顺利进入预定轨道
当前快看:资助8年的女生毕业放弃工作 嫁给有钱人成家庭主妇 资助人:失眠好几天
天天通讯!上班族如何备考公务员_如何备考公务员
全球焦点!读Java性能权威指南(第2版)笔记12_堆内存中
怎么处理消息重发的问题?
每日热点:HEU KMS Activator 30.0.0全能系统数字许可激活工具(全新体验纪念版)
环球热议:用盆吃10袋泡面男子火了 回应月薪2万邀约:浇完家里18亩地再说
实时:第127篇:异步函数(async和await)练习题(异步,消息队列)
焦点!【LeetCode回溯算法#05】分割回文串(复习双指针判断回文以及substr函数使用记录)
今日热议:【django-vue】celery延迟任务、定时任务 django中使用celery 秒杀功能 双写一致性 首页轮播图定时更新 课程前端页面
世界热头条丨关于JAVA泛型数组类型擦除引发的问题及解决方案
环球今日讯!Mint安装MySQL
快讯:苹果iPhone 14黄色款预售:全新配色不加价 5999元起
天天微速讯:租客辞职要搬走被房东介绍工作 当事人感动
即时焦点:一辆腾势敢占两个充电桩:真不怕挨揍?
“常温超导”把A股都晃晕了!真要改变我们的生活?
《霍格沃茨之遗》渗人面部Bug:玩家看了起鸡皮疙瘩
全球短讯!美环保署署长:将在今年最终确定甲烷排放规则
21世纪20年代是几几年(21世纪20年代是几几年)
爆肝两万字,详解fastdfs分布式文件系统
初识rollup 打包、配置vue脚手架
世界热议:62.类模板
当前热文:C语言——可变参函数
陕西招聘会现3万月薪岗位学生排长龙 招聘人员:半天收简历150份
当前动态:供不应求!真我GT Neo5 1TB版真香:二手用户也抢着要
“山药成了精”?男子买到奇葩山药外形酷似人脚掌
每日视点!快速读懂Redis分布式锁的实现和原理
美少女三消游戏 《Mirror 2: Project X》开发组宣布破产解散
酒店回应到211大学招服务员:符合流程 面向所有高校毕业生
快看点丨京东CEO徐雷:百亿补贴效果超过预期、要做天天低价
【新要闻】比亚迪加入降价大军!宋Pro DM-i限时优惠:88元折扣6888元
焦点简讯:耳机煲机一般要煲多久_耳机煲机方法是什么?买回来新耳机要怎样煲?耳机要煲多久?
世界热点评!前端如何相对优雅管理api
全球速看:浙四医院官网招聘2021_浙四医院官网
环球观点:京东2022年收入超1万亿:“百亿补贴”会一直有!
简约时尚 健身备一件:361°新款轻薄速干衣39元冲量
越来越卖不动了!最畅销十款数码相机一览:索尼成赢家 第一性价比绝
全球通讯!Intel的大小核CPU架构:最终还是把一些老游戏坑了
往返近1000元!景区回应坐滑竿上山按斤收费:网友力挺明码标价
天天实时:【翻译】发布 .NET 8 Preview 1
前沿资讯!海洋风筝爆火 一周暴涨498%超过秋裤!网友:春天的信号
天天消息!甜香丝滑 旺旺邦德低脂轻乳咖啡官方狂促:合2元一瓶
《银河护卫队3》导演回击网友言论:确定选角不因其是黑人
世界热议:东风系引发车市价格大战!纯电宝马i3终端大促销:最大降幅超10万
每日热点:日本原药温和驱蚊配方:超威电热蚊香液3瓶1器14.9元发车
快讯:uni-popup 遮不住头部标题的解决办法
环球焦点!网友晒空荡新房 各大品牌疯狂随份子 开局一套房其他全靠送
快播:女子在地铁上脱鞋抠脚死皮掉一地 杭州地铁回应:列车到站会打扫
世界速递!为拯救者Y9000P 2023量身打造:联想推出新140W氮化镓适配器
每日看点!富士康否认清退临时工拆除流水线:运转正常
全球即时:美国一特斯拉撞上消防车造成一死一伤 现场惨烈!调查结果让人心痛
Envisics获得5000万美元C轮融资
当前滚动:(数据库系统概论|王珊)第十一章并发控制-第二、三、四节:封锁、封锁协议活锁和死锁
每日焦点!「中华田园敏捷开发」,是老板无能还是程序员无力?
【世界聚看点】探究SMC局部代码加密技术以及在CTF中的运用
记录--Vue自定义指令实现加载中效果v-load(不使用Vue.extend)
【焦点热闻】十分钟读懂火山引擎 DataLeap 数据治理实践
老头环壶头哥:击败女武神超4千次 期待DLC到来
天天资讯:儿子沉迷手机爸爸帮请假“逼”他连玩17小时:效果很好
焦点消息!供应iPhone 15的OLED屏幕漏光?国产面板一哥京东方回应:不予评价
当前关注:纵享丝滑 回味愉悦:德芙巧克力37.5元/斤(官价5折)
每日速看!成龙进组20天把半年的封闭用完了!新电影《龙马精神》4月上映:有吴京参演
每日视点!通过案例讲解python循环语句
【全球独家】基于应用理解的协议栈优化
关注:串口登录提示"Login incorrect"
热推荐:节能降耗 | AIRIOT智慧电力综合管理解决方案
实时:C++笔记--函数、预处理
【天天播资讯】为啥人一上车就爱睡觉?原来是被“催眠”了
全球观察:95后大厂女生裸辞开麻将馆当保洁:很享受自由和成就感
全球今日报丨2030年前后我国将实施火星采样返回:难度很大
【全球播资讯】特斯拉中国2月销量出炉 比亚迪能打5个特斯拉
航班晚点 山航机长提速帮乘客5分钟极限转机:提前20分钟到达
速递!首钢股份:2月重点产品产量同比均提升 预计国内钢材价格短期震荡偏强
焦点播报:Python常见面试题012. 可迭代对象和迭代器有啥区别?
从5分钟到60秒,袋鼠云数栈在热重启技术上的提效探索之路
世界观天下!我的脑内恋碍选项第二季会出吗_我的脑内恋碍选项第二季
【天天报资讯】ChatGPT火出圈!人工智能工程师平均招聘月薪突破2.5万
环球热文:三星推出冰淇淋主题键鼠套装:薄荷配色如此清凉
集成ChatGPT威力显著:微软Bing日活跃首次破亿
每日快报!3月罕见!郑州今日冲上30°C高温:成北方首个30℃+省会级城市
世界球精选!RTX 50显卡有望使用 GDDR7显存验证方案来了:狂飙36Gbps
无界生态发布会即将举办 焕新后的星纪魅族将带来哪些惊喜?
java代码审计-XSS
全球今日讯!vue中将base64流数据转成pdf文件可打印
环球速讯:1 MySql基础介绍
世界观焦点:英媒:多特蒙德中场贝林厄姆将决定自己的未来
观察:今年五一档已定档10部新片 王一博《长空之王》超65万人想看