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://github.com/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://www.freebuf.com/articles/others-articles/229928.html

JAVA代码审计入门篇

相关文章
|
5月前
|
安全 小程序 PHP
PHP代码审计(七)Rips源代码审计系统使用教程
上一篇中提到的Seay源代码审计系统是由C#编写的winform程序,现在已经停止更新了,但是,还是比较好用的。 PHP代码审计还有另一个工具,也是一个神器Rips
179 0
|
5月前
|
安全 小程序 PHP
PHP代码审计(六)Seay源代码审计系统使用教程
www.cnseay.com/ 当然,这个已经不能访问了。 软件的版本比较早,需要.NET framework3.5框架,我这里是软件启动的时候自动提醒安装,如果没有自动提醒,那么你需要手动安装.NET frameWork3.5框架,否则,程序应该是没有办法运行。
412 0
|
12月前
|
安全 Java API
Java审计之Freemarker模板注入漏洞
Java审计之Freemarker模板注入漏洞
10319 1
|
12月前
|
存储 XML SQL
Java审计之XSS篇
继续 学习一波Java审计的XSS漏洞的产生过程和代码。
125 0
Java审计之XSS篇
|
12月前
|
SQL 安全 前端开发
Java审计之SQL注入篇
本篇文章作为Java Web 审计的一个入门文,也是我的第一篇审计文,后面打算更新一个小系列,来记录一下我的审计学习的成长。
278 0
|
12月前
|
XML 存储 SQL
通过webgoat-xxe、jwt学习Java代码审计
通过webgoat-xxe、jwt学习Java代码审计
294 0
|
安全 Java 中间件
java代码审计之CC1链(一)
前言 Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库,它提供了很多强大的数据结构类型和实现了各种集合工具类。作为Apache开放项目的重要组件,Commons Collections被广泛的各种Java应用的开发。 commons-collections组件反序列化漏洞的反射链也称为CC链,自从apache commons-collections组件爆出第一个java反序列化漏洞后,就像打开了java安全的新世界大门一样,之后很多java中间件相继都爆出反序列化漏洞。本文分析java反序列化CC1链。
131 0
|
Java
Java代码审计之jspxcms审计(二)
Java代码审计之jspxcms审计
217 0
Java代码审计之jspxcms审计(二)
|
存储 Java 数据库连接
Java代码审计之jspxcms审计(一)
Java代码审计之jspxcms审计
202 0
Java代码审计之jspxcms审计(一)
|
2天前
|
安全 Java 调度
深入理解Java并发编程:线程安全与性能优化
【5月更文挑战第12天】 在现代软件开发中,多线程编程是提升应用程序性能和响应能力的关键手段之一。特别是在Java语言中,由于其内置的跨平台线程支持,开发者可以轻松地创建和管理线程。然而,随之而来的并发问题也不容小觑。本文将探讨Java并发编程的核心概念,包括线程安全策略、锁机制以及性能优化技巧。通过实例分析与性能比较,我们旨在为读者提供一套既确保线程安全又兼顾性能的编程指导。