前言
在测试某反序列化漏洞,可以通过URLDNS链确定漏洞是否存在但在利用时遇到了困难,相关利用链可以执行系统命令却无法得到回显。

因此需要在此基础修改利用链达到命令回显得目的,下边记录的即是此次修改的过程。
Java反序列化回显方法
根据搜索到的资料给出的常见回显方法有以下几种:1、报错回显:要求服务器将报错信息打印到页面。2、写文件:把执行结果写入静态文件置于web目录下再读取结果。3、DNSLOG回显:通过DNSLOG将执行结果带出(未实现)。4、中间件回显:获取response对象,结果写入response对象中带出。5、.....
报错回显
此法要求服务器将报错信息打印出来,修改要反序列化执行的Java代码将结果写入异常再抛出即可实现。


写文件回显
同样修改yso中Gadgets要执行的java代码即可实现,通过将执行结果写入web目录下的静态文件再读取来实现。此法的缺点是当目标不存在可访问静态web目录便无法使用了且要获取web目录的绝对路径,更适用于已知开发框架的反序列化漏洞利用。


DNSLOG
一般作为检测反序列化漏洞是否存在用,贴出URLDNS Gadget的验证过程。


中间件回显
中间件回显是目前所有反序列化工具中最为通用的方法,相比于上述的方法中间件回显有不需目标出网、没有目录限制等优势。中间件回显的原理简单来说是在运行的中间件中获取request&response对象,通过request对象获取执行参数等后将执行结果写入response对象带出完成回显。已知目标中间件为tomcat,参考feihong师傅公开的tomcat全版本回显测试代码来修改yso代码实现利用。Tomcat回显代码:

修改yso payload代码:

修改yso Gadgets代码:

实现回显:

总结
由于本菜鸡学习Java的路程不是很系统,在很多地方卡壳严重,还好最终实现了相关exp的编写。最后,感谢文中所用代码和知识的作者师傅们。
审核编辑 :李倩
-
JAVA
+关注
关注
20文章
2997浏览量
115657 -
代码
+关注
关注
30文章
4941浏览量
73135 -
漏洞
+关注
关注
0文章
205浏览量
15891
原文标题:参考
文章出处:【微信号:Tide安全团队,微信公众号:Tide安全团队】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
如何使用Serde进行序列化和反序列化
Virtex ISERDES_NODELAY对快速4线总线进行反序列化怎么实现?
c语言序列化和反序列化有何区别
SpringMVC JSON框架的自定义序列化与反序列化
java序列化和反序列化范例和JDK类库中的序列化API
java序列化的几种方式
什么是序列化 为什么要序列化

Java反序列化回显方法
评论