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

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

SSRF

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

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

直接在idea里面搜索

65e7738acdca04d30284cd5234692929_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后一个一个点进去分析

找到这里

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

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

08bde57a2ee4937111e6003caacc97f5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

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

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

看看哪里调用了这个函数

3514c94b96d2ff6f48b567911ec744e7_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

409deff5bcb8905f12c466a1d73c4bc1_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

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

最上面controller 是core

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

进行测试

247bbde79a6570895d1e16d37bd67cc7_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

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

0763449ae9bb090ea6e9db787314d51f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

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

2e0aa20844de56c1cfe49860f436f2a3_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

测试:

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

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

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

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

45f1ceb51ae684e11519b487957b345b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

这里获得后缀

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

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

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

74541cfa3d45d0380e6f99b8d519935b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


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

887ce4d0a4ee6f95a27e4fb3d36aa4f8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后读取输入流

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

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

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

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

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

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

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

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

测试:

先创建一个svg xss

38599faa82dfb16f1be6bc4b67e49115_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


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

0309133a9d096b204db66d7e0a45b30c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

第二处

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

3e7e3e144f7847f8da44476b98141929_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

5889540e7757efa84fe585b63f943db6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

继续跟进

41cf7af5e712ea090952d668ab1dfcac_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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

往上找到控制层

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

最后拼接 进行测试

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

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

直接能访问到服务

最后在页面找到位置

614496153f831cb4e59c286dd7aaae58_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

2d0d1f0c485821a3beeb476561f08db7_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

相关文章
|
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
|
12月前
|
安全 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审计
390 0
Java代码审计之jspxcms审计(三)
|
存储 Java 数据库连接
Java代码审计之jspxcms审计(一)
Java代码审计之jspxcms审计
202 0
Java代码审计之jspxcms审计(一)
|
5月前
|
安全 小程序 PHP
PHP代码审计(五)PHP代码审计方法与步骤
(1):获取到网站源码(这就是废话……) (2):将网站部署到你自己的环境中,能运行。 这里特殊说明一下我的习惯,我本地的环境与线上的环境基本上保持一致,这样在本地审计及线上部署的时候能发现更多的问题。不建议说是随便搭个环境能跑起来就行,这样不是很严谨。 (3):拿到源码之后,浏览大概的项目结构。
69 0