Merhabalar bugün internette bulduğum bir PHP ip logger kodunda bulduğum bir XSS açığıı sizlerle paylaşacağım. Açığı sömürdükten sonra bu açığı kapatacağım. Ben kodları editleyip IP Logger kısmını kaldırdım şu an sadece gelen ziyaretçilerin user-agent'lerini şu adreste logluyor :
https://ippp.herokuapp.com/test3201.html
Normalde şu adreste bir php kodu çalışıyor ama gelen geçen user-agent olarak bir şey yazdırmasın diye o PHP kodunu kaldıracağım :
https://ippp.herokuapp.com
Çalışan PHP kodu :
Kod:
Kod:
Yazının devamını okumadan nasıl bir yöntem kullanacağımı bulmaya çalışın. Aklınıza bir fikir gelmiyorsa devam edebilirsiniz.
Öncelikle siteye baktığımızda kullanıcı girişi isteyen hiçbir şey yok. Bu kısımda ezberciler doğal olarak eleniyor. Belki bizden bir kutucuk içinde girdi istemiyor ama siteye girerken bir header parametresi olan User-Agent yolluyoruz. O zaman biz bu siteye User-Agent olarak bir script yollarsak çalışacaktır diye düşünüyoruz. Hemen bir Python kodu yazalım :

Kod:
Kod:
import requests
uri ='https://ippp.herokuapp.com'
headers = {
'User-Agent':""}
r = requests.get(uri,headers=headers)
Kodu çalıştırıyorum ve logların tutulduğu sayfamız artık alert veriyor.

İsterseniz bir de resim ekleyelim:

Kod:
Kod:
import requests
uri ='https://ippp.herokuapp.com'
headers = {
'User-Agent':""}
r = requests.get(uri,headers=headers)

Şimdi ise nasıl bu açığı kapatacağımızı düşünelim. Ben açığı kapatmak için taglarını replace etmeyi düşündüm. Böylece yollanan hiçbir kod çalışmayacak çünkü taglar yok.
Kodu şu şekilde değişelim :
Kod:
Kod:
Şimdi Python kodlarımızı tekrar çalıştıralım:

Gördüğünüz gibi taglar replace edildiği için açığımız da kapandı.
İncelemeniz açısından html dosyasını silmiyorum ama php sayfasını sıfırladım. Siteye gidip canlı canlı bakabilirsiniz.
https://ippp.herokuapp.com/test3201.html
Normalde şu adreste bir php kodu çalışıyor ama gelen geçen user-agent olarak bir şey yazdırmasın diye o PHP kodunu kaldıracağım :
https://ippp.herokuapp.com
Çalışan PHP kodu :
Kod:
Kod:
Yazının devamını okumadan nasıl bir yöntem kullanacağımı bulmaya çalışın. Aklınıza bir fikir gelmiyorsa devam edebilirsiniz.
Öncelikle siteye baktığımızda kullanıcı girişi isteyen hiçbir şey yok. Bu kısımda ezberciler doğal olarak eleniyor. Belki bizden bir kutucuk içinde girdi istemiyor ama siteye girerken bir header parametresi olan User-Agent yolluyoruz. O zaman biz bu siteye User-Agent olarak bir script yollarsak çalışacaktır diye düşünüyoruz. Hemen bir Python kodu yazalım :

Kod:
Kod:
import requests
uri ='https://ippp.herokuapp.com'
headers = {
'User-Agent':""}
r = requests.get(uri,headers=headers)
Kodu çalıştırıyorum ve logların tutulduğu sayfamız artık alert veriyor.

İsterseniz bir de resim ekleyelim:

Kod:
Kod:
import requests
uri ='https://ippp.herokuapp.com'
headers = {
'User-Agent':""}
r = requests.get(uri,headers=headers)

Şimdi ise nasıl bu açığı kapatacağımızı düşünelim. Ben açığı kapatmak için taglarını replace etmeyi düşündüm. Böylece yollanan hiçbir kod çalışmayacak çünkü taglar yok.
Kodu şu şekilde değişelim :
Kod:
Kod:
Şimdi Python kodlarımızı tekrar çalıştıralım:

Gördüğünüz gibi taglar replace edildiği için açığımız da kapandı.
İncelemeniz açısından html dosyasını silmiyorum ama php sayfasını sıfırladım. Siteye gidip canlı canlı bakabilirsiniz.