5984,6984 - Pentesting CouchDB
Taarifa Msingi
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.
Bandari ya chaguo-msingi: 5984(http), 6984(https)
Uchambuzi wa Kiotomatiki
Bango
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.
Hii inatoa ombi la GET kwa mfano wa CouchDB iliyosakinishwa. Jibu linapaswa kuonekana kama moja ya yafuatayo:
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.
Uchunguzi wa Taarifa
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.
/_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 kamacluster_nodes
. Uga waall_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 zacompleted
nafailed
. Kwa kila hati inarudisha kitambulisho cha hati, maktaba, kitambulisho cha nakala, chanzo na lengo, na habari nyingine./_scheduler/docs/{replicator_db}
/_scheduler/docs/{replicator_db}/{docid}
/_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./_node/{node-name}/_restart
/_up
Inathibitisha kuwa seva iko juu, inafanya kazi, na iko tayari kujibu maombi. Ikiwamaintenance_mode
nikweli
aunolb
, 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.
Taarifa zaidi ya kuvutia inaweza kupatikana kama ilivyoelezwa hapa: https://lzone.de/cheat-sheet/CouchDB
Orodha ya Maktaba
Ikiwa ombi hilo linajibu na 401 unauthorised, basi unahitaji vyeti halali ili kupata ufikiaji wa hifadhidata:
Ili kupata Vitambulisho halali unaweza jaribu kuvunja nguvu huduma.
Hii ni mfano wa jibu la couchdb unapokuwa na mamlaka ya kutosha ya kuorodhesha maktaba (Ni orodha tu ya maktaba):
Taarifa za Database
Unaweza kupata taarifa za database (kama vile idadi ya faili na ukubwa) kwa kufikia jina la database:
Orodha ya Nyaraka
Taja kila kuingia ndani ya kuhifadhi data
Soma Waraka
Soma maudhui ya waraka ndani ya kuhifadhi data:
Kuongeza Uteuzi wa Haki za CouchDB CVE-2017-12635
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:
Maelezo zaidi kuhusu kasoro hii hapa.
CouchDB RCE
Uchambuzi wa Usalama wa Kuki ya Erlang
Mfano kutoka hapa.
Katika nyaraka za CouchDB, hasa katika sehemu inayohusu usanidi wa kikundi (kiungo), 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.
Kutumia CVE-2018-8007 kwa Kurekebisha local.ini
Mfano kutoka hapa.
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.
Kwanza, mazingira yanatayarishwa kwa kuhakikisha kuwa faili ya local.ini
inaweza kuandikwa, ikathibitishwa kwa kuorodhesha ruhusa:
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:
Uthibitisho unaofuata unaonyesha usanidi ulioingizwa katika local.ini
, ukilinganisha na nakala rudufu ili kuonyesha mabadiliko:
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.
Uchunguzi wa CVE-2017-12636 na Ruhusa ya Kuandika kwenye local.ini
Mfano kutoka hapa.
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.
Kuwezesha CouchDB toleo 2.0, njia mpya hutumiwa:
Majaribio ya kuongeza na kutekeleza seva mpya ya maswali yalikumbana na makosa yanayohusiana na ruhusa, kama ilivyodhihirishwa na matokeo yafuatayo:
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 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:
Shodan
port:5984 couchdb
Marejeo
Last updated