Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/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로 보호된 대상들을 포함합니다.

저장소 보기
2120일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

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 서버에서 원격 코드 실행을 달성합니다.

프로젝트 구조

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 소스 추출

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

2. 랩 환경 시작

docker compose up -d

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

http://localhost:8080

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

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

3. 공개 설문 생성

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

설문 URL 예시:

http://localhost:8080/surveys/?s=ABC123XYZ

설문 해시: ABC123XYZ

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

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

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

RE 지침

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

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

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

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 종속성 설치

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를 생성합니다. 나열된 모든 호스트에 대한 법적 허가에 대한 책임은 귀하에게 있습니다.

# targets.txt
redcap.client.example.com
10.0.0.5
192.168.1.100

예시

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

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

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

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

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

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

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은 다음을 표시합니다:

[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에 추가됩니다:

[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)
도구 다운로드