
CVE-2026-66066 (KindaRails2Shell) PoC - Rails Active Storage/libvips 임의 파일 읽기로 RCE 유도; 승인된 보안 테스트용
Ruby on Rails Active Storage + libvips 임의 파일 읽기 → 조건부 원격 코드 실행(RCE) PoC 도구.
단일 파일, Python 3.11+ 순수 표준 라이브러리 제로 의존성, MAT/HDF5 혼합 페이로드, 순수 Python PNG 픽셀 디코더, 오프셋 읽기, 키 복구, RCE 및 스캔 모드 내장.
Rails는 클라이언트가 보고한 content_type(직접 업로드 엔드포인트)을 신뢰하고, libvips는 파일의 magic bytes를 스니핑합니다—동일한 파일이 두 계층에서 서로 다른 형식으로 취급됩니다. 공격자는 '처음 10바이트 텍스트가 MATLAB 5.0을 선언하고, 바이트 124-125의 버전 워드가 MAT 7.3(HDF5)을 선언하는' 혼합 파일을 구성하여, HDF5 External File List 메커니즘을 통해 서버의 임의 파일(기본값 /proc/self/environ)을 읽고, SECRET_KEY_BASE를 복구한 후 variation 서명을 위조하여 조건부로 명령 실행을 달성합니다.
< 7.2.3.2 / >= 8.0, < 8.0.5.1 / >= 8.1, < 8.1.3.1python3 kr2s.py <command> [options]
| 명령 | 설명 |
|---|---|
check | blob을 업로드하여 대상 파일을 읽을 수 있는지 확인(침습적) |
read <path> | 지정된 파일의 고정 크기 접두사 복구(바이너리 출력) |
secrets | 프로세스 환경 변수와 Rails 자격 증명 파일 복구(기본적으로 마스킹, --show-full로 전체 값 표시) |
rce | secret_key_base를 복구하고 조건부로 명령 실행(--skb로 환경 읽기 건너뛰기 가능) |
probe | 대상에서 사용 가능한 libvips 비신뢰 로더 탐지 |
scan | 멀티스레드 수동/능동 스캔(--active로 악성 blob을 업로드하여 canary 읽기 수행) |
공통 매개변수: 대상 URL / 호스트명 / 배치 파일, --entry, --proxy, 사용자 지정 경로, TLS 옵션, 타임아웃, User-Agent 등, 자세한 내용은 python3 kr2s.py --help 참조.
cd lab
RAILS_VERSION=8.1.3 docker compose up --build
보안 연구, 취약점 검증 및 방어적 테스트에만 사용하십시오. read / check / scan --active / rce 명령은 대상에 영구 blob을 업로드하고 대상에서 명령을 실행하므로, 파기 가능한 Docker lab에서 실행하고 무단 대상에는 사용하지 마십시오.