Java反序列化回显方法

电子说

1.2w人已加入

描述

前言

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

JAVA

因此需要在此基础修改利用链达到命令回显得目的,下边记录的即是此次修改的过程。

Java反序列化回显方法

根据搜索到的资料给出的常见回显方法有以下几种:1、报错回显:要求服务器将报错信息打印到页面。2、写文件:把执行结果写入静态文件置于web目录下再读取结果。3、DNSLOG回显:通过DNSLOG将执行结果带出(未实现)。4、中间件回显:获取response对象,结果写入response对象中带出。5、.....

报错回显

此法要求服务器将报错信息打印出来,修改要反序列化执行的Java代码将结果写入异常再抛出即可实现。

JAVA

 

JAVA

写文件回显

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

JAVA

 

JAVA

DNSLOG

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

JAVA

 

JAVA

中间件回显

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

JAVA

修改yso payload代码:

JAVA

修改yso Gadgets代码:

JAVA

实现回显:

JAVA

总结

由于本菜鸡学习Java的路程不是很系统,在很多地方卡壳严重,还好最终实现了相关exp的编写。最后,感谢文中所用代码和知识的作者师傅们。

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分