Twitter E-posta Link HPP(HTTP Parameter Pollution) Zafiyeti



Web uygulama testi yaparken özellikle az görüntülenen, önemsenmeyen sayfalara değer verilmelidir. Bu tarz sayfalar hem diğer araştırmacılar tarafından önemsenmezken veya tespit edilmezken, hem de geliştiriciler tarafından gözden kaçırılmış şeyler barındırabilir.
Bu bahsedilen bölgelerden bir taneside üyesi olunan servislerin e-mail adreslerine attığı mailler içerisindeki bulunan linklerdir. Bu linklerin dikkatli bir şekilde incelenmesi ve analiz edilmesi gerekmektedir.



HPP zafiyeti; gönderilen GET veya POST istekleri içerisinde bulunan parametrelerin istek içerisinde tekrarlanması sonucu oluşan beklenmedik durumları kapsamaktadır. Bu zafiyette hem web sunucusunun davranışı hemde kod geliştiricinin davranışı önem arz etmektedir. Zafiyet ile alakalı daha detaylı bilgiye aşağıdan ulaşabilirsiniz.



Twitter herhangi biri sizi takip ettiğinde, bir tweetiniz favori aldığında, dm aldığınızda vs. e-mail adresinize bildirim amaçlı mail göndermektedir.





Mailin alt kısmında bulunan “Listeden çık” linkine tıklayarak bir daha DM geldiğinde e-mail gelmesi engellenebilir. Link aşağıdaki url’e yönlendirmektedir.



https://twitter.com/i/u?t=1&cn=bWVzc2FnZQ%3D%3D&sig=647192e86e28fb6691db2502c5ef6cf3xxx&iid=f6529edf-322d-xxx-b99a-067876dfe799&uid=1134885524&nid=22+26



Link içerisinde bulunan “uid” parametresi ayarları değiştirilecek olan hesabın user id değerini içermektedir.



İlk olarak bu parametre üzerinde IDOR zafiyeti kontrolü yapılmış ve parametrede herhangi bir değişiklik yapıldığında anasayfaya yönlendirdiği tespit edilmiştir. Bir süre sonra aşağıdaki gibi bir url oluşturulmuştur.



https://twitter.com/i/u?t=1&cn=bWVzc2FnZQ%3D%3D&sig=647192e86e28fb6691db2502c5ef6cf3xxx&iid=f6529edf-322d-xxx-b99a-067876dfe799&uid=2321301342&uid=1134885524&nid=22+26



Link içerisinde bulunan uid değeri tekrar link içerisine eklenmiştir. Mavi olan uid değeri gerçek(hesap sahibinin) user id değeri iken kırmızı ve daha önde olan uid değeri başka bir kullanıcının user id değerini ifade etmektedir. (Başka bir kullanıcının user id değerine kullanıcının profil sayfasının kaynak kodu içerisinden erişilebilmektedir.)



İlgili url’e gidildiğinde aşağıdaki sayfa görüntülenmiştir.





sysmm32 isimli kullanıcının e-posta bildirimleri kapanmıştır. Geliştiricinin kod içerisinde muhtemelen aşağıdaki gibi bir yapı kullandığı görülmektedir.



if(dogru uid degeri istek icerisinde var mi?)
   istek icerisinden uid degerini al ve islemi gerceklestir.
else
   anasayfaya yonlendir.
Buradaki HPP zafiyetinin OWASP’ın sınırladığı HPP zafiyetinden farkı, her iki uid parametresinin de bir işe yaradığıdır. Yukarıdaki url içerisinde mavi olarak kullanılan kullanıcının kendi uid değeri if kontrolünün aşılmasını sağlamıştır. Bu kontrol aşıldıktan sonra istek içerisinden çekilen uid değeri ise(kırmızı olan) başarılı şekilde başka bir kullanıcının e-posta bildirim ayarlarının değiştirilmesini sağlamıştır.



Twitter’a gönderilmiş olan PoC videosunu aşağıdan izleyebilirsiniz.

Yazan: Mert TAŞÇI | Application Security Specialist