java代码审计-jspcms

举报
亿人安全 发表于 2023/05/17 23:13:37 2023/05/17
【摘要】 环境搭建源码:https://www.ujcms.com/uploads/jspxcms-9.0.0-release-src.zip下载之后解压然后用idea导入先创建数据库导入数据库文件然后导入源码然后配置好数据库连接加载maven依赖根据本地数据库版本情况 记得调整数据库依赖版本然后启动后台地址:http://127.0.0.1:8080/cmscp/index.do因为刚开始代码也那么...

环境搭建

源码:https://www.ujcms.com/uploads/jspxcms-9.0.0-release-src.zip

下载之后解压

图片

然后用idea导入

先创建数据库导入数据库文件

图片

然后导入源码

图片

然后配置好数据库连接

图片

加载maven依赖

根据本地数据库版本情况 记得调整数据库依赖版本

图片

然后启动

图片

后台地址:http://127.0.0.1:8080/cmscp/index.do

因为刚开始代码也那么多就没有直接看代码  先熟悉熟悉有什么功能点

XSS

随便进入了一篇文章 然后评论

图片

这里发现是没有xss的

但是后面来到“我的空间”

图片

点击评论的时候

图片


这里触发了xss

这里相当于是黑盒摸到的 单既然是审计  就要从代码来看   重新回到评论的地方  评论进行抓包 看看请求的路径是什么 先找到入口

图片

然后回到idea搜索comment_submit

图片

然后在这里打上断点

图片

图片

然后一步一步放

跟进submit

图片

主要是看传进来的text的走向

到这里text的值都没有变化

图片

然后来到最下面这里是save操作

图片

图片

这里也是直接进行存储 说明存入的时候是没有进行过滤的 那最开始没弹 肯定就是输入的问题了  因为摸到弹的情况

直接根据弹的情况来分析为什么回弹  先找到弹的页面的代码  因为路径有一个space 所以搜索space

图片

打上断点 进行调试

图片

图片

图片

图片

这里最后返回了一个模板

发现这个是一个html 搜索这个html

图片

通过pom.xml

图片

是freemarker模板

先搜搜这玩意是咋转义的

图片

看到一个熟悉的

图片

这个页面这里有填写这个 但是最终还是弹了  说明有漏网之鱼的页面

通过查找 发现一个没有写这个的页面

图片

搜索 看看哪里用到了这俩

图片

刚还这里的type=comment对应上之前访问时候的type

图片

所以访问这个页面的时候能触发xss  payload没有进行任何过滤 这个页面也没有进行转义

SSRF

在审计ssrf的时候 一般都是搜索关键函数

URL.openConnection()
URL.openStream()
HttpClient.execute()
HttpClient.executeMethod()
HttpURLConnection.connect()
HttpURLConnection.getInputStream()
HttpServletRequest()
BasicHttpEntityEnclosingRequest()
DefaultBHttpClientConnection()
BasicHttpRequest()
第一处

直接在idea里面搜索

图片

然后一个一个点进去分析

找到这里

图片

会进行连接  然后我们往上分析这个src的来源

图片

发现这里是从请求中获取source[]参数来的 说明这个是我们所能控制的

图片

在往上看 根据函数名能够大概猜出是编辑器图片相关的函数

看看哪里调用了这个函数

图片

在uploadcontroller下  继续跟进ueditorCatchImage函数 看看那里调用

图片

发现在同一页的66行找到  也找到这个路由是在ueditor.do下

图片

最上面controller 是core

所以路径是/core/ueditor.do?action=catchimage

进行测试

图片

图片

图片

图片

但因为是在back下  所以是一个后台的洞

通过后面的代码可以看到 似乎是对一个图片的操作  直接就进行断点看看这里是到底执行了什么

图片

测试:

图片

传入了一个jpg地址 但这个地址是不存在的 来到断点的地方

图片

这里获取到source的值存入数组

图片

这里获得后缀

图片

这里判断请求的是不是图片 因为我们传入的是不存在也就不是 到这里也就直接结束了  在此输入一个存在的链接

图片

图片


跟到这里是重新设置文件名

图片

然后读取输入流

图片

然后跟进这里创建文件对象

图片

然后这里直接保存文件  中间也没有任何过滤操作 就判断了是不是图片 然后就保存了文件  

图片

相当于这里就是一个进行 图片请求然后保存到本地的操作

图片

那么这里是不是可以进行svg的xss呢  尝试一些

测试:

先创建一个svg xss

图片


图片

图片

第二处

继续搜索ssrf的关键函数HttpClient.execute()

图片

然后查看哪里调用了这个函数

图片

继续跟进

图片

发现在这里进行的调用以及url的传入 而且这个url是 可控的

往上找到控制层

图片

最后拼接 进行测试

http://192.168.1.2:8080/cmscp/ext/collect/fetch_url.do?url=http://127.0.0.1:8080

图片

直接能访问到服务

最后在页面找到位置

图片

图片

RCE

第一处

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

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

图片

图片

然后跟进来

图片

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

图片

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

图片

图片

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

图片

图片

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

继续跟进

图片

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

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

图片

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

图片

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

图片

图片

图片

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

先试试

图片

图片


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

图片

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

图片

图片

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

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

  • jspxcms安装包(部署到Tomcat):https://www.ujcms.com/uploads/jspxcms-9.0.0-release.zip

图片

也是有安装手册的

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

图片

然后来到上传的地方

图片

先准备恶意的zip包

把一句话打包成war包

图片

然后把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()

图片

然后上传

图片

图片


冰蝎连接

图片

第二处

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

图片

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

图片

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

要了一个payload

然后利用exp脚本 开始爆破

https://github.com/inspiringz/Shiro-721

图片

爆破的时间有点久

图片

然后把cookie复制  我们来执行

图片

图片

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

参考:https://www.freebuf.com/articles/others-articles/229928.html

JAVA代码审计入门篇

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。