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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
SealSecurity_Exam — إصلاح ثغرة تلوث النموذج الأولي (CVE-2023-26136) لحزمة tough-cookie | Kitploit
أدوات/GitHubGitHub/m-lito13/sealsecurity_exam
تحليل الشفرة الثابت (SAST)تحليل الثغرات الأمنيةتحليل الكودأمن الويبالتعلم والتعليم
GitHubm-lito13/sealsecurity_exam

SealSecurity_Exam

إصلاح ثغرة تلوث النموذج الأولي (CVE-2023-26136) لحزمة tough-cookie

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

الأكثر شعبية

عرض الكل →

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

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

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

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

SealSecurity_Exam

Prototype pollution هي ثغرة في JavaScript تمكن المهاجم من إضافة خصائص عشوائية إلى نماذج الكائنات العامة، والتي قد تُورث بعد ذلك إلى الكائنات المعرفة من قبل المستخدم. مصدر Prototype pollution هو أي إدخال يمكن للمستخدم التحكم به يمكنك من إضافة خصائص عشوائية إلى كائنات النموذج. المصادر الأكثر شيوعًا هي كما يلي: URL JSON Web Messages

بالنسبة لحزمة tough-cookies (الإصدار 2.5.0) المصدر الأول ذو الصلة الأكبر هو عبر URL يحدث ذلك كما يلي:

إليك مثال لطلب:

https://vulnerable-website.com/?__proto__[badProperty]=payload عند تحليل سلسلة الاستعلام إلى أزواج مفتاح:قيمة، قد يفسر محلل URL proto كسلسلة عشوائية. في مرحلة ما، قد تقوم عملية الدمج التكراري بتعيين قيمة evilProperty باستخدام عبارة مكافئة للتالية:

targetObject.__proto__.badProperty = 'payload';

__proto__ له استخدام خاص في JavaScript. كما نعلم، إذا لم يتم العثور على خاصية P1 لكائن ما، فسيتم البحث عنها في النموذج الأولي لهذا الكائن

مثال

root@kitploit:~
function myClass() { 
  this.P1 = 'value';
} 
let mc = new myClass();
console.log(mc.P1); //Value 
console.log(mc.P2); //Undefined
mc.__proto__.P2 = 'value2';
let mc2 = new myClass();
console.log(mc.P2); //value2

بعد تغيير __proto__ - جميع النسخ التي تم إنشاؤها من myClass ستحتوي على الخاصية P2

بالنسبة لحزمة tough-cookies (الإصدار 2.5.0) يمكن رؤية هذه الثغرة من مقتطف الكود التالي:

root@kitploit:~
await new Promise((resolve, reject) => {
            cookiejar.setCookie(
                "Slonser=polluted; Domain=__proto__; Path=/notauth",
                "https://__proto__/admin",
                { loose: true },
                (err, cookie) => {
                    if (err) {
                        reject(err);
                    } else {
                        resolve(cookie);
                    }
                }
            );
        });

تم اكتشاف أن الفئة CookieJar تستخدم MemoryCookieStore كمخزن افتراضيًا. وفي عدة طرق من MemoryCookieStore يتم تهيئة الكائنات كما يلي:

root@kitploit:~
this.idx = {}; 

هذا يعني أنه بالنسبة لـ this.idx يمكن إضافة خصائص بقيم (والتي قد تكون قيمًا إشكالية) عبر __proto__. لمنع ذلك - تم تغيير التهيئة في عدة أماكن كما يلي:

root@kitploit:~
this.idx = Object.create(null);

هذا ينشئ كائنًا فارغًا بدون نموذج أولي. تمت إضافة اختبار memstore_vulnerability_fix_test.js للتحقق من الإصلاح

تنزيل الأداة