- Domain sayısı > IP adresi, bu yüzden shared hosting diye bir mevzu var. Apache, tomcat, nginx gibi web servislerinin önünde bulunan reverse proxy servislerinin tüm ilgi alanı HOST ile ilgilidir.
- Atak yüzeyleri de arkadaki frameworkler olmaya başlıyor.
- Arkadaki frameworkler URI veya URL yapısını istemektedir.
- Ön tarafta reverse proxy i aşacak, arkada tomcati aşacak, bu iki noktadan sorunsuz geçtikten sonra burdaki requesting Map edilmesini sağlarsan ve bu uygulamada Host alanını kullanarak bir şeyler print ediyorsa XSS ortaya çıkar.
- Hatta uygulamadan kullanıcıya dönen HTML içerik, Cache mekanizmalar tarafından cache leniyor ise böylece aynı içerik birden fazla kullanıcıya sunuluyor ise sen Cache’i poison ederek Stored XSS çıkartabilirsin
- Nginx, Host’a göre uygulamaları map ettiği için sen gidip localdeki uygulamaları yazarsan, yanlış konfigüre edilmiş bir reverse proxy i sömürürsün dışarıdan erişimi olmayan bir uygulamaya erişebilme imkanı sunulmuş olur.
- Uygulama bir e-posta göndereceği zaman bir HTML’i render eder. HTML’in içerisinde full URL oluşturması gerekmektedir.
- Parola sıfırlama alanının host kısmı buradan alınır.
- Buradaki domain alanını manipüle edip, kendi domainimiz ile değiştirmek istiyoruz. Böylece bizim web siteye gelicek ve tokenı da elde etmiş olacağız.
- Önemli: Bir web uygulamasının testing, paging süreçleri falan farklı domainlerde gerçekleşebileceği için hard coded yazamaz bu host alanını, o yüzden dinamik bir şekilde oluşturulmalı. Framework üstünde de ona göre oluşturulur.
- Biz de bu şifre sıfırlama isteğini proxy ile kesip, Host alanına kendi domainimizi yazıcaz.
- Normalde carlos dış dünyadaki domainimize gelebilir, ama bu labda öyle tasarlamamışlar kendi exploit server oluşturmuşlar onun üstünden yürünecek.
- Adam linke tıkladığında Access logdan toplayacaksın veriyi.
- Adamların oluşturduğu exploit serverının sonuna ? koyup Host’a yazdığında loglara düştüğünü göreceksin. Normalde Host kısmında / falan geçmemesi lazım.
- ? işaretini ise, geri kalan kısmı query string’e dönsün, adamların sunucuda kafalar karışmasın diye. Normalde bir doman yazarsın yürür gidersin.
- Router ile farklı controllera gitmesin diye.
- Bu labda adam token falan vermiyor, gidiyor yeni password veriyor.
- Domain kısmına öyle bir şey yazmamız gerekiyor ki “href”, parolayı taşıyan bir URL’e dönüşsün.
- Click here’a tıkladığında otomatik gidecek oraya zaten, linki görmüyor.
- önce
- Ön taraftaki reverse proxy(gateway) host alanını parse ediyor, ondan sonra applicationda bu host alanını kullanıyor.
- URL parse olayını kral bildiği için :80’ koyup deniyor ve sonuç 200 dönüyor. Heralde :80 den sonrasına bakmıyor. : olan kısma kadar domain olarak kabul edip ona göre MAP ediyor.
- Arka taraftaki Web app bu Host taginin tamamını kullanacağı(FULL URL IDENTIFIER) için sonrasında kendi payloadımızı çakabiliriz.
- Burada context based encoding yapması lazım.
- Sonrasında loglara parola düşüyor.