Host Header Injection Web Zafiyeti!

Bunjo

Uzman üye
14 Ara 2020
1,591
1,894
I Won
oqk18ir.png


c0sawob.png


lbn20fm.png
2q250vr.png


Merhabalar ben saldırı timlerinden Bunjo, bu konuda "Host Header Injection" web zafiyetinin neden kaynaklandığını,
nasıl sömürülebileceğini anlatacağım. Tanımlar internetten alınmıştır.


Host Header Injection


iwxqmay.png


Host header injection, bir web uygulamasındaki güvenlik açıklıklarından biridir. Bu tür bir zafiyet, HTTP taleplerinin başlık bölümündeki "Host" alanını manipüle etmek suretiyle ortaya çıkar. HTTP başlıkları, bir isteği veya yanıtı tanımlayan metin bilgilerini içerir.

Normalde, tarayıcılar ve sunucular arasındaki iletişimde "Host" başlığı, kullanıcının ziyaret ettiği web sitesinin adını veya IP adresini içerir. Ancak, bazı durumlarda, web uygulamaları doğrudan bu başlığı kontrol etmeyebilir veya güvenlik kontrollerini yeterince uygulamayabilir.

Host header injection saldırganların, kullanıcı girişi aracılığıyla veya doğrudan HTTP isteği başlıklarını değiştirerek bu "Host" başlığını manipüle etmelerine izin verir.

Şimdi ise bu zafiyeti barındıran php ile bir site kodlayalım.

Xampp kurulumunu yaptım ve dosya ağacım bu şekilde.

oxr7efr.png


index.php


PHP:
<?php

echo $url = $_SERVER["HTTP_HOST"];

?>

nid59b1.png


server kullanarak ekrana hostu yazdırıyoruz.

qfawfe7.png


ben localhost içerisinde olduğum için locahost yazdı. Burada öğrenmeniz gereken şey php kodunun sunucunun
kendi ip adresini ekrana yazdırmak yerine url kısmında yazan hostu ekrana direkt bastırmasıydı.

şimdi de bir header ile yönlendirme kodlayalım.


PHP:
<?php

echo $url = $_SERVER["HTTP_HOST"];

header("Location: test.php")

?>

kywsrm7.png


yönlendirme başarılı oluyor mu diye test.php dosyamıza bir kod yazalım.

test.php


PHP:
<?php

echo "yonlendirme basarili";

?>

20w42ol.png


index.php uzantısına gidelim.

o0uhibn.png


yönlendirmenin başarılı olduğunu anladık.

şuan bu kodun herhangi bir işlevi yok.

yönlendirme şu şekilde de yapılabilir fakat bu sefer güvenlik zafiyeti ortaya çıkıyor.


PHP:
<?php

$url = "http://".$_SERVER["HTTP_HOST"]."/host_header_injection/test.php";

header("Location: $url")

?>

tn159je.png


yukarıda bahsettiğim gibi burada host dinamik olarak alınıyor yani girilen uzantıda yazan host kısmı host olarak kabul ediliyor.
Bu size gayet doğal bir şey gibi gelebilir fakat böyle yapılmaması lazımdı. Host değişkenine başka değerler girerek kodu manipüle edebiliriz.

bu şekilde yönlendirmeyi test edelim.


hm4wld7.png


evet yine bir sorun yaşamadan yönlendirme işlemini yaptık.

Şimdi ise açığın varlığını bilmeden açığı nasıl tespit edeceğinizi anlatacağım.

burp suite ile araya giriyorum.

9uthbov.png


gördüğünüz üzere isteği düşürdük.

forward diyerek isteği yolluyorum.


eynsn7v.png


yönlendirme işlemi yapıldı.

daha detaylı anlatmak adına isteği repeatere yolluyorum ve isteği gönderiyorum.



tbdefyt.png


Response:

CoffeeScript:
HTTP/1.1 302 Found
Date: Sat, 03 Feb 2024 09:45:37 GMT
Server: Apache/2.4.58 (Unix) OpenSSL/1.1.1w PHP/8.0.30 mod_perl/2.0.12 Perl/v5.34.1
X-Powered-By: PHP/8.0.30
Location: http://localhost/host_header_injection/test.php
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8

burada incelediğiniz zaman 302 found ve Location headerini görüyorum.

Rich (BB code):
Location: http://localhost/host_header_injection/test.php

burada bir yönlendirme işlemi yapılmış.

request kısmında host için verilen parametreyi kurcalayarak farklı bir yere yönlendirme yapmaya çalışıyorum.

hqa3mg6.png


evet google için yönlendirme başarıyla gerçekleşti ve google içerisindeyiz. Bu da bize zafeyin kaynaklandığını gösteriyor.

şimdi ise bu zafiyeti nasıl sömürebileceğinizi anlatayım.

Burada bizim kodumuzun bir işlevi yok ama siz bu açığa şifre sıfırlama gibi yerlerde karşılaşırsanız eğer kendiniz bir sunucu oluşturursunuz örneğin bunjo.com olsun

ve istediğiniz kullanıcı örneğin admin veya herhangi bir yetkiye sahip bir kullanıcıya şifre sıfırlama
isteği yollarken host kısmına kendi sunucunuzu yazarsınız.

şifre sıfırlamaları php?token=TOKEN gibisinden veya başka bir parametre kullanarak yapıldığı için

http://bunjo.com/host_header_injection/test.php?token=kullanıcı_tokeni

şeklinde sıfırlama isteği yolladığınız anda bu istek mail ile gidecek kullanıcı da bu bağlantıyı kullandığında kendi sitenize hedef sitedeki gibi bir şifre sıfırlama ekranı yazarsınız.

Kullanıcının şifresini tokenini artık ne varsa elde edersiniz.

açığın nasıl önleneceğini de anlatacaktım fakat konuyu burada sonlandırmam gerekiyor, daha sonra düzenleyip eklerim.

okuyan herkese teşekkür ederim.
 

Butcherb3y

Uzman üye
1 Eyl 2022
1,594
1,185
Anıtkabir
oqk18ir.png


c0sawob.png


lbn20fm.png
2q250vr.png


Merhabalar ben saldırı timlerinden Bunjo, bu konuda "Host Header Injection" web zafiyetinin neden kaynaklandığını,
nasıl sömürülebileceğini anlatacağım. Tanımlar internetten alınmıştır.


Host Header Injection


iwxqmay.png


Host header injection, bir web uygulamasındaki güvenlik açıklıklarından biridir. Bu tür bir zafiyet, HTTP taleplerinin başlık bölümündeki "Host" alanını manipüle etmek suretiyle ortaya çıkar. HTTP başlıkları, bir isteği veya yanıtı tanımlayan metin bilgilerini içerir.

Normalde, tarayıcılar ve sunucular arasındaki iletişimde "Host" başlığı, kullanıcının ziyaret ettiği web sitesinin adını veya IP adresini içerir. Ancak, bazı durumlarda, web uygulamaları doğrudan bu başlığı kontrol etmeyebilir veya güvenlik kontrollerini yeterince uygulamayabilir.

Host header injection saldırganların, kullanıcı girişi aracılığıyla veya doğrudan HTTP isteği başlıklarını değiştirerek bu "Host" başlığını manipüle etmelerine izin verir.

Şimdi ise bu zafiyeti barındıran php ile bir site kodlayalım.

Xampp kurulumunu yaptım ve dosya ağacım bu şekilde.

oxr7efr.png


index.php


PHP:
<?php

echo $url = $_SERVER["HTTP_HOST"];

?>

nid59b1.png


server kullanarak ekrana hostu yazdırıyoruz.

qfawfe7.png


ben localhost içerisinde olduğum için locahost yazdı. Burada öğrenmeniz gereken şey php kodunun sunucunun
kendi ip adresini ekrana yazdırmak yerine url kısmında yazan hostu ekrana direkt bastırmasıydı.

şimdi de bir header ile yönlendirme kodlayalım.


PHP:
<?php

echo $url = $_SERVER["HTTP_HOST"];

header("Location: test.php")

?>

kywsrm7.png


yönlendirme başarılı oluyor mu diye test.php dosyamıza bir kod yazalım.

test.php


PHP:
<?php

echo "yonlendirme basarili";

?>

20w42ol.png


index.php uzantısına gidelim.

o0uhibn.png


yönlendirmenin başarılı olduğunu anladık.

şuan bu kodun herhangi bir işlevi yok.

yönlendirme şu şekilde de yapılabilir fakat bu sefer güvenlik zafiyeti ortaya çıkıyor.


PHP:
<?php

$url = "http://".$_SERVER["HTTP_HOST"]."/host_header_injection/test.php";

header("Location: $url")

?>

tn159je.png


yukarıda bahsettiğim gibi burada host dinamik olarak alınıyor yani girilen uzantıda yazan host kısmı host olarak kabul ediliyor.
Bu size gayet doğal bir şey gibi gelebilir fakat böyle yapılmaması lazımdı. Host değişkenine başka değerler girerek kodu manipüle edebiliriz.

bu şekilde yönlendirmeyi test edelim.


hm4wld7.png


evet yine bir sorun yaşamadan yönlendirme işlemini yaptık.

Şimdi ise açığın varlığını bilmeden açığı nasıl tespit edeceğinizi anlatacağım.

burp suite ile araya giriyorum.

9uthbov.png


gördüğünüz üzere isteği düşürdük.

forward diyerek isteği yolluyorum.


eynsn7v.png


yönlendirme işlemi yapıldı.

daha detaylı anlatmak adına isteği repeatere yolluyorum ve isteği gönderiyorum.



tbdefyt.png


Response:

CoffeeScript:
HTTP/1.1 302 Found
Date: Sat, 03 Feb 2024 09:45:37 GMT
Server: Apache/2.4.58 (Unix) OpenSSL/1.1.1w PHP/8.0.30 mod_perl/2.0.12 Perl/v5.34.1
X-Powered-By: PHP/8.0.30
Location: http://localhost/host_header_injection/test.php
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8

burada incelediğiniz zaman 302 found ve Location headerini görüyorum.

Rich (BB code):
Location: http://localhost/host_header_injection/test.php

burada bir yönlendirme işlemi yapılmış.

request kısmında host için verilen parametreyi kurcalayarak farklı bir yere yönlendirme yapmaya çalışıyorum.

hqa3mg6.png


evet google için yönlendirme başarıyla gerçekleşti ve google içerisindeyiz. Bu da bize zafeyin kaynaklandığını gösteriyor.

şimdi ise bu zafiyeti nasıl sömürebileceğinizi anlatayım.

Burada bizim kodumuzun bir işlevi yok ama siz bu açığa şifre sıfırlama gibi yerlerde karşılaşırsanız eğer kendiniz bir sunucu oluşturursunuz örneğin bunjo.com olsun

ve istediğiniz kullanıcı örneğin admin veya herhangi bir yetkiye sahip bir kullanıcıya şifre sıfırlama
isteği yollarken host kısmına kendi sunucunuzu yazarsınız.

şifre sıfırlamaları php?token=TOKEN gibisinden veya başka bir parametre kullanarak yapıldığı için

http://bunjo.com/host_header_injection/test.php?token=kullanıcı_tokeni

şeklinde sıfırlama isteği yolladığınız anda bu istek mail ile gidecek kullanıcı da bu bağlantıyı kullandığında kendi sitenize hedef sitedeki gibi bir şifre sıfırlama ekranı yazarsınız.

Kullanıcının şifresini tokenini artık ne varsa elde edersiniz.

açığın nasıl önleneceğini de anlatacaktım fakat konuyu burada sonlandırmam gerekiyor, daha sonra düzenleyip eklerim.

okuyan herkese teşekkür ederim.
Eline sağlık hocam
 
23 Eki 2023
116
31
oqk18ir.png


c0sawob.png


lbn20fm.png
2q250vr.png


Merhabalar ben saldırı timlerinden Bunjo, bu konuda "Host Header Injection" web zafiyetinin neden kaynaklandığını,
nasıl sömürülebileceğini anlatacağım. Tanımlar internetten alınmıştır.


Host Header Injection


iwxqmay.png


Host header injection, bir web uygulamasındaki güvenlik açıklıklarından biridir. Bu tür bir zafiyet, HTTP taleplerinin başlık bölümündeki "Host" alanını manipüle etmek suretiyle ortaya çıkar. HTTP başlıkları, bir isteği veya yanıtı tanımlayan metin bilgilerini içerir.

Normalde, tarayıcılar ve sunucular arasındaki iletişimde "Host" başlığı, kullanıcının ziyaret ettiği web sitesinin adını veya IP adresini içerir. Ancak, bazı durumlarda, web uygulamaları doğrudan bu başlığı kontrol etmeyebilir veya güvenlik kontrollerini yeterince uygulamayabilir.

Host header injection saldırganların, kullanıcı girişi aracılığıyla veya doğrudan HTTP isteği başlıklarını değiştirerek bu "Host" başlığını manipüle etmelerine izin verir.

Şimdi ise bu zafiyeti barındıran php ile bir site kodlayalım.

Xampp kurulumunu yaptım ve dosya ağacım bu şekilde.

oxr7efr.png


index.php


PHP:
<?php

echo $url = $_SERVER["HTTP_HOST"];

?>

nid59b1.png


server kullanarak ekrana hostu yazdırıyoruz.

qfawfe7.png


ben localhost içerisinde olduğum için locahost yazdı. Burada öğrenmeniz gereken şey php kodunun sunucunun
kendi ip adresini ekrana yazdırmak yerine url kısmında yazan hostu ekrana direkt bastırmasıydı.

şimdi de bir header ile yönlendirme kodlayalım.


PHP:
<?php

echo $url = $_SERVER["HTTP_HOST"];

header("Location: test.php")

?>

kywsrm7.png


yönlendirme başarılı oluyor mu diye test.php dosyamıza bir kod yazalım.

test.php


PHP:
<?php

echo "yonlendirme basarili";

?>

20w42ol.png


index.php uzantısına gidelim.

o0uhibn.png


yönlendirmenin başarılı olduğunu anladık.

şuan bu kodun herhangi bir işlevi yok.

yönlendirme şu şekilde de yapılabilir fakat bu sefer güvenlik zafiyeti ortaya çıkıyor.


PHP:
<?php

$url = "http://".$_SERVER["HTTP_HOST"]."/host_header_injection/test.php";

header("Location: $url")

?>

tn159je.png


yukarıda bahsettiğim gibi burada host dinamik olarak alınıyor yani girilen uzantıda yazan host kısmı host olarak kabul ediliyor.
Bu size gayet doğal bir şey gibi gelebilir fakat böyle yapılmaması lazımdı. Host değişkenine başka değerler girerek kodu manipüle edebiliriz.

bu şekilde yönlendirmeyi test edelim.


hm4wld7.png


evet yine bir sorun yaşamadan yönlendirme işlemini yaptık.

Şimdi ise açığın varlığını bilmeden açığı nasıl tespit edeceğinizi anlatacağım.

burp suite ile araya giriyorum.

9uthbov.png


gördüğünüz üzere isteği düşürdük.

forward diyerek isteği yolluyorum.


eynsn7v.png


yönlendirme işlemi yapıldı.

daha detaylı anlatmak adına isteği repeatere yolluyorum ve isteği gönderiyorum.



tbdefyt.png


Response:

CoffeeScript:
HTTP/1.1 302 Found
Date: Sat, 03 Feb 2024 09:45:37 GMT
Server: Apache/2.4.58 (Unix) OpenSSL/1.1.1w PHP/8.0.30 mod_perl/2.0.12 Perl/v5.34.1
X-Powered-By: PHP/8.0.30
Location: http://localhost/host_header_injection/test.php
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8

burada incelediğiniz zaman 302 found ve Location headerini görüyorum.

Rich (BB code):
Location: http://localhost/host_header_injection/test.php

burada bir yönlendirme işlemi yapılmış.

request kısmında host için verilen parametreyi kurcalayarak farklı bir yere yönlendirme yapmaya çalışıyorum.

hqa3mg6.png


evet google için yönlendirme başarıyla gerçekleşti ve google içerisindeyiz. Bu da bize zafeyin kaynaklandığını gösteriyor.

şimdi ise bu zafiyeti nasıl sömürebileceğinizi anlatayım.

Burada bizim kodumuzun bir işlevi yok ama siz bu açığa şifre sıfırlama gibi yerlerde karşılaşırsanız eğer kendiniz bir sunucu oluşturursunuz örneğin bunjo.com olsun

ve istediğiniz kullanıcı örneğin admin veya herhangi bir yetkiye sahip bir kullanıcıya şifre sıfırlama
isteği yollarken host kısmına kendi sunucunuzu yazarsınız.

şifre sıfırlamaları php?token=TOKEN gibisinden veya başka bir parametre kullanarak yapıldığı için

http://bunjo.com/host_header_injection/test.php?token=kullanıcı_tokeni

şeklinde sıfırlama isteği yolladığınız anda bu istek mail ile gidecek kullanıcı da bu bağlantıyı kullandığında kendi sitenize hedef sitedeki gibi bir şifre sıfırlama ekranı yazarsınız.

Kullanıcının şifresini tokenini artık ne varsa elde edersiniz.

açığın nasıl önleneceğini de anlatacaktım fakat konuyu burada sonlandırmam gerekiyor, daha sonra düzenleyip eklerim.

okuyan herkese teşekkür ederim.
Hocam eline saglik
 

Gazeteci Şerif

Katılımcı Üye
9 Eyl 2023
309
569
Trablusgarp Cephesi
oqk18ir.png


c0sawob.png


lbn20fm.png
2q250vr.png


Merhabalar ben saldırı timlerinden Bunjo, bu konuda "Host Header Injection" web zafiyetinin neden kaynaklandığını,
nasıl sömürülebileceğini anlatacağım. Tanımlar internetten alınmıştır.


Host Header Injection


iwxqmay.png


Host header injection, bir web uygulamasındaki güvenlik açıklıklarından biridir. Bu tür bir zafiyet, HTTP taleplerinin başlık bölümündeki "Host" alanını manipüle etmek suretiyle ortaya çıkar. HTTP başlıkları, bir isteği veya yanıtı tanımlayan metin bilgilerini içerir.

Normalde, tarayıcılar ve sunucular arasındaki iletişimde "Host" başlığı, kullanıcının ziyaret ettiği web sitesinin adını veya IP adresini içerir. Ancak, bazı durumlarda, web uygulamaları doğrudan bu başlığı kontrol etmeyebilir veya güvenlik kontrollerini yeterince uygulamayabilir.

Host header injection saldırganların, kullanıcı girişi aracılığıyla veya doğrudan HTTP isteği başlıklarını değiştirerek bu "Host" başlığını manipüle etmelerine izin verir.

Şimdi ise bu zafiyeti barındıran php ile bir site kodlayalım.

Xampp kurulumunu yaptım ve dosya ağacım bu şekilde.

oxr7efr.png


index.php


PHP:
<?php

echo $url = $_SERVER["HTTP_HOST"];

?>

nid59b1.png


server kullanarak ekrana hostu yazdırıyoruz.

qfawfe7.png


ben localhost içerisinde olduğum için locahost yazdı. Burada öğrenmeniz gereken şey php kodunun sunucunun
kendi ip adresini ekrana yazdırmak yerine url kısmında yazan hostu ekrana direkt bastırmasıydı.

şimdi de bir header ile yönlendirme kodlayalım.


PHP:
<?php

echo $url = $_SERVER["HTTP_HOST"];

header("Location: test.php")

?>

kywsrm7.png


yönlendirme başarılı oluyor mu diye test.php dosyamıza bir kod yazalım.

test.php


PHP:
<?php

echo "yonlendirme basarili";

?>

20w42ol.png


index.php uzantısına gidelim.

o0uhibn.png


yönlendirmenin başarılı olduğunu anladık.

şuan bu kodun herhangi bir işlevi yok.

yönlendirme şu şekilde de yapılabilir fakat bu sefer güvenlik zafiyeti ortaya çıkıyor.


PHP:
<?php

$url = "http://".$_SERVER["HTTP_HOST"]."/host_header_injection/test.php";

header("Location: $url")

?>

tn159je.png


yukarıda bahsettiğim gibi burada host dinamik olarak alınıyor yani girilen uzantıda yazan host kısmı host olarak kabul ediliyor.
Bu size gayet doğal bir şey gibi gelebilir fakat böyle yapılmaması lazımdı. Host değişkenine başka değerler girerek kodu manipüle edebiliriz.

bu şekilde yönlendirmeyi test edelim.


hm4wld7.png


evet yine bir sorun yaşamadan yönlendirme işlemini yaptık.

Şimdi ise açığın varlığını bilmeden açığı nasıl tespit edeceğinizi anlatacağım.

burp suite ile araya giriyorum.

9uthbov.png


gördüğünüz üzere isteği düşürdük.

forward diyerek isteği yolluyorum.


eynsn7v.png


yönlendirme işlemi yapıldı.

daha detaylı anlatmak adına isteği repeatere yolluyorum ve isteği gönderiyorum.



tbdefyt.png


Response:

CoffeeScript:
HTTP/1.1 302 Found
Date: Sat, 03 Feb 2024 09:45:37 GMT
Server: Apache/2.4.58 (Unix) OpenSSL/1.1.1w PHP/8.0.30 mod_perl/2.0.12 Perl/v5.34.1
X-Powered-By: PHP/8.0.30
Location: http://localhost/host_header_injection/test.php
Content-Length: 0
Connection: close
Content-Type: text/html; charset=UTF-8

burada incelediğiniz zaman 302 found ve Location headerini görüyorum.

Rich (BB code):
Location: http://localhost/host_header_injection/test.php

burada bir yönlendirme işlemi yapılmış.

request kısmında host için verilen parametreyi kurcalayarak farklı bir yere yönlendirme yapmaya çalışıyorum.

hqa3mg6.png


evet google için yönlendirme başarıyla gerçekleşti ve google içerisindeyiz. Bu da bize zafeyin kaynaklandığını gösteriyor.

şimdi ise bu zafiyeti nasıl sömürebileceğinizi anlatayım.

Burada bizim kodumuzun bir işlevi yok ama siz bu açığa şifre sıfırlama gibi yerlerde karşılaşırsanız eğer kendiniz bir sunucu oluşturursunuz örneğin bunjo.com olsun

ve istediğiniz kullanıcı örneğin admin veya herhangi bir yetkiye sahip bir kullanıcıya şifre sıfırlama
isteği yollarken host kısmına kendi sunucunuzu yazarsınız.

şifre sıfırlamaları php?token=TOKEN gibisinden veya başka bir parametre kullanarak yapıldığı için

http://bunjo.com/host_header_injection/test.php?token=kullanıcı_tokeni

şeklinde sıfırlama isteği yolladığınız anda bu istek mail ile gidecek kullanıcı da bu bağlantıyı kullandığında kendi sitenize hedef sitedeki gibi bir şifre sıfırlama ekranı yazarsınız.

Kullanıcının şifresini tokenini artık ne varsa elde edersiniz.

açığın nasıl önleneceğini de anlatacaktım fakat konuyu burada sonlandırmam gerekiyor, daha sonra düzenleyip eklerim.

okuyan herkese teşekkür ederim.
Eline Emeğine Sağlık Candostum 👏🫡
 

Bunjo

Uzman üye
14 Ara 2020
1,591
1,894
I Won
Eline sağlık güzel olmuş.
Teşekkür ederim
Ellerinize sağlık, profiliniz hayırlı olsun.
Teşekkür ederim dostum
Hocam eline saglik
Sağol dostum
Başka yerde mesaj kasabilirsin, sağol
Eline Emeğine Sağlık Candostum 👏🫡
Teşekkür ederim yoldaşım 🙂❤️
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.