<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
**CouchDB** ni **nururishi wa hati** wenye uwezo na nguvu ambao hupanga data kwa kutumia muundo wa **ramani ya funguo-na-thamani** ndani ya kila **hati**. Sehemu ndani ya hati inaweza kuwakilishwa kama **jozi za funguo/thamani, orodha, au ramani**, ikitoa uwezo wa kuhifadhi na kupata data kwa urahisi.
Kila **hati** iliyohifadhiwa kwenye CouchDB inapewa kitambulisho cha kipekee (`_id`) kwenye kiwango cha hati. Kwa kuongezea, kila mabadiliko yaliyofanywa na kuhifadhiwa kwenye hifadhidata yanapewa nambari ya **marekebisho** (`_rev`). Nambari hii ya marekebisho inaruhusu ufuatiliaji na usimamizi wa mabadiliko kwa ufanisi, kurahisisha upatikanaji na usawazishaji wa data ndani ya hifadhidata.
Kabla ya kuanza kuchunguza CouchDB, ni muhimu kuanza kwa kukusanya habari kuhusu mfumo huo. Moja ya njia za kufanya hivyo ni kuchunguza bango la CouchDB. Bango ni ujumbe unaotumwa na mfumo wa CouchDB wakati unapofanya ombi la kwanza. Inaweza kutoa habari muhimu kama toleo la CouchDB na maelezo mengine ya kifaa. Unaweza kutumia zana kama `telnet` au `nc` kuunganisha kwenye seva ya CouchDB na kuchunguza bango.
Tafadhali kumbuka kuwa ikiwa unapata `401 Unauthorized` unapojaribu kufikia mizizi ya couchdb na ujumbe kama huu: `{"error":"unauthorized","reason":"Authentication required."}`**hutaweza kupata** bango au sehemu yoyote nyingine.
Hizi ni sehemu ambapo unaweza kufikia kwa ombi la **GET** na kutoa taarifa muhimu. Unaweza kupata [**sehemu zaidi na maelezo zaidi katika nyaraka za couchdb**](https://docs.couchdb.org/en/latest/api/index.html).
* **`/_active_tasks`** Orodha ya kazi zinazoendelea, ikiwa ni pamoja na aina ya kazi, jina, hali na kitambulisho cha mchakato.
* **`/_all_dbs`** Inarudisha orodha ya maktaba zote katika kifaa cha CouchDB.
* **`/_cluster_setup`** Inarudisha hali ya kifaa au kikundi, kulingana na mchawi wa usanidi wa kikundi.
* **`/_db_updates`** Inarudisha orodha ya matukio yote ya maktaba katika kifaa cha CouchDB. Kuwepo kwa maktaba ya `_global_changes` kunahitajika ili kutumia sehemu hii.
* **`/_membership`** Inaonyesha vifaa ambavyo ni sehemu ya kikundi kama `cluster_nodes`. Uga wa `all_nodes` unaonyesha vifaa vyote ambavyo kifaa hiki kinajua, ikiwa ni pamoja na vile ambavyo ni sehemu ya kikundi.
* **`/_scheduler/jobs`** Orodha ya kazi za nakala. Maelezo ya kila kazi yatajumuisha habari ya chanzo na lengo, kitambulisho cha nakala, historia ya matukio ya hivi karibuni, na mambo mengine machache.
* **`/_scheduler/docs`** Orodha ya hali za hati za nakala. Inajumuisha habari kuhusu hati zote, hata katika hali za `completed` na `failed`. Kwa kila hati inarudisha kitambulisho cha hati, maktaba, kitambulisho cha nakala, chanzo na lengo, na habari nyingine.
* **`/_node/{node-name}`** Sehemu ya `/_node/{node-name}` inaweza kutumika kuthibitisha jina la nodi ya Erlang ya seva inayoprocess ombi. Hii ni muhimu zaidi unapofikia `/_node/_local` ili kupata habari hii.
* **`/_node/{node-name}/_stats`** Rasilimali ya `_stats` inarudisha kitu cha JSON kinachojumuisha takwimu za seva inayofanya kazi. Kamba ya maandishi `_local` inatumika kama kifupi cha jina la nodi ya ndani, kwa hivyo kwa URL zote za takwimu, `{node-name}` inaweza kubadilishwa na `_local`, ili kuingiliana na takwimu za nodi ya ndani.
* **`/_node/{node-name}/_system`** Rasilimali ya \_system inarudisha kitu cha JSON kinachojumuisha takwimu mbalimbali za kiwango cha mfumo kwa seva inayofanya kazi. Unaweza kutumia `_local` kama {node-name} ili kupata habari ya nodi ya sasa.
* **`/_up`** Inathibitisha kuwa seva iko juu, inafanya kazi, na iko tayari kujibu maombi. Ikiwa [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode) ni `kweli` au `nolb`, sehemu itarudisha jibu la 404.
* **`/_uuids`** Inaomba kitambulisho kimoja au zaidi cha Kitambulisho cha Kipekee cha Kipekee (UUIDs) kutoka kifaa cha CouchDB.
* **`/_reshard`** Inarudisha idadi ya kazi zilizokamilika, zilizoshindwa, zinazoendelea, zilizosimamishwa, na jumla pamoja na hali ya kugawanya upya kwenye kikundi.
Kutokana na tofauti kati ya wapangaji wa JSON wa Erlang na JavaScript, unaweza **kuunda mtumiaji wa admin** na sifa za `hacktricks:hacktricks` kwa ombi lifuatalo:
Katika nyaraka za CouchDB, hasa katika sehemu inayohusu usanidi wa kikundi ([kiungo](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup)), matumizi ya bandari na CouchDB katika hali ya kikundi yanajadiliwa. Imetajwa kuwa, kama katika hali ya kujitegemea, bandari `5984` hutumiwa. Kwa kuongezea, bandari `5986` ni kwa ajili ya API za ndani ya kifaa, na muhimu zaidi, Erlang inahitaji bandari ya TCP `4369` kwa Erlang Port Mapper Daemon (EPMD), inayorahisisha mawasiliano ya kifaa ndani ya kikundi cha Erlang. Usanidi huu unajenga mtandao ambapo kila kifaa kimeunganishwa na kila kifaa kingine.
Onyo muhimu la usalama linasisitizwa kuhusu bandari `4369`. Ikiwa bandari hii inapatikana kupitia Mtandao au mtandao usioaminika, usalama wa mfumo unategemea sana kitambulisho kipekee kinachojulikana kama "kuki." Kuki hii inafanya kazi kama kinga. Kwa mfano, katika orodha ya michakato fulani, kuki inayoitwa "monster" inaweza kuonekana, ikionyesha jukumu lake katika mfumo wa usalama wa mfumo.
Kwa wale wanaopenda kuelewa jinsi "cookie" hii inaweza kutumiwa kwa Remote Code Execution (RCE) ndani ya muktadha wa mifumo ya Erlang, sehemu maalum imeandikwa kwa ajili ya kusoma zaidi. Inaelezea njia za kutumia "cookies" za Erlang kwa njia zisizoidhinishwa ili kupata udhibiti wa mifumo. Unaweza **[kuchunguza mwongozo kamili wa kutumia "cookies" za Erlang kwa RCE hapa](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.
Ugunduzi wa hivi karibuni wa udhaifu, CVE-2018-8007, unaathiri Apache CouchDB na ulichunguzwa, ukiweka wazi kuwa kutumia udhaifu huu kunahitaji ruhusa ya kuandika kwenye faili ya `local.ini`. Ingawa haifai moja kwa moja kwa mfumo wa lengo la awali kutokana na vizuizi vya usalama, marekebisho yalifanywa ili kutoa ruhusa ya kuandika kwenye faili ya `local.ini` kwa madhumuni ya uchunguzi. Hatua za kina na mifano ya nambari zinatolewa hapa chini, zikionyesha mchakato huo.
Kuendeleza udhaifu huu, amri ya curl inatekelezwa, ikilenga usanidi wa `cors/origins` katika `local.ini`. Hii inaingiza chanzo kipya pamoja na amri za ziada chini ya sehemu ya `[os_daemons]`, lengo likiwa ni kutekeleza nambari ya aina yoyote:
Kwa sasa, faili inayotarajiwa (`/tmp/0xdf`) haipo, ikionyesha kuwa amri iliyochomwa haijaendeshwa bado. Uchunguzi zaidi unaonyesha kuwa kuna michakato inayohusiana na CouchDB inayoendelea, ikiwa ni pamoja na moja ambayo inaweza kutekeleza amri iliyochomwa:
Kwa kumaliza mchakato wa CouchDB uliothibitishwa na kuruhusu mfumo kuizindua tena kiotomatiki, utekelezaji wa amri iliyowekwa ndani unaanzishwa, kama inavyothibitishwa na uwepo wa faili iliyokosekana awali:
Uchunguzi huu unathibitisha uwezekano wa kufaidika na CVE-2018-8007 chini ya hali maalum, hasa hitaji la kupata ufikiaji wa kuandika kwenye faili ya `local.ini`. Mifano ya nambari iliyotolewa na hatua za utaratibu zinatoa mwongozo wazi wa kuiga shambulio katika mazingira yaliyodhibitiwa.
Kwa maelezo zaidi kuhusu CVE-2018-8007, angalia taarifa ya mdsec: [CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/).
Udhaifu unaojulikana kama CVE-2017-12636 ulichunguzwa, ambao unawezesha utekelezaji wa nambari kupitia mchakato wa CouchDB, ingawa mipangilio maalum inaweza kuzuia utumiaji wake. Licha ya marejeleo mengi ya Proof of Concept (POC) yanayopatikana mtandaoni, marekebisho yanahitajika ili kutumia udhaifu huo kwenye toleo la CouchDB 2, tofauti na toleo la kawaida linalolengwa la 1.x. Hatua za awali zinahusisha kuthibitisha toleo la CouchDB na kuhakikisha kutokuwepo kwa njia ya seva ya maswali inayotarajiwa.
Uchunguzi zaidi ulifunua matatizo ya ruhusa na faili ya `local.ini`, ambayo haikuweza kuandikwa. Kwa kubadilisha ruhusa za faili kwa kutumia upatikanaji wa mizizi au homer, ilikuwa inawezekana kuendelea:
Majaribio ya baadaye ya kuongeza seva ya utafutaji yalifanikiwa, kama inavyothibitishwa na kutokuwepo kwa ujumbe wa kosa katika majibu. Kubadilisha faili ya `local.ini` kwa mafanikio kulithibitishwa kupitia kulinganisha faili:
Mchakato uliendelea na uundaji wa kisanduku cha habari na hati, ukifuatiwa na jaribio la kutekeleza nambari kupitia ramani ya maoni ya desturi inayolingana na seva ya utafutaji iliyopewa hivi karibuni:
**[Muhtasari](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0)** na mzigo mbadala hutoa ufahamu zaidi juu ya kutumia CVE-2017-12636 chini ya hali maalum. **Rasilimali muhimu** za kutumia udhaifu huu ni pamoja na:
<summary><strong>Jifunze kudukua AWS kutoka sifuri hadi shujaa na</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ikiwa unataka kuona **kampuni yako inatangazwa katika HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.