<summary><strong>Leer AWS-hacking van nul tot held met</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai**, kyk na die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou hacktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.
**CouchDB** is 'n veelsydige en kragtige **dokumentgeoriënteerde databasis** wat data organiseer deur gebruik te maak van 'n **sleutel-waardekaart**-struktuur binne elke **dokument**. Velde binne die dokument kan voorgestel word as **sleutel/waardepare, lysies of kaarte**, wat buigsaamheid bied in data-opberging en -herwinning.
Elke **dokument** wat in CouchDB gestoor word, word 'n **unieke identifiseerder** (`_id`) op dokumentvlak toegewys. Daarbenewens word elke wysiging wat in die databasis aangebring en gestoor word, 'n **revisienommer** (`_rev`) toegewys. Hierdie revisienommer maak doeltreffende **opsporing en bestuur van veranderinge** moontlik, wat die maklike herwinning en synchronisering van data binne die databasis fasiliteer.
Die banner van 'n CouchDB-diens kan verkry word deur die diens se TCP-poort te skandeer. Die banner bevat inligting soos die weergawe van die diens en die naam van die databasis. Hier is 'n voorbeeld van 'n CouchDB-banner:
Let daarop dat as jy toegang tot die wortel van couchdb kry, ontvang jy 'n `401 Unauthorized` met iets soos dit: `{"error":"unauthorized","reason":"Authentication required."}`**jy sal nie in staat wees om** die banier of enige ander eindpunt te bereik nie.
Dit is die eindpunte waar jy toegang kan verkry met 'n **GET** versoek en interessante inligting kan onttrek. Jy kan [**meer eindpunte en meer gedetailleerde beskrywings in die couchdb dokumentasie vind**](https://docs.couchdb.org/en/latest/api/index.html).
* **`/_active_tasks`** Lys van lopende take, insluitend die taak tipe, naam, status en proses ID.
* **`/_all_dbs`** Gee 'n lys van al die databasisse in die CouchDB instansie.
* **`/_cluster_setup`** Gee die status van die node of kluster, volgens die kluster opset wizard.
* **`/_db_updates`** Gee 'n lys van alle databasis gebeure in die CouchDB instansie. Die bestaan van die `_global_changes` databasis is nodig om hierdie eindpunt te gebruik.
* **`/_membership`** Vertoon die nodes wat deel is van die kluster as `cluster_nodes`. Die veld `all_nodes` vertoon alle nodes wat hierdie node van weet, insluitend diegene wat deel is van die kluster.
* **`/_scheduler/jobs`** Lys van replikasie take. Elke taak beskrywing sal bron en teiken inligting, replikasie ID, 'n geskiedenis van onlangse gebeure, en 'n paar ander dinge insluit.
* **`/_scheduler/docs`** Lys van replikasie dokument state. Sluit inligting in oor alle dokumente, selfs in `voltooide` en `mislukte` toestande. Vir elke dokument gee dit die dokument ID, die databasis, die replikasie ID, bron en teiken, en ander inligting.
* **`/_node/{node-name}`** Die `/_node/{node-name}` eindpunt kan gebruik word om die Erlang node naam van die bediener wat die versoek verwerk, te bevestig. Dit is die nuttigste wanneer jy toegang tot `/_node/_local` verkry om hierdie inligting te herwin.
* **`/_node/{node-name}/_stats`** Die `_stats` hulpbron gee 'n JSON voorwerp wat die statistieke vir die lopende bediener bevat. Die letterlike string `_local` dien as 'n skuilnaam vir die plaaslike node naam, so vir alle statistieke URL's kan `{node-name}` vervang word met `_local`, om met die plaaslike node se statistieke te kommunikeer.
* **`/_node/{node-name}/_system`** Die \_system hulpbron gee 'n JSON voorwerp wat verskeie stelselvlak statistieke vir die lopende bediener bevat\_.\_ Jy kan \_\_`_local` as {node-name} gebruik om die huidige node inligting te kry.
* **`/_up`** Bevestig dat die bediener op, besig is, en gereed is om op versoek te reageer. As [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode) `true` of `nolb` is, sal die eindpunt 'n 404 respons gee.
* **`/_uuids`** Versoek een of meer Universally Unique Identifiers (UUID's) van die CouchDB instansie.
* **`/_reshard`** Gee 'n telling van voltooide, mislukte, lopende, gestop, en totale take, tesame met die toestand van resharding op die kluster.
Om geldige Geldeenhede te vind, kan jy probeer om die diens te **bruteforce** (kragtig aanval) [**bruteforce die diens**](../generic-methodologies-and-resources/brute-force.md#couchdb).
In die CouchDB dokumentasie, spesifiek in die gedeelte wat handel oor die opstel van 'n klasternetwerk ([skakel](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup)), word die gebruik van poorte deur CouchDB in 'n klasterverbinding bespreek. Daar word genoem dat, soos in enkelvoudige modus, poort `5984` gebruik word. Daarbenewens is poort `5986` vir node-plaaslike API's, en belangrik, Erlang vereis TCP-poort `4369` vir die Erlang Port Mapper Daemon (EPMD), wat node kommunikasie in 'n Erlang-klasternetwerk fasiliteer. Hierdie opstelling vorm 'n netwerk waar elke node met elke ander node gekoppel is.
'n Belangrike sekuriteitsadvies word uitgelig met betrekking tot poort `4369`. As hierdie poort oopgestel word vir die internet of enige onbetroubare netwerk, is die stelsel se sekuriteit sterk afhanklik van 'n unieke identifiseerder wat bekend staan as die "koekie." Hierdie koekie tree op as 'n beskerming. Byvoorbeeld, in 'n gegewe proseslys kan die koekie genaamd "monster" waargeneem word, wat dui op sy operasionele rol in die stelsel se sekuriteitsraamwerk.
Vir diegene wat belangstel om te verstaan hoe hierdie "koekie" uitgebuit kan word vir Remote Code Execution (RCE) binne die konteks van Erlang-stelsels, is daar 'n toegewyde afdeling beskikbaar vir verdere leeswerk. Dit beskryf die metodologieë vir die benutting van Erlang-koekies op ongemagtigde wyse om beheer oor stelsels te verkry. Jy kan **[die gedetailleerde gids oor die misbruik van Erlang-koekies vir RCE hier verken](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.
'n Onlangs bekendgemaakte kwesbaarheid, CVE-2018-8007, wat Apache CouchDB affekteer, is ondersoek en daar is bevind dat uitbuiting skryftoestemmings vir die `local.ini`-lêer vereis. Alhoewel dit nie direk van toepassing is op die aanvanklike teikensisteem as gevolg van sekuriteitsbeperkings nie, is wysigings aangebring om skryftoegang tot die `local.ini`-lêer te verleen vir verkenningsdoeleindes. Gedetailleerde stappe en kodevoorbeelde word hieronder verskaf om die proses te demonstreer.
Om die kwesbaarheid uit te buit, word 'n curl-opdrag uitgevoer wat die `cors/origins`-konfigurasie in `local.ini` teiken. Dit voeg 'n nuwe oorsprong by, tesame met addisionele opdragte onder die `[os_daemons]`-afdeling, met die doel om willekeurige kode uit te voer:
Aanvanklik bestaan die verwagte lêer (`/tmp/0xdf`) nie, wat aandui dat die ingeslote bevel nog nie uitgevoer is nie. Verdere ondersoek toon dat prosesse wat verband hou met CouchDB uitgevoer word, insluitend een wat moontlik die ingeslote bevel kan uitvoer:
deur die geïdentifiseerde CouchDB-proses te beëindig en die stelsel toe te laat om dit outomaties te herlaai, word die uitvoering van die ingeslote bevel geaktiveer, bevestig deur die bestaan van die vorige ontbrekende lêer:
Hierdie verkenning bevestig die lewensvatbaarheid van CVE-2018-8007 uitbuiting onder spesifieke omstandighede, veral die vereiste vir skryftoegang tot die `local.ini` lêer. Die voorsiene kodevoorbeelde en prosedurele stappe bied 'n duidelike gids vir die herhalings van die uitbuiting in 'n beheerde omgewing.
Vir meer besonderhede oor CVE-2018-8007, verwys na die advies deur mdsec: [CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/).
'n Kwesbaarheid bekend as CVE-2017-12636 is ondersoek, wat kodering moontlik maak via die CouchDB-proses, alhoewel spesifieke konfigurasies die uitbuiting kan voorkom. Ten spyte van talle Proof of Concept (POC) verwysings wat aanlyn beskikbaar is, is aanpassings nodig om die kwesbaarheid op CouchDB-weergawe 2 uit te buit, wat verskil van die algemeen geteikende weergawe 1.x. Die aanvanklike stappe behels die verifieer van die CouchDB-weergawe en die bevestiging van die afwesigheid van die verwagte vraagbedienerpad:
Verdere ondersoek het toestemmingsprobleme met die `local.ini`-lêer aan die lig gebring, wat nie skryfbaar was nie. Deur die lêerregte te wysig met root- of homer-toegang, was dit moontlik om voort te gaan:
Daaropvolgende pogings om die navraagbediener by te voeg, was suksesvol, soos gedemonstreer deur die afwesigheid van foutboodskappe in die respons. Die suksesvolle wysiging van die `local.ini`-lêer is bevestig deur lêervergelyking:
Die proses het voortgegaan met die skep van 'n databasis en 'n dokument, gevolg deur 'n poging om kode uit te voer deur middel van 'n aangepaste aansig wat gekoppel is aan die nuut toegevoegde navraagbediener:
'n **[opsomming](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0)** met 'n alternatiewe lading bied verdere insigte in die uitbuiting van CVE-2017-12636 onder spesifieke omstandighede. **Nuttige hulpbronne** vir die uitbuiting van hierdie kwesbaarheid sluit in:
<summary><strong>Leer AWS-hacking van nul tot held met</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* As jy wil sien jou **maatskappy geadverteer in HackTricks** of **HackTricks aflaai in PDF** Kyk die [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**The PEASS Family**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-repos.