- 15 Ocak 2019
- 311
- 77
Selamlar, bugün xml dökümanlarında bulunan entity ; zararlı referansları ile ilgili zafiyetleri portswigger üzerinden işleyeceğiz. XXE zafiyeti, entity yapılarını suistimal eder. Bir saldırgan, hedef sitenin hassas sistem dosyalarına erişmesi, uzak sunuculara ping back saldırıları yapmak, dos saldırıları gibi kritik seviyelerde işlemler yapabilir.
LABARATUAR 1
İlk örneği açtığımda image ve product etraflarında xml verisi kullanabileceğim herhangi birşey göremedim, gözüm check stock alanına erişti. İlk requestim ve gelen response örneğine bakalım.
Burada xml varlığını kullanabilediğimi görüyorum, bunun için xml tagının açıldığı bölümün aşağı kısmına <!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> payloadımı verdim, lakin gelen giden birşey yok ekrana bastırmak için <productId> bölümüne verdiğim xxe değerini (Ğ) atamak için ;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [ <!ENTITY ğ SYSTEM "file:///etc/passwd"> ]>
<stockCheck><productId>&ğ;</productId><storeId>1</storeId></stockCheck>
Ve işin sonunda file ile birlikte etc klasörü altında passwd dosyasını okuyabildik. Bunlarla beraber LFİ ile birlikte log poising (apache-ningx) rce alınabilir veya proc environ üzerinden komut çalıştırma, reverse alma gibi işlemler yapabilirsiniz.
LABARATUAR 2
Bu örnekte bizden herhangi bir dosya okumayı yalnızca bunu cloud sistem için yapmamızı istiyor. Yani bilindik http://169.254.169.254/ url'i üzerinden bir nevi SSRF saldırısı deneyeceğiz. Stock check alanına giriyorum.
İşlemimiz normal şekilde çalışıyor, lakin bu durumu SYSTEM içinden adamın kullandığı cloud mimarisinin kritik verilerini bulacağız. Portswiggerin bize verdiği ilk ip adresinden deniyorum ve response değerlerimiz geliyor.
Bize gelen response üzerinden yavaş yavaş takip ederek ilerleyeceğiz. Öncelikle ; /latest/ /meta-data/ /iam/ /security-credentials/ /admin/ patherini keşfederek ilerlerken en sonunda admine ait token ve keyleri ele geçiriyorum.
LABARATUAR 3
Bu uygulamada bizlerden svg dosyası yükleyerek sistem içindeki dosyaları okumamız hedefleniyor. Sistemde ilk yaptığımız gibi stock check alanı görünmüyor, bunun yerine blog içerisinde yorum alanında avatar yükleme kısmını keşfediyorum biraz araştırdıktan sonra ;
Bu yapıyı .svg olarak atmam gerekiyor, lakin sürekli 500 server hatası aldığım için durumun Mime-Type ile ilgili olabileceğini düşündüm bunun için Content-Type: image/png kısmını image/svg+xml olarak değiştiriyorum. Ve hey.svg uzantılı dosyamı yüklüyorum. Ve 500 yanıtından ziyade 302 alıp başarılı oluyoruz.
Ve yüklenen resimdeki datayı kullanıcının post kısmına bakarak istediğimiz bilginin user fotoğrafı olarak görebilirsiniz. Sağ tık sekmesi ile açabilir veyahut resmi indirip string değerlerini manuel okuyabilirsiniz.
Ve artık bizden tek istediği şey /etc/hosts içindeki bu değeri submit solitions bölümüne girmek kalıyor. Zorlanmamanız için bunuda vereceğim.
LABARATUAR 4
Bu lab uygulamasında ise XInclude tabanlı saldırı yapmamızı istiyor. Labı açıyorum ve ilk check stock requestimi veriyorum lakin herhangi bir xml datası görünmüyor.
Aklıma ilk olarak xml tagları vererek testler yapmaktan geçti, hiçbir sonuç alamayınca sadece productId & storeId kısımlarını baz aldığını anlayıp içerideki integer veryi silip kendi payloadımı çalıştırıyorum.
Beni dinlediğiniz için teşekkür ederim. Selametle kalın hoşçakalın <3
Son düzenleme: