HTTP header-lər nədir?

HTTP header-lər, istifadəçi və web-server arasında HTTP əlaqəsi qurulan zaman göndərilən məlumat başlıqlarıdır. HTTP header-lərə Host, User-Agent, Content-Type, Set-Cookie kimi header-ləri nümunə olaraq vermək olar.

X-Forwarded Header-lər nədir?

X-Forwarded Header-ləri HTTP proxy və ya load balancer vasitəsi ilə istifadəçi və web-server arasında qurulan HTTP əlaqə zamanı istifadə olunan İP address, protokol, port və s. məlumatları saxlayan başlıqlardır.

X-Forwarded header-lərin bu növləri var : X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Port, X-Forwarded-Host, X-Forwarded-Server.

X-Forwarded-For

X-Forwarded-For header-ı web-serverə sorğu göndərən istifadəçinin İP addressini saxlayan başlıqdır. X-Forwarded-For header-ı load balancing, logging, WAF məqsədilə istifadə oluna bilər.

X-Forwarded-For: client1, proxy1, proxy2

X-Forwarded-Proto

X-Forwarded-Proto header-ı web-serverə sorğu göndərən istifadəçinin hansı protokoldan istifadə etdiyini(HTTP, HTTPS) saxlayan başlıqdır. X-Forwarded-Proto header-ı web-serverlə şifrəli bağlantının qurulub-qurulmadığını müəyyən etmək üçün istifadə oluna bilər.

X-Forwarded-Proto: http
X-Forwarded-Proto: https

X-Forwarded-Port

X-Forwarded-Port header-ı web-serverə sorğu göndərən istifadəçinin hansı portdan istifadə etdiyini saxlayan başlıqdır. Web-serverə sorğu göndərərkən standart olmayan portlardan istifadə edərkən X-Forwarded-Port header-dan istifadə etmək daha məqsədəuyğundur.

X-Forwarded-Port: 1234

X-Forwarded-Host

X-Forwarded-Host header-ı istifadəçinin sorğu göndərdiyi original hostun addressini saxlayan başlıqdır. Əgər 1 serverdə yəni 1 İP addressində bir neçə web-sayt saxlanılırsa, bu zaman X-Forwarded-Host header-indən istifadə etmək daha məqsədəuyğundur.

X-Forwarded-Host: example.com

X-Forwarded Header-lərin istismarı

X-Forwarded header-lərdən istifadə edərək web yönümlü hücumlar həyata keçirmək mümkündür. WAF baypass, Access Control bypass, Protocol downgrade, Log poisoning haqqında danışaq.

WAF bypass

Bəzi WAF-lar X-Forwarded-For header-dən istifadə edərək istifadəçinin real İP-sini müəyyən edir. Bəzi hallarda WAF bu İP-ləri blok edir. Bu zaman biz HTTP sorğusuna X-Forwarded-For header-ı əlavə edərək, bir növ istifadəçi İP-sini dəyişərək WAF-ı bypass edirik.

X-Forwarded-For: 127.0.0.1

Access Control bypass

Bəzi web-saytlar whitelist texnikasından istifadə edərək whitelist-də olan İP-lərə yüksək imtiyazlar verir. Biz X-Forwarded-For header-dən istifadə edərək öz İP-mizi whitelist-dəki İP-lərlə maskalayaraq yüksək imtiyaz əldə edə bilərik.

X-Forwarded-For: 192.168.0.10

Protocol Downgrade

Yuxarıda qeyd etdiyim kimi web-serverlər X-Forwarded-Proto header-dən istifadə edərək sorğu göndərən istifadəçinin hansı protokoldan istifadə etdiyini(HTTP, HTTPS) və şifrəli bağlantı qurub-qurmayacağını müəyyən edir. Biz X-Forwarded-Proto header-dən istifadə edərək şifrəli bağlantını(HTTPS) şifrəsiz bağlantıya(HTTP) çevirib həssas məlumatları ələ keçirə bilərik.

X-Forwarded-Proto: http

Log poisoning

X-Forwarded-For header-ın istifadə məqsədlərində biri logging-dir. Web-server X-Forwarded-For header-dən istifadə edərək istifadəçinin İP-sini log fayllarına qeyd edir. Biz X-Forwarded-For header-nə zərərli kod inject edərək müxtəlif hücumlar həyata keçirə bilərik.

X-Forwarded-For: <script>alert('XSS')</script>
X-Forwarded-For: ' OR '1'='1

Qorunma yolları

  1. Validation və Sanitization : Header-lərin blacklist və ya whitelist ilə yoxlanmaq və artıq simvolları təmizləmək lazımdır.
  2. Əlavə təhlükəsizlik tədbirləri : İstifadəçinin şəxsiyətinin doğrulanması üçün iki faktorlu doğrulama, CAPTCHA və s. istifadə etməliyik.
  3. Güvənilən proxy-lərdən istifadə : Ancaq güvəndiyimiz proxy-lərin "X-Forwarded-For" headerlərindən istifadə etməliyik.
  4. Real IP-lərin loglanması : Digər üsullar ilə (Məsələn X-Real-İP) istifadəçilərin real İP-lərini tapmalıyıq.

Oxuduğunuz üçün təşəkkür edirəm.

Linkedin : https://www.linkedin.com/in/javid-maharramli-58a98b1b1/