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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2026-42945 — CVE-2026-42945을 분석하여 NGINX rewrite 힙 오버런을 다루며, 차등 탐지기(differential detector), 결정적 DoS PoC, 그리고 검증이 포함된 크레딧이 인정된 RCE 포트를 제공합니다. | Kitploit
도구/GitHubGitHub/franklinf25/cve-2026-42945
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationBinary Exploitation
GitHubfranklinf25/cve-2026-42945

cve-2026-42945

CVE-2026-42945을 분석하여 NGINX rewrite 힙 오버런을 다루며, 차등 탐지기(differential detector), 결정적 DoS PoC, 그리고 검증이 포함된 크레딧이 인정된 RCE 포트를 제공합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-42945 — NGINX Rewrite 힙 오버런: 분석, DoS 및 크레딧 표기 RCE 포트

CVE-2026-42945(CVSS 4.0 9.2 CRITICAL)에 대한 보안 연구: NGINX 스크립트 엔진의 힙 버퍼 오버런으로, 교체 문자열에 인자가 포함된 rewrite(예: rewrite ^(.*) /new?c=1;)가 엔진의 is_args 플래그를 설정한 채 절대 해제하지 않아 — 이후 set/if에서 평가되는 모든 캡처($1)가 URI 이스케이프가 적용된 채 이스케이프되지 않은 길이로 크기가 할당된 버퍼에 복사됩니다. 요청 URI에 %XX 이스케이프 또는 +가 포함된 모든 클라이언트가 인증 없이 접근 가능합니다.

결과(1단계): 안전한 차등 탐지기(취약한 1.30.0 vs 수정된 1.30.1, 크래시 0회) 및 결정적 워커 DoS(SIGSEGV, 코어 덤프 — 응답이 먼저 완전히 제공됨). 둘 다 커밋 71d62c6에서 소스로 빌드한 버전에 대해 재현되었습니다.

결과(2단계): 리포터의 RCE에 대한 크레딧 표기 포트 — 워커 사용자(nobody)로 system() 실행, lab/rce/ 아래에 복제된 리포터의 고정 빌드에 대해 3/3 클린 실행으로 재현되었습니다. 공격 기법은 Leo Lin(DepthFirst) 의 것입니다. 여기서 원본인 것 vs 기존 연구 및 라이트업의 기존 연구 섹션을 참조하세요.

검증 매트릭스

주장증거
근본 원인을 블로그가 아닌 수정 커밋에서 도출finding-sheet
수정은 한 줄 — ngx_http_script_regex_end_code()의 e->is_args = 0;커밋 524977e(writeup에 인용)
안전한 탐지기: 취약 vs 수정 오라클, 크래시 0회poc/diagnose.py — 잘림 지문(/foo%25b vs /foo%bar)
트리거 매트릭스: 따옴표/플러스 URI 및 캡처의 이스케이프 가능 문자 — 둘 다 필요poc/diagnose.py 프로브 배터리, /a%41b 컨트롤 포함
결정적 워커 DoS(SIGSEGV, 코어 덤프, 응답이 먼저 제공됨)poc/crash.py — X-Worker-PID 변경으로 워커 사망 증명
수정된 1.30.1은 동일한 공격에서 생존poc/crash.py --host 127.0.0.1:29544 — 3/3 라운드 생존
RCE(2단계, 리포터 기법, 크레딧 표기 포트)exploit/rce.py — 3/3 실행, 증명 파일 + uid=65534(nobody), 실행 후 워커 exited on signal 11

빠른 시작

root@kitploit:~
# 차등 쌍: 소스에서 빌드한 nginx 1.30.0(:29543) + 1.30.1(:29544)
cd lab && docker compose up -d --build && cd ..

python3 poc/diagnose.py                          # 안전한 오라클 — 어느 워커도 크래시시키지 않음
python3 poc/crash.py --host 127.0.0.1:29543      # 1.30.0: 워커가 시그널 11로 사망, 코어 덤프
python3 poc/crash.py --host 127.0.0.1:29544      # 1.30.1: 모든 라운드 생존

docker logs cve-42945-vuln 2>&1 | grep 'exited on signal' | tail -3

2단계 — 리포터의 고정 빌드에 대한 RCE(nginx dev rev 98fc3bb7 = release-1.29.8-14, 고정 엔트리포인트로 ASLR 비활성화):

root@kitploit:~
docker compose -f lab/rce/docker-compose.yml up -d --build   # :29545, 빌드에 수 분 소요

python3 exploit/rce.py \
  --cmd 'echo pwned-by-cve-2026-42945 > /tmp/proof' --verify --expect pwned
docker compose -f lab/rce/docker-compose.yml exec nginx cat /tmp/proof

문서

문서설명
docs/finding-sheet.md한 페이지 데이터시트: 버전, CVSS, 구성 패턴, 트리거 조건, 탐지 시그니처
docs/report-ptes.mdPTES 구조 보고서(7단계), 실제 수행된 범위로 한정
docs/research-writeup.md조사 내러티브 — 수정 커밋 고고학, 잘림의 놀라움, 이식 가능한 교훈, 향후 작업

여기서 원본인 것 vs 기존 연구

1단계 연구 체인은 원본 작업입니다: 크래시 없는 차등 오라클과 그 잘림 지문(제공된 본문은 원시 길이로 잘린 재이스케이프 캡처 — 길이/값 2패스 불일치의 가시적 시그니처), 두 전제 조건이 모두 필요함을 증명하는 트리거 매트릭스, 길이 패스가 is_args를 볼 수 없는 이유에 대한 소스 수준 설명, 그리고 응답 후 결정적 워커 종료. 버그 자체, 취약한 구성 패턴, 수정 커밋 분석은 리포터와 업스트림의 기존 작업입니다 — Leo Lin (DepthFirst) 이 이슈를 공개했고 Roman Arutyunyan이 수정했습니다. 라이트업의 기존 연구 섹션과 DepthFirst Disclosures — Nginx-Rift, 트리 CVE-2026-42945를 참조하세요.

2단계(RCE)는 리포터가 공개한 익스플로잇의 포트이지 독립적인 체인이 아닙니다: 인접 요청 풀의 cleanup 포인터에 오버런을 안착시키는 교차 요청 힙 펭슈이, 보유된 POST 본문을 통한 가짜 ngx_pool_cleanup_t 스프레이, libc system()으로의 cleanup-디스패치 리다이렉트, 오버플로 기하학(349 A + 969 + + 6 대상 바이트), no-ASLR 베이스/오프셋 상수, lab/rce/의 고정 빌드(그들의 env/) — 모두 Leo Lin의 설계이며 exploit/rce.py에 크레딧을 표기하여 재현되었습니다. 2단계에서 우리의 기여: 포트 자체 — 이 저장소의 CLI/로깅/검증 규칙, 라이브 힙 스캔 후보 발견 및 베이스 자동 감지(그들의 정적 상수는 커널 의존적입니다. 익스플로잇 docstring 참조), stdlib 리버스 셸 리스너, 검증 증거.

동반 연구

이 저장소는 CVE-2026-42533 — NGINX Pre-Auth Heap Overflow: Analysis & RCE (형제 저장소)와 방법론을 공유합니다: nginx 스크립트 엔진의 동일한 2패스 길이/값 버그 클래스를 전체 사전 인증 RCE 체인으로 이끌었습니다. 그 체인은 이 버그의 가능한 상한을 한정했으며, 이 저장소의 2단계는 여기서 동일한 상한에 도달합니다 — 리포터 기법의 크레딧 표기 포트로서, 독립적인 체인이 아닙니다.

저장소 구조

root@kitploit:~
docs/            finding sheet · PTES 보고서 · 연구 라이트업
poc/             diagnose.py(안전한 차등 오라클) · crash.py(결정적 DoS)
exploit/         rce.py — 리포터의 system() 체인의 크레딧 표기 포트
lab/             Dockerfile(소스에서 nginx, -g -O0) + 차등 compose 쌍
lab/nginx/       vulnerable.conf — 수정 커밋의 PoC 구성
lab/rce/         리포터의 고정 RCE 환경(그들의 env/, 우리의 포트 매핑)

참고 자료

  • 수정 커밋: 524977e7c534 "Rewrite: fixed escaping and possible buffer overrun" (Roman Arutyunyan) — nginx 1.30.1에서 릴리스
  • Red Hat: RHSA-2026:17790 및 후속 조치(광범위한 다운스트림 패치)
  • DepthFirst Disclosures — Nginx-Rift, 트리 CVE-2026-42945(리포터의 기존 작업; Leo Lin)

교육용 연구 아티팩트. 소유하거나 명시적으로 테스트 권한이 부여된 시스템에서만 실행하세요. 이 취약점은 패치되었습니다 — nginx를 ≥ 1.30.1로 업그레이드하세요.

도구 다운로드