Word Dosyası İle Sistemde Stored Xss Açığı Çıkarma


Herkese merhabalar. Yazının başlığı biraz karmaşık gelmiş olabilir. Ben kısaca ne yapacağımızı anlatayım. Bir sistem düşünün. Upload formu var. Forum sadece .docx (microsoft word dosyalarını) kabul ediyor. Öncelikle hepimiz klasik olarak sisteme arka kapı(backdoor) yüklemeyi deneriz. Eğer yüklenmiyorsa genelde pes ederiz. Ben şimdi arka kapı yükleyemeyeciğimizi düşünerek sisteme .docx dosya yükleyerek stored xss açığını ortaya çıkarmaya çalışacam. Tabi ki her sistemde yarar mı bilmem ama genellikle çalışıyor. Bu kadar ön açıklama yaptıktan sonra isterseniz başlayalım. Senaryomuz şu şekilde:
Bir uygulamayı test ederken, kimliği doğrulanmış bir kullanıcının bir talep için dosya yükleme yeteneğine sahip olduğunu buldum. Yükle düğmesi .docx dosyalarının yüklenmesine izin verecek şekilde tasarlanmıştır.
Bir kullanıcı bir dosyayı yükledikten sonra indirilebilir. Yüklenen .docx dosyası ile indirilen.docx dosyası arasındaki bir karşılaştırma yaparsak, farklı olduklarını görürüz; yani indirilmek için kullanılırken sistemde dosya üzerinde işlem yapabiliriz.
Yüklenen dosya geçerli bir .docx olsa da, dosya uzantısını değiştirmek mümkündür. Dosya uzantısını .html olarak meşhur tools'umuz burpsuite ile değiştirdim.
.Html uzantılı dosya sunucudan alındığında, Content-Type başlığı text / html olarak ayarlanır. Bu, tarayıcının dosyayı HTML olarak oluşturmaya çalışmasına neden olur.
Daha sonra geçerli bir .docx dosyası içinde XSS payloadı ile alert almaya çalıştım. Dosya türü sıkıştırılmış olduğundan, dosya gövdesi içinde sıkıştırma sırasında değiştirilmeyecek veya uygulamadan sonra işleme alınacak bir alanı tanımlamam gerekiyordu. Yükleme işlemi sırasında dosya yapısındaki belirli dosya yollarının değiştirilmediği bulundu. Bir .docx dosyası içindeki Settings.xml dosyasının adını karakterlerle doldurmak için değiştirdim.
Klasör yapısını bir .docx içine sıkıştırdıktan sonra, JavaScript kodu eklemek için dosya adı içindeki bazı baytların üzerine yazmak için bir hex editörü kullandım.
Sunucu, değiştirilen .docx dosyasının yüklenmesini kabul etti. HTTP POST sırasında dosya uzantısı .html olarak değiştirildi.
Dosya talep edilirken, XSS yükü bozulmamış olarak bir HTML dosyası olarak çalıştı.(Zaten istediğimiz de buydu)
Tarayıcıda görüntülendiğinde, JavaScript çalıştırıldı. Bu bağlantıyı tıklayan herkes, tarayıcısında, uygulamanın barındırıldığı etki alanında Xss payloadını gördü.
Görüldüğü gibi amacımıza ulaşmış olduk. Az-çok dilimin döndüğünce farklı bir şekilde hacking faliyetlerinde bulunurken upload forumlarından nasıl yararlanabileceğimizi anlattım. Kusurumuz olduysa AFFOLA. Başka bir yazıda görüşme üzere..:)

***haşiye: Bu yazı yabancı bir araştırmacının blog'undan çevrilmiştir. Sırf bu konularda Türkçe kaynak olsun ve farklı birşeyler anlatılması için çevrilmiştir. İyi çalışmalar...

Yorumlar

Bu blogdaki popüler yayınlar

Bazı JavaScript Kütüphaneleri Ve Zafiyetleri

Herşey Bir Tırnakla Başladı

NASA Reflected XSS Write Up