resimler grünmüyo DOM..

Bu yazımızda HTML Injection olarak adlandırılan saldırı tekniğini, tehlikenin nasıl oluştuğunu ve ne gibi nlemler alınabileceğini işleyeceğiz. HTML InjectionHTML Injection tehlikesiyle, sıklıkla, uygulamanın kullanıcıdan aldığı verileri kaydedip daha sonra işlediği durumlarda karşılaşmaktayız. rnekleyecek olursak; bir ziyaretçi defteri uygulamasında, yetersiz güvenlik farkındalığına sahip geliştiricinin kullanıcıdan aldığı verileri herhangi bir işleme tabi tutmadan saklayıp, ekrana çıktı olarak vermesi potansiyel olarak bu saldırıya kapı aralamaktadır. HTML, tam olarak bir programlama dili olarak ifade edilemeyeceğinden ve HTML kodlarıyla yapabilecekleriniz bir web uygulamasının genellikle grsellik kısmıyla ilgili olduğundan ve saldırının ana teması HTML kodlarının enjekte edilmesi olduğundan dolayı en basit düzeyde ve zararı en az olan saldırı olarak değerlendirilebilir . HTML Injection tekniğini, en çok rastlanılan iki şekliyle inceleyeceğiz. Bunlar; 'sayfa düzenini bozmaya ynelik' ve 'sayfayı ynlendirmeye ynelik' saldırılardır. rnek Uygulamarnek ziyaretçi defteri uygulamamız kullanıcılardan aldığı mesajları kaydederek herhangi bir onay işlemine tabi tutmadan sayfada gstermektedir. İlgili insert işlemine ait kodlar ve tablo tasarımına ait ekran grüntüsü aşağıdaki gibidir; //Function of New Message Insert to Guestbook - START private void NewMessageInsert { string strConnStr = WebConfigurationManager. ConnectionStrings . ToString ; SqlConnection conn = new SqlConnection ; //Database Processing try catch finally } //Function of New Message Insert to Guestbook - ENDHemen insert işlemini gerçekleştirip, bıraktığımız mesajı okuyacağımız sayfanın kodlarını inceleyelim. <ItemTemplate> msgId: <asp:Label ID="msgIdLabel" runat="server" Text='<%# Eval %>' /> <br /> msgComposer: <asp:Label ID="msgComposerLabel" runat="server" Text='<%# Eval %>' /> <br /> msgContent: <asp:Label ID="msgContentLabel" runat="server" Text='<%# Eval %>' /> <br /> msgStatus: <asp:Label ID="msgStatusLabel" runat="server" Text='<%# Eval %>' /> <br /> <br /></ItemTemplate>HTML çıktısına bakarsak;<tr> <td> msgId: <span id="dlMsg_ctl00_msgIdLabel">15</span> <br /> msgComposer: <span id="dlMsg_ctl00_msgComposerLabel"> Onur</span> <br /> msgContent: <span id="dlMsg_ctl00_msgContentLabel"> Mesaj</span> <br /> msgStatus: <span id="dlMsg_ctl00_msgStatusLabel">True</span> <br /> <br /> </td></tr>şekildeki gibi olduğunu grürüz. Şimdi yaptığımız analizler sonucu edindiğimiz bilgileri hatırlayacak olursak; uygulamamız insert işlemi esnasında verileri herhangi bir kontrolden geçirmeyerek veritabanına kaydediyor ve eş zamanlı olarak bu mesajı diğer bir sayfadan okuyabiliyoruz. Mesajı okuduğumuz sayfanın kodlarında da grüldüğü üzere, mesaj direk olarak veritabanından Eval metodu ile bağlanmış olarak ekrana basılmaktadır. Sistem işleyişi ile alakalı tüm bu edindiğimiz bilgilerin zeti kısaca şudur: "Biz ne yazarsak yazalım, browser aynen bunu yorumlayacaktır". İşte burada sistemin zayıf noktası açığa çıkmaktadır. Şimdi bu zayıflığı smürmeye başlayalım. Saldırı BaşlıyorHareket noktamız; 'Biz ne yazarsak yazalım hiçbir değişikliğe uğramadan yorumlanacak ve çalışacaktır'. Demek ki biz mesaj kısmına ya da mesajı yazan kişinin belirtildiği alana HTML kodları yazarsak sistem bunu kaydedecek ve çalıştıracaktır. Hemen deneyelim ve ekran grüntüsü ile kaynak kodlara bakalım; <tr> <td style="background-color:#CCCCCC;"> msgId: <span id="dlMsg_ctl01_msgIdLabel">16</span> <br /> msgComposer: <span id="dlMsg_ctl01_msgComposerLabel"><h1>OWASP</h1></span> <br /> msgContent: <span id="dlMsg_ctl01_msgContentLabel"><img src="http://www.webguvenligi.org/docs/owasptr2. gif" /></span> <br /> msgStatus: <span id="dlMsg_ctl01_msgStatusLabel">True</span> <br /> <br /> </td> </tr>Composer alanına '<h1>OWASP</h1>', content alanına '<img src="http://www.webguvenligi.org/docs/owasptr2. gif" />' yazıp insert işlemini gerçekleştirdikten sonra grüldüğü gibi yazdığımız HTML etiketlerinin yorumlandığını ve sayfanın browser tarafından ona gre render edildiğini grüyoruz. Kısacası sisteme HTML kodlarını enjekte ettik ve çalıştırdık :) Peki sorun nereden kaynaklanıyor?Hatalı KodlamaUygulamanın byle bir saldırıya karşı zayıf olmasının nedenleri olarak;Kullanıcıdan alınan verilerin kontrol edilmemesi , İçeriklerin onay işlemine girmeden doğrudan yayınlanması, Veritabanından çağrılıp sayfaya bastırılan verilen kontrol edilmemesi olarak gsterilebilir. ÇzümlerKullanıcıdan alınan verileri kontrol etmek için düzenli ifadeler, if-else yapıları veya ASP. NET teknolojisinin sunduğu 'ValidateRequest' metodu kullanılabilir. ValidateRequest, varsayılan olarak 'true' durumda gelmektedir .<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Guestbook-Write-Secure.aspx. cs" Inherits="Guestbook_Write_Secure" ValidateRequest="true" %>Eklenen içeriklerin onay işleminden sonra yayınlanması, tehlikeyi büyük lçüde engellemeye yardımcı olacaktır. Veritabanından getirilen verilerin encoding işlemine tabi tutularak kod olarak değil de metin olarak yorumlanmasını sağlarak, enjeksiyon işlemi gerçekleşse bile enjekte edilen kodların çalışmasını engelleyebilirsiniz . AntiXSS kütüphanesi Microsoft tarafından bu gibi encoding işlemleri için güvenlikle kullanılabilir . Hatalı Kod: Text='<%# Eval %>'Güvenli Kod: Text='<%# Server. HtmlEncode(Eval . ToString %>'SonuçHTML Injection tekniğini, ASP. NET teknolojisi ile geliştirdiğimiz basit bir ziyaretçi defteri uygulaması üzerinden inceledik. Yapacağınız çzümler ASP. NET için yeterli olmakla beraber; proje dosyasına ve diğer dil / platformlar için konuyla ilgili makalelere referanslar blümünden ulaşabilirsiniz. Bir sonraki yazımız JavaScript Injection üzerine olacaktır. Referanslar http://tr. wikipedia. org/wiki/HTML http://www.owasp.org/index. php/Category:Input_Validation#Description http://www.owasp.org/index. php/Data_Validation http://www.asp.net/learn/whitepapers/request-validation/ http://aspnetresources.com/blog/encoding_forms.aspx http://www.owasp.org/index. php/Code_Injection http://en. wikipedia. org/wiki/Code_injection http://www.technicalinfo.net/papers/CSS.html http://www.kodaman.org/yazi/html-injection-tehlikesi http://www.ysfkc.com/dosyalar/guvenliHtml. phps http://htmlpurifier.org/ http://www.onuryilmaz.info/Uploads/HTMLInjection. rar http://www.microsoft.com/downloads/details.aspx?FamilyId=051ee83c-5ccf-48ed-8463-02f56a6bfc09 Emekli

bunu yazan kaç yıl nce yazmış bilmiyorum ama. artık(. net 3.5) form sayfalarında bu tip html tagları filtrelenip yollanıyor. zararlı bir kod girdiğinde hata alıyorsun... - xx yerde hata var. - ya aslında kod şyle sanıyor olabilir bla bla bla - olm kendine gel kodlar düşünmez - ...