38 WEB漏洞-反序列化之PHP&JAVA全解(下)

目录

    • Java中的API实现
    • 序列化和反序列化
    • 演示案例
      • WebGoat_Javaweb靶场反序列化测试
      • 2020-网鼎杯-朱雀组-Web-think java真题复现

文章参考:
https://www.cnblogs.com/zhengna/p/15737517.html
https://blog.csdn.net/MCTSOG/article/details/123819548
38 WEB漏洞-反序列化之PHP&JAVA全解(下)_第1张图片
ysoserial生成攻击的payload,工具地址:

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

Java中的API实现

位置:Java.io.ObjectOutputStream java.io.ObjectlnputStream
序列化:Object0utputStream类 --> writeObject()
注:该方法对参数指定的obj对象进行序列化,把字节序列写到一个目标输出流中按Java的标准约定是给文件一个.ser扩展名
反序列化:0bjectInputStream类 --> readObject()
注: 该方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。

序列化和反序列化

序列化 (serialization): 将对象的状态信息转换为可以存储或传输的形式的过程,在序列化期间,对象将其当前状态写入到临时或持久性存储区。
反序列化: 从存储区中读取该数据,并将其还原为对象的过程,称为反序列化。

演示案例

WebGoat_Javaweb靶场反序列化测试

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

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

下方的特征可以作为序列化的标志参考:
一段数据以rO0AB开头,你基本可以确定这串就是JAVA序列化base64加空的数据。或者如果以aced开头,那么他就是这一段java序列化的16进制。

根据当前windows或linux操作系统来写反弹命令
ipconfig=>序列化->base64=rO0AB格式字符串 最终payload

0x01 注入判断,获取管理员帐号密码:
根据提示附件进行javaweb代码审计,发现可能存在注入漏洞
另外有swagger开发接口,测试注入漏洞及访问接口进行调用测试
数据库名: myapp,列名name,pwd
注入测试:
POST /common/test/sqlDict
dbName=myapp?a=’ union select (select pwd from user)#

SerializationDumper反序列化解密工具

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

反序列化漏洞是java当中经常出现的漏洞,相比其它漏洞出现的频率会高一些,原因就是他的语言特性决定的,它不像php这些语言,我们看到不仅是在分析的时候,还是我们下去做开发看源代码的时候,它的php储存方式、运行原理各个方面都不一样,所以造成它的漏洞类型产生的方面也不一样

你可能感兴趣的:(小迪安全,前端,php,java)