Shiro-721反序列化漏洞复现总结

8 篇文章 0 订阅
2 篇文章 0 订阅

前言

    Apache Shiro的一些版本上存在一些高危代码执行漏洞,Apache Shiro提供的RememberMe字段,Shiro-550和Shiro-721(Apache Shiro Padding Oracle Attack)是常见的Shiro反序列化漏洞,Shiro-550的复现可以查看上一篇blog:https://blog.csdn.net/weixin_44283446/article/details/115622989?spm=1001.2014.3001.5501,网上现存有很多复现过程在真实情况下,会遇见一些突发问题,本文尽量梳理清楚整个过程,以及整个过程中会遇见的问题。(整个过程中,会有很多问题需要解决,网上的说明并没有很完整,blog暂时没有更完,之后有空再更上)

Shiro-721反序列化漏洞原理

    在用户进行登录的时候,Apache Shiro提供RemenberMe功能,可以存储cookie,期间使用的是AES-128-CBC进行加密,可以通过Padding Oracle加密生成的攻击代码来重新构造一个恶意的rememberMe字段,重新请求网站,进行反序列化攻击,最终导致任意代码的执行。

影响版本

  • Apache < 1.4.2

环境搭建

环境说明

  • Kali GNU/Linux
  • Apache Shiro 1.4.1
  • tomcat:8-jre8

环境搭建与漏洞复现

环境搭建
  1. 启动docker:
    systemctl start docker(如果没有docker,需要先安装docker,可以使用命令:sudo apt updateapt install docker.io两条命令进行安装)
  2. 利用docker获取dockerfile
    git clone https://github.com/3ndz/Shiro-721.git(此处如果没有git,需要使用命令yum install git先安装一下git)
    在这里插入图片描述
    进入Shiro-721 Docker的当前目录:cd Shiro-721/Docker
    使用当前目录的 Dockerfile 创建镜像:docker build -t shiro-721 .(不要忘记最后这个“.”点,官方参考:https://docs.docker.com/engine/reference/commandline/build/,blog参考:https://my.oschina.net/mythss/blog/3009856
    在这里插入图片描述
    创建一个新的容器:docker run -p 8080:8080 -d shiro-721-p指定将主机的8080端口映射到容器的8080端口,-d表示在后台运行容器,并返回容器ID)
  3. 查看是否搭建成功:docker ps(图示是已成功创建Shiro-721搭建成功)
    在这里插入图片描述
  4. 打开kali的firefox,访问127.0.0.1:8080,出现此页面即可:
    在这里插入图片描述
  5. Docker安装Tomcat:(此处如果想要详细了解可以参考:https://www.runoob.com/docker/docker-install-tomcat.html
    先查看Tomcat的可用版本:docker search tomcat
    在这里插入图片描述
    拉取官方的镜像docker pull tomcat:(此处如果报no space left on device错误,是因为kali的磁盘空间不足)
    在这里插入图片描述

docker run -p 8080:8080 tomcat:latest(将主机的8080端口映射到容器的8080端口,tomcat:latest是指最新版本,此处需要先使用命令docker stop CONTAINER ID/NAMES关闭之前开启的8080端口,CONTAINER ID和NAMES可以通过docker ps -a查看,此处如果依旧不成功,可以使用docker run -it -d -p 8080:8080 tomcat:latest命令进行尝试)
将编译完成获取到的 samples-web-1.4.1.war 包( samples/target/中)拷贝到 Tomcat 的 webapps 目录下:docker cp samples-web-1.4.1.war 0e9:/usr/local/tomcat/webapps/(0e9是Docker的CONTAINER ID的前三个字符,/usr/local/tomcat/webapps/是docker中tomcat里webapps的路径,可以使用docker exec -it caf286ee1bf5 bash查看一下)
上述如果没有出现问题,打开firefox,输入:http://localhost:8080/samples-web-1.4.1/login.jsp,出现以下画面:
在这里插入图片描述

漏洞复现
  1. 开启抓包
    打开Burp Suite,开启抓包:
    在这里插入图片描述
    然后给firefox设置代理(选择add-ons):
    在这里插入图片描述
    然后在搜索框搜索找到这个FoxyProxy Standard
    在这里插入图片描述
    点击后添加(add):
    在这里插入图片描述
    在firefox的右上角找到,选择Options,进入之后,点击“Add”:
    在这里插入图片描述
    添加IP和端口(端口设的8081,前面已经占用了8080),点击Save:
    在这里插入图片描述

开启代理:
在这里插入图片描述

  1. 开始抓包
    登录测试账户root,密码是secret,选择Remember Me,点击Login:
    在这里插入图片描述
    抓取cookie:点击Forword,然后出现Set-Cookie
    在这里插入图片描述
  2. 安装Maven环境
    使用java利用cookie生成Payload,此处需要安装下一步所需环境Maven:
    远程下载Maven包:wget https://downloads.apache.org/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
    在这里插入图片描述
    解压到/usr/local目录下:tar zxvf apache-maven-3.6.3-bin.tar.gz -C /usr/local
    在这里插入图片描述
    修改配置文件:
    vi /etc/profile
    在profile文件中设置环境变量:
    export MAVEN_HOME=/usr/local/apache-maven-3.6.3 export PATH=$MAVEN_HOME/bin:$PATH
    在这里插入图片描述
    让/etc/profile文件修改后立即生效:source /etc/profile,在控制台输入命令mvn -v,如果能看到 Maven 相关版本信息,则说明 Maven 已经安装成功(参考:https://www.runoob.com/maven/maven-setup.html):
    在这里插入图片描述
    添加阿里镜像库地址:
    打开配置文件:vim /usr/local/apache-maven-3.6.3/conf/setting.xml
    打开后,找到mirrors节点,添加以下内容:
<mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
</mirror>

如图所示:
在这里插入图片描述
4. 使用Java反序列化工具 ysoserial
拷贝一个 Git 仓库到本地(git clone命令可以简单参考学习一下:https://www.runoob.com/git/git-clone.html):git clone https://github.com/frohoff/ysoserial.git
在这里插入图片描述
持续更新…

参考

https://github.com/inspiringz/Shiro-721
https://blog.csdn.net/qq_43645782/article/details/106060334
https://www.cnblogs.com/backlion/p/14077791.html

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值