Fingerprinting, OWASP v4 listesinde Web Server, Web Application Frameworks ve Web Application olmak üzere 3 başlık altında yer alan bir konudur. Fingerprinting, hedef sistemin ne olduğu hakkında bilgi toplamayı ifade ediyor. Bir sisteme sızmak veya saldırmak için öncelikle o sistemin yapısı hakkında bilgi sahibi olunması gerekir. Sonrasında, tespit edilen yapının zaafiyetleri araştırılmalı ve bunların nasıl kullanılacağı planlanmalı. Fingerprintig ile neye saldıracağımız hakkında bilgi sahibi oluruz. Sonrasında ise nasıl saldıracağımızı planlamaya başlarız.

Sistemler hakkında dışarıya bilgi verilmesini engellemek, aslında kolay olsa da firmalar/kurumlar çoğunlukla bunu göz ardı ediyor. Ya da PenTest yaptırdıkları firmalar, bu basit Information Gathering durumlarını gıcıklığına bildirmiyorlar 🙂 Örnek olarak ülkemizin bilim üreten(!) yuvası, Siber Kamp organizasyonları düzenleyen TÜBİTAK’ta, Allah ne verdiyse dışarı açmışlar 🙂

http://w3dt.net/tools/httprecon sitesinden httprecon tool’u ile online yada Fiddler ile web trafiğini izleyerek tubitak.gov.tr’nin HTTP header’ına bir göz atın. Fiddler görüntüsü aşağıdaki gibi:

Uygulama, Linux üzerinde nginx web server üzerinde koşuyor. PHP/5.4.27 ile geliştirilmiş, Drupal CMS kullanmışlar. Bir başka örnek olarak, THY’nin sitesine(http://www.turkishairlines.com) bakalım:

Uygulama, Windows Server 2008 üzerinde IIS 7.5 web server üzerinde koşuyor. ASP.NET 4.0 ile geliştirilmiş. Birçok kurum ve firmanın, dikkat etmediği ya da önemsemediği bu bilgiler saldırganlara, karşılarında ne olduğu bilgisini vermektedir. THY web sitesinden WAF ve Server bilgileri aşağıdaki gibi kapatılabilirdi:

  • IIS’te, HTTP Response Header bölümünden X-Powered-By bilgisi silinecek.
  • Uygulamanın web.config dosyasında system.web tagı altındaki, httpRuntime tagı aşağıdaki gibi düzenlenecek:

<httpRuntime enableVersionHeader=”false” />

  • IIS’e, URL Rewrite componenti kurulduktan sonra aşağıdaki şekilde Outbound Rule oluşturulacak:

Name: Remove Server in Header

Matching Scope: Server Variable

Variable Name: RESPONSE_SERVER

Pattern: .+

Action Type: Rewrite

Action Properties Value: Unknown

Böylece gelen requestlere dönen responselarda, header’daki Server bilgisi Action Properties Value olarak belirttiğimiz text ile değiştirilecektir. Bu üç adım ile ortam hakkında bilgi verilmesinin önüne geçilmiş olunur. URL ile application bazında sorgulansa da IP ile server bazında sorgulansa da ortam hakkındaki bu bilgiler dışarı sunulmayacaktır. Bunlar, Server ve WAF hakkında elde ettiğimiz işe yarar bilgiler. Web Application üzerinden, manuel veya çeşitli toollar kullanarak otomatik taramalar ile işe yarar bilgiler toplayabiliriz. Manuel kontrollere örnek olarak, commentlenerek unutulmuş önemli bilgiler var mı diye sitenin source koduna bakılabilir, manuel URL denemeleri ile admin paneline ulaşılmaya çalışabilir, ping ile ICMP paketlerine açık olup olmadığı kontrol edilebilir veya arama motorlarının kullandığı ve rootta yer alan robots.txt dosyası kontrol edilebilir. Mesela http://www.tubitak.gov.tr/robots.txt  baktığımızda, arama motorları tarafından indexlenmesi istenmeyen dosyalar/klasörler vs. belirtilmiş:

Buradan aldığımız bilgiler ile http://tubitak.gov.tr/?q=user/login/ adresinden kullanıcı girişine ve http://tubitak.gov.tr/?q=user/password/ adresinden yeni parola talebine erişebiliriz. Manuel kontrollerden önce sistemler otomatik olarak taranır. Örnek olarak, Kali‘de nikto kullanarak nikto -h http://www.tubitak.gov.tr ile siteyi taradığımda, robots.txt bilgilendirmeleri dahil, sitede var olan zaafiyetler listelenecektir. Nikto, Tubitak sitesinde, robots.txt bilgilendirmelerinin yanında OSVDB: 3092 zaafiyetini de tespit etti. http://www.osvdb.org/ sitesinden zaafiyet kodlarını aratabilir ve bu zaafiyet ile ilgili saldırı yöntemlerini öğrenebilirsiniz. 3092, erişime açık, sakıncalı bir dosyanın varlığı konusunda uyarıyor. Çünkü erişime açık bir config dosyası(http://www.tubitak.gov.tr/web.config) tespit etti.

THY web sitesini nikto ile taradığımızda, Fiddler ile tespit ettiğimiz Server ve WAF bilgilerinin yanında, web server’ın OPTIONS, TRACE ve HEAD verblerine de açık olduğunu görüyoruz. Bu verblerin açık olması, bilgi sızmasına neden olabilir. Örnek olarak, Kali’de curl(curl -v -X OPTIONS http://www.turkishairlines.com) üzerinden OPTIONS ile requestte bulunalım. Dönen response’un meta taglarını incelediğimizde, güzel bir bilgi yakalıyoruz:

Uygulama, Medyasoft tarafından geliştirilmiş. Bu bilgiyle, Medyasoft’tan bir çalışan olduğumuz sosyal mühendislik senaryoları yazabiliriz. IIS Request Filtering kullanılarak verbler kısıtlanabilir. Aşağıda görüldüğü gibi sadece GET-POST verblerine izin verilmeli. Hatta uygulamada form post etme söz konusu değil ise POST verb’de kapatılmalı.

İki yazıdır, hedef hakkında bilgi toplama ve keşif yapma üzerinde duruyoruz. Koddan uzaklaştık biraz. Sonraki yazıda bir hedef belirleyip, hedef hakkında bilgi toplayıp, zayıf noktalarını keşfedip, bu zaafiyetleri nasıl kullanabileceğimize bakabiliriz.

Reklamlar