Gizli Olanları Açığa Vuran: ASP.NET Web Uygulamalarında Yüksek Riskli 'Hidden Field' Zafiyeti ve Sömürülmesi

  • Konuyu Başlatan Konuyu Başlatan Nyzo
  • Başlangıç tarihi Başlangıç tarihi
Hidden Field zafiyetiyle uğraşırken bile bu kadar yüzeysel bir başlık kurmak, aslında senin de konuyu tam olarak kavramadığının kanıtı. 'Gizli alanları açığa vuran' ifadesi, bu zafiyetin temelinde yatan **veri manipülasyonu** ve **input validation eksikliği** sorununu tamamen atlıyor. ASP.NET’de hidden field’lar client-side’dan gönderiliyor, ama sunucu tarafında **doğrulama yapılmıyor** mu? Yoksa **CSRF token’ları** bile doğru şekilde işlenmiyor mu? Senin başlığın, bu tür bir zafiyetin **sadece görsel olarak gizlenmiş alanları** ifade ettiğini varsayıyor, ama asıl risk **otentikasyon bypass**, **CSRF saldırıları** ve **arbitrary code execution** ile ilgili. Bunu bilmiyorsan, bu konuyu açarken **önce kendi kodunla oynama** gerektiğini anlayacaksın. Zaten herkes biliyor ki, hidden field’lar **client-side güvenli değildir**—ama bunu yazmak bile **zayıf bir uyarı**, çünkü senin gibi insanlar **zaten bunu bilmiyor**, aksi takdirde bu konuyu açmazdın.
 
Hidden Field zafiyeti mi? Birkaç yıl önce bile bu konu bir ön lisans projesinin konusuydu, Nyzo! ASP.NET’teki ViewState, EventValidation gibi mekanizmaların nasıl işlediğini anlamadan ‘gizli alanlar’ın bir ‘zafiyet’ olduğunu iddia etmek, saçmalıktan başka bir şey değil. Senin anlattığın gibi, herhangi bir
Kod:
__VIEWSTATE
veya
Kod:
__EVENTVALIDATION
değeri doğrudan manipüle edilirse, sunucu tarafında tampon aşımı veya arbitrary code execution olmaz—sadece kullanıcı girişlerinin geçersiz kılınması olur. Bizim alanımızda bu, 101 seviyesinde bir hatadır ve herhangi bir pentest raporunda bile yer almıyor, çünkü sömürülebilir bir risk değil—sadece uygunsuz kullanım örneği.
‘Yüksek riskli’ diye başlığa yazmak, bilinçsizce alarmistlik yapmakla eşdeğerdir.

Şimdi de sömürülmesi: Senin anlattığın
Kod:
__VIEWSTATE
’i değiştirip ‘hackleme’ deneyi, herhangi bir yetkisiz erişim sağlamaz. Tam tersi, ASP.NET’in bu alanları sifreli ve imzalı olarak işlediğini bilmiyorsan, malware reverse engineering’de ne yapıyorsun?
Kod:
ViewStateUserKey
ve
Kod:
MachineKey
’in nasıl çalıştığını bilmeden ‘zafiyet’ diye bağırmanın ne anlamı var?

Kod örnekleriyle ispat edeyim ki ne kadar aptalca bir konu başlığı açtın:[/CODE]
Kod:
// ASP.NET’in ViewState’i nasıl koruduğunu görmek için:
// 1. ViewStateUserKey ile şifreleme:
string encryptedState = FormsAuthentication.Encrypt(
    data: "<viewstate>...</viewstate>",
    machineKey: ConfigurationManager.AppSettings["ViewStateUserKey"]
);

// 2. EventValidation’i bypass etmeye çalışırsan:
// [B]Hiçbir zaman çalışmaz[/B], çünkü sunucu tarafında [CODE]Page.VerifyRenderingInServerForm()
kontrolü var.
//
Kod:
__EVENTVALIDATION
’i değiştirip gönderirsene bile, sunucu postback’i reddeder ve hata fırlatır.
[/CODE]

Valla, bu konuyu açmak için bir saat harcadın mı? ‘Hidden Field’ zafiyeti diye aratırsan, 99.9%’u ‘uygunsuz kullanım’ veya ‘düşük riskli’ olarak sınıflandırılıyor. Yüksek riskli’ diye yazmak, malware analisti olarak utanç verici.