آموزش کامل پروتکل HTTP برای تست نفوذ وب
- کورش سنایی
- ۴ مرداد ۱۴۰۴
- زمان مطالعه: 9 دقیقه

پروتکل HTTP و HTTPS چیست؟
پروتکل HTTP برای تست نفوذ وب یکی از پایهایترین مفاهیمی است که هر فرد علاقهمند به دنیای امنیت سایبری و هک وب باید بهخوبی آن را درک کند. HTTP یا HyperText Transfer Protocol مجموعه قوانینی است که نحوه ارتباط میان کلاینت (مرورگر) و سرور وب را تعریف میکند. این پروتکل بدون هیچ رمزنگاری، دادهها را میان مرورگر و سرور جابهجا میکند؛ یعنی اگر شما در حال مشاهده یک وبسایت هستید، اطلاعاتی مانند نام کاربری، رمز عبور، یا دادههای حساس دیگر ممکن است بهصورت متن ساده (Plaintext) در شبکه ارسال شوند. این مسئله باعث میشود HTTP به هدفی جذاب برای مهاجمان تبدیل شود. در مقابل، HTTPS نسخهای از این پروتکل است که با استفاده از SSL/TLS ارتباط را رمزنگاری میکند و از این طریق امنیت ارتباط را تضمین میکند. در تست نفوذ، دانستن تفاوت میان HTTP و HTTPS اهمیت زیادی دارد، زیرا حملاتی مانند Man-in-the-Middle، Session Hijacking و Packet Sniffing بهراحتی روی ارتباطات HTTP قابل انجام هستند، اما در HTTPS کار بسیار سختتری خواهند داشت. بنابراین، شناخت این پروتکل و بررسی نحوه عملکرد آن، نقطه آغازین مهمی در دنیای تست نفوذ وب است.
ساختار URL و ارسال درخواست
یکی از بخشهای حیاتی در درک پروتکل HTTP برای تست نفوذ وب، آشنایی با ساختار URL و نحوه ارسال درخواستهاست. URL (Uniform Resource Locator) درواقع آدرس اینترنتیای است که مرورگر یا ابزار تست نفوذ برای دسترسی به منابع خاصی از آن استفاده میکند. این آدرس اینترنتی از بخشهای مختلفی تشکیل شده است: Scheme که نشاندهنده نوع پروتکل (مثلاً HTTP یا HTTPS) است، بخش User:Password که گاهی برای ورود مستقیم به سیستمهای دارای احراز هویت پایه استفاده میشود، Host یا همان دامنه یا IP مقصد، Port که نشاندهنده شماره پورت برای اتصال به سرویس خاصی روی سرور است، Path که مسیر فایل یا صفحه مورد نظر را مشخص میکند، Query String که شامل پارامترهایی برای ارسال اطلاعات به سرور است (مثلاً ?id=1)، و Fragment که اشاره به بخش خاصی از صفحه دارد. در بسیاری از آسیبپذیریهای وب مانند SQL Injection یا XSS، همین بخشهای URL (بهویژه Query String) محل حمله هستند. بنابراین، تحلیل دقیق URL و فهمیدن چگونگی ساختار و نحوه عملکرد آن، نقش کلیدی در کشف آسیبپذیریهای سمت کلاینت و سرور ایفا میکند.
نمونه ساختار یک URL:
http://user:pass@site.com:80/page?id=1#section
تحلیل اجزای URL:
- Scheme: نوع پروتکل (HTTP, HTTPS)
- User:Password: برای لاگین مستقیم
- Host: دامنه یا IP
- Port: پورت اتصال (معمولاً 80 یا 443)
- Path: مسیر فایل یا صفحه
- Query: اطلاعات اضافی مثل id=1
- Fragment: قسمت خاصی از صفحه

تحلیل دقیق Request و Response در HTTP
در مسیر درک پروتکل HTTP برای تست نفوذ وب، تحلیل درخواستها (Requests) و پاسخها (Responses) ضروری و حیاتی است. وقتی مرورگر یا ابزار تست نفوذ شما قصد دارد دادهای را از یک سرور دریافت کند، ابتدا یک HTTP Request ارسال میکند. این درخواست ممکن است شامل متد (مانند GET یا POST)، مسیر فایل، نسخه پروتکل و هدرهای مختلف باشد. سرور پس از پردازش درخواست، یک HTTP Response بازمیگرداند که شامل کد وضعیت (مثل 200 OK یا 404 Not Found)، نوع داده، هدرهای پاسخ و گاهی بدنه HTML یا JSON است. تحلیل دقیق این پیامها به ما این امکان را میدهد که بدانیم سرور چگونه به درخواستها واکنش نشان میدهد و آیا نقاط ضعف امنیتی در آن وجود دارد یا خیر. برای مثال، در صورتی که یک سرور هنگام دریافت پارامتر اشتباه خطای 500 Internal Server Error را برگرداند، ممکن است نشاندهنده آسیبپذیری مانند SQL Injection باشد. یا اگر به هدر Server دقت کنیم، ممکن است بتوانیم نوع نرمافزار یا نسخه آسیبپذیر آن را شناسایی کنیم. مشاهده دقیق این دادهها در ابزارهایی مثل Burp Suite یا Wireshark میتواند به ما کمک کند تا ارتباط میان کلاینت و سرور را مهندسی معکوس کرده و مسیرهای حمله را شناسایی کنیم.
🔸 نمونه Request:
GET / HTTP/1.1
Host: zerodey.ir
User-Agent: Mozilla/5.0
Referer: https://zerodey.ir/
تحلیل :
- خط اول: از متد GET استفاده شده و هدف / (ریشه سایت) است. نسخه پروتکل HTTP نیز مشخص شده (1.1).
- Host: سرورهایی که چندین سایت را میزبانی میکنند با استفاده از این هدر متوجه میشوند که کدام دامنه منظور کاربر است.
- User-Agent: مشخص میکند که کلاینت از چه مرورگر یا نرمافزاری استفاده میکند. ممکن است برای ردیابی یا تغییر ظاهر سایت استفاده شود.
- Referer: صفحهای که کاربر از آن به این صفحه هدایت شده. در حملات CSRF یا ردگیری کاربران مهم است.
🔸 نمونه Response:
HTTP/1.1 200 OK
Server: nginx/1.15.8
Date: Fri, 09 Apr 2021 13:34:03 GMT
Content-Type: text/html
Content-Length: 98
Zerodey
Welcome To Zerodey.ir
تحلیل :
- 200 OK: به معنی موفق بودن درخواست.
- Server: اطلاعاتی درباره نوع و نسخه سرور. در اکسپلویت آسیبپذیریهای خاص سرورها بسیار مفید است.
- Date: زمان پاسخ سرور (برای بررسی تاخیرها یا تحلیل زمان سرور مفید است).
- Content-Type: نوع داده (در اینجا HTML). در حملات MIME Type Confusion یا Bypass مهم است.
- Content-Length: اندازه داده برحسب بایت. اگر داده ناقص باشد یا تغییر کند، این مقدار مغایرت خواهد داشت.
متدهای رایج HTTP
در پروتکل HTTP برای تست نفوذ وب، یکی از مهمترین مفاهیمی که باید بهخوبی درک شود، انواع متدهای HTTP است. هر درخواست HTTP دارای یک متد است که مشخص میکند کلاینت قصد دارد چه عملیاتی روی سرور انجام دهد. متداولترین متدها شامل GET، POST، PUT، و DELETE هستند. متد GET برای دریافت اطلاعات از سرور بدون ایجاد تغییر استفاده میشود و دادهها در URL نمایش داده میشوند. در مقابل، POST برای ارسال دادههای حساس مانند فرمهای لاگین یا ثبتنام استفاده میشود و دادهها در بدنه درخواست قرار میگیرند. PUT معمولاً برای بهروزرسانی منابع موجود در سرور به کار میرود و DELETE برای حذف منابع استفاده میشود. در تست نفوذ، دانستن اینکه یک سرور چه متدهایی را پشتیبانی میکند بسیار مهم است. ممکن است سروری بدون احراز هویت، متد PUT یا DELETE را بپذیرد و این میتواند راهی برای آپلود فایل مخرب یا حذف دادههای مهم فراهم کند. ابزارهایی مانند Burp Suite و curl به ما امکان تست این متدها را میدهند تا بفهمیم سرور چگونه پاسخ میدهد. متدهای HTTP در واقع روشهای تعامل ما با سرور هستند و درک صحیح آنها مسیر کشف آسیبپذیریها را هموار میکند.

کدهای وضعیت HTTP
یکی دیگر از عناصر کلیدی در یادگیری پروتکل HTTP برای تست نفوذ وب، کدهای وضعیت HTTP یا همان HTTP Status Codes هستند. هر زمان که کلاینت یک درخواست به سرور ارسال میکند، سرور در پاسخ یک کد وضعیت بازمیگرداند که نشاندهنده نتیجه پردازش آن درخواست است. این کدها به پنج دسته اصلی تقسیم میشوند: 1xx (اطلاعاتی)، 2xx (موفقیتآمیز)، 3xx (ریدایرکت)، 4xx (خطای کلاینت)، و 5xx (خطای سرور). در تست نفوذ، تحلیل این کدها نقش اساسی در شناسایی رفتار سرور ایفا میکند. به عنوان مثال، کد 200 OK نشاندهنده موفقیت درخواست است، در حالی که کد 404 Not Found به ما میگوید که منبع مورد نظر وجود ندارد. کدهایی مثل 403 Forbidden و 401 Unauthorized به ما نشان میدهند که دسترسی به منبع خاصی محدود شده است. اما شاید مهمتر از همه، کدهای 500 Internal Server Error باشند که در پاسخ به درخواستهای خاص نمایش داده میشوند و میتوانند نشانهای از خطاهای پردازش داخلی، یا حتی وجود آسیبپذیریهایی مانند SQL Injection باشند. یک تستر امنیتی حرفهای با تحلیل دقیق همین کدها میتواند بسیاری از مسیرهای حمله را کشف کرده و نقشه امنیتی سایت را ترسیم کند.
کدهای وضعیت یا Status Codes به پنج دسته تقسیم میشوند:
1xx
: اطلاعاتی (کم کاربرد)2xx
: موفقیتآمیز (200, 201)3xx
: ریدایرکتها (301, 302)4xx
: خطاهای سمت کلاینت (400, 401, 403, 404)5xx
: خطاهای سمت سرور (500, 503)
📌 مهمترین کدها:
200 OK
: موفقیتآمیز301 Moved Permanently
: ریدایرکت دائمی302 Found
: ریدایرکت موقت400 Bad Request
: خطای سینتکسی یا پارامتر نامعتبر401 Unauthorized
: نیاز به احراز هویت403 Forbidden
: دسترسی غیرمجاز حتی با لاگین404 Not Found
: منبع یافت نشد500 Internal Server Error
: خطای داخلی سرور (در تستهای fuzzing دیده میشود)
✅ در اسکن آسیبپذیریها، دنبال کدهایی مانند 500، 403، و 200 باشید تا مسیرهای حساس یا خطاهای پنهان را شناسایی کنید.
هدرها و کوکیها
در پروتکل HTTP برای تست نفوذ وب، هدرها (Headers) و کوکیها (Cookies) اطلاعات کلیدیای هستند که نقش تعیینکنندهای در ارتباطات میان کلاینت و سرور دارند. هدرهای HTTP بخشهایی از درخواست یا پاسخ هستند که اطلاعات تکمیلی درباره ارتباط، مرورگر، نوع داده و سایر پارامترها را شامل میشوند. به عنوان مثال، در هدر User-Agent
، نوع مرورگر یا ابزار تست مشخص میشود، در Host
دامنه هدف تعیین میشود، و در Content-Length
طول داده ارسالی مشخص میگردد. از طرف دیگر، پاسخ سرور نیز شامل هدرهایی مانند Set-Cookie
(برای ایجاد کوکی جدید)، Content-Type
(نوع داده مثل HTML یا JSON) و Cache-Control
(برای مدیریت کش مرورگر) است. کوکیها خود فایلهای کوچکی هستند که برای حفظ نشست، احراز هویت، و ذخیرهسازی اطلاعات کاربر در سمت کلاینت استفاده میشوند. در حملات مانند Session Hijacking، اگر کوکی نشست بهدرستی محافظت نشده باشد، مهاجم میتواند آن را ربوده و بهعنوان کاربر وارد شود. همچنین در حملات XSS، کوکیها میتوانند هدف مهاجم برای سرقت اطلاعات حساس باشند. بررسی دقیق این عناصر با ابزارهایی مثل Burp Suite و مرورگرهای پیشرفته، به تستر کمک میکند تا نحوه رفتار اپلیکیشن را درک کرده و نقاط ضعف آن را شناسایی کند. بنابراین، تسلط بر مفاهیم هدرها و کوکیها نهتنها برای تحلیل، بلکه برای حمله نیز ضروری است.

🔸 Request Headers مهم:
Host
: تعیین دامنه مورد نظرUser-Agent
: تشخیص مرورگر یا ابزار تست (مثلاً Burp Suite)Content-Length
: اندازه داده ارسالیCookie
: اطلاعات نشست یا احراز هویتAccept-Encoding
: نوع فشردهسازی قابل پشتیبانی
🔸 Response Headers مهم:Set-Cookie
: تنظیم کوکی جدید برای کاربرContent-Type
: نوع داده برگشتیCache-Control
: مدت زمان ذخیره در کش مرورگرContent-Encoding
: فشردهسازی مانند gzip
🔸 کوکیها:- کوکیها تکهای کوچک از اطلاعات هستند که توسط سرور به کلاینت ارسال و ذخیره میشوند. برای حفظ نشستها، احراز هویت، تنظیمات کاربر و ردیابی استفاده میشوند.
- مثال حملات رایج مرتبط با کوکی:
- Session Hijacking: سرقت کوکی نشست و استفاده از آن
- Cookie Poisoning: تغییر محتوای کوکی برای دسترسی غیرمجاز
- Insecure Cookie Flags: مانند HttpOnly یا Secure نبودن
نتیجه گیری پروتکل HTTP برای تست نفوذ وب
شناخت دقیق پروتکل HTTP برای تست نفوذ، پایهایترین مهارت برای هر هکر یا تستر امنیتی است. شما با درک ساختار درخواستها، پاسخها، هدرها، متدها و کوکیها میتوانید تحلیل دقیقتری انجام داده، آسیبپذیریها را شناسایی کنید و درک عمیقتری از کارکرد نرمافزارهای تحت وب داشته باشید. همچنین در ادامه یکسری ویدیو آموزشی هم در اختیارتون قرار میدیم که راحت و بدون مشکل این مطالب رو به صورت ویدیویی یاد بگیرید و به HTTP مسلط بشید .