Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
**CouchDB**는 **문서 지향 데이터베이스**로, 각 **문서** 내에서 **키-값 맵** 구조를 사용하여 데이터를 조직하는 다재다능하고 강력한 데이터베이스입니다. 문서 내의 필드는 **키/값 쌍, 리스트 또는 맵**으로 표현될 수 있어 데이터 저장 및 검색의 유연성을 제공합니다.
CouchDB에 저장된 모든 **문서**는 문서 수준에서 **고유 식별자**(`_id`)가 할당됩니다. 또한, 데이터베이스에 저장된 모든 수정 사항은 **수정 번호**(`_rev`)가 할당됩니다. 이 수정 번호는 **변경 사항의 효율적인 추적 및 관리**를 가능하게 하여 데이터베이스 내에서 데이터의 용이한 검색 및 동기화를 촉진합니다.
* **`/_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`을 사용할 수 있습니다.
* **`/_up`** 서버가 작동 중이며 요청에 응답할 준비가 되었음을 확인합니다. [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode)가 `true` 또는 `nolb`인 경우, 엔드포인트는 404 응답을 반환합니다.
CouchDB 문서에서는 클러스터 설정과 관련된 섹션에서 ([링크](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup)), 클러스터 모드에서 CouchDB가 사용하는 포트에 대해 논의합니다. 독립 실행 모드와 마찬가지로 포트 `5984`가 사용된다고 언급되어 있습니다. 또한, 포트 `5986`은 노드 로컬 API에 사용되며, 중요하게도 Erlang은 Erlang 포트 매퍼 데몬(EPMD)을 위해 TCP 포트 `4369`가 필요하여 Erlang 클러스터 내에서 노드 간 통신을 용이하게 합니다. 이 설정은 각 노드가 다른 모든 노드와 연결된 네트워크를 형성합니다.
포트 `4369`에 대한 중요한 보안 권고가 강조됩니다. 이 포트가 인터넷이나 신뢰할 수 없는 네트워크에서 접근 가능하게 되면, 시스템의 보안은 "쿠키"라는 고유 식별자에 크게 의존하게 됩니다. 이 쿠키는 보호 장치 역할을 합니다. 예를 들어, 주어진 프로세스 목록에서 "monster"라는 이름의 쿠키가 관찰될 수 있으며, 이는 시스템의 보안 프레임워크에서의 운영 역할을 나타냅니다.
원격 코드 실행(RCE) 맥락에서 이 "쿠키"가 어떻게 악용될 수 있는지 이해하고자 하는 분들을 위해, 추가 읽기를 위한 전용 섹션이 마련되어 있습니다. 이는 시스템에 대한 제어를 달성하기 위해 비인가 방식으로 Erlang 쿠키를 활용하는 방법론을 자세히 설명합니다. **[여기에서 RCE를 위한 Erlang 쿠키 악용에 대한 자세한 가이드를 탐색할 수 있습니다](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.
최근 공개된 취약점인 CVE-2018-8007은 Apache CouchDB에 영향을 미치며, 악용하려면 `local.ini` 파일에 대한 쓰기 권한이 필요함을 밝혔습니다. 보안 제한으로 인해 초기 대상 시스템에 직접 적용할 수는 없지만, 탐색 목적으로 `local.ini` 파일에 대한 쓰기 접근을 부여하기 위해 수정이 이루어졌습니다. 아래에는 이 과정을 보여주는 자세한 단계와 코드 예제가 제공됩니다.
Initially, the expected file (`/tmp/0xdf`) does not exist, indicating that the injected command has not been executed yet. Further investigation reveals that processes related to CouchDB are running, including one that could potentially execute the injected command:
초기에는 예상되는 파일(`/tmp/0xdf`)이 존재하지 않으며, 이는 주입된 명령이 아직 실행되지 않았음을 나타냅니다. 추가 조사를 통해 CouchDB와 관련된 프로세스가 실행되고 있으며, 그 중 하나는 주입된 명령을 실행할 수 있는 가능성이 있습니다:
CVE-2018-8007에 대한 자세한 내용은 mdsec의 권고를 참조하십시오: [CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/).
CouchDB 프로세스를 통해 코드 실행을 가능하게 하는 CVE-2017-12636으로 알려진 취약점이 탐색되었습니다. 그러나 특정 구성으로 인해 악용이 방지될 수 있습니다. 온라인에서 수많은 개념 증명(POC) 참조가 있지만, CouchDB 버전 2에서 취약점을 악용하기 위해서는 조정이 필요하며, 일반적으로 타겟팅되는 버전 1.x와 다릅니다. 초기 단계는 CouchDB 버전을 확인하고 예상 쿼리 서버 경로가 없음을 확인하는 것입니다:
A **[요약](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0)**은 특정 조건에서 CVE-2017-12636을 악용하는 데 대한 추가 통찰력을 제공합니다. 이 취약점을 악용하기 위한 **유용한 리소스**는 다음과 같습니다:
Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.