Penetrasyon Testi Temelleri ve Web Uygulama Güvenliği

Konular:

    • Penetrasyon(Sızma) Testi Nedir?
    • Sızma Testi Çeşitleri Nelerdir?
    • Sızma Testlerinin Önemi
    • Neden Web?
    • Web Uygulamaları Neden Popüler Hedeftir?
    • HTTP Protokolü
    • The Tangled Web (Karışık-Dolanmış WEB) @Michael Zalewski
    • WEB 2.0: Artan İşlevsellik
    • WEB 3.0: Anlamlandıran, Otonom ve Dağıtık
    • Güncel Güvenlik Testlerinin Önemi
    • Sömürmek için WEB'in Doğru Anlaşılması
    • WEB Uygulama Pentest Metodolojisi ve Özellikleri
    • Araç Bilgisi
    • WEB Uygulama Pentester Araç Seti (Toolkit)
    • I-Atak PLatformu
      >>Toolkit
    • II-Web Uygulama Güvenliği Tarayıcıları (Sanners)
      >>Toolkit
    • III-Web Tarayıcılar (Browsers)
      >>Toolkit
    • IV-Yol Kesme Proxy'leri (Interseption Proxies)
      >>Toolkit
    • Canlı Uygulama

Merhabalar. Konumuzda Penetrasyon Testi Temelleri ve Web Uygulama Güvenliği konularını ele alacağız.

"Temel" kavramının her zaman bana "daha detaylısı" anlamını çağrıştırması doğru mu? yanlış mı? bilemiyorum. Bazı konularda temele indiğimizde bu durumun netliğini sizler test edebilirsiniz. Belirlenmiş net bir tanımın profesyonel olarak detaylıca incelenmesi, genel bir konunun temellerinin incelenmesinden daha kolay olduğunu düşünüyorum :). Bugün çok fazla temele inememekle birlikte yine de değinmemiz gereken noktaları birlikte inceleyeceğiz. Umarım faydalı olur.

Penetrasyon (Sızma) Testi Nedir?

Penetrasyon testi (Penetration Test / Pentest), bir kurumun bilgi sistemleri, ağ altyapısı, uygulamaları ve dijital varlıkları üzerinde gerçekleştirilen kontrollü ve yetkilendirilmiş siber saldırı simülasyonudur. Bu testin temel amacı; gerçek bir saldırganın bakış açısıyla sistemlerde bulunan güvenlik açıklarını tespit etmek ve bu açıkların sömürülebilirliğini ölçmektir.

Dijital Varlık Güvenliği hakkındaki yazıma aşağıdaki bağlantı aracılığıyla erişebilirsiniz.

Sızma testleri, yalnızca bir güvenlik açığının varlığını değil; bu açığın hangi yöntemlerle istismar edilebileceğini, hangi sistemlere erişim sağlayabileceğini ve iş süreçleri üzerindeki potansiyel etkisini ortaya koyar. Bu yönüyle penetrasyon testi, klasik zafiyet taramalarından ayrılır.

Bir penetrasyon testi sürecinde temel olarak;

  • Hedef sistemlerin keşfi (Reconnaissance / Enumeration)
  • Zafiyetlerin tespiti ve analiz edilmesi
  • Zafiyetlerin kontrollü şekilde sömürülmesi
  • Elde edilen erişim seviyesinin değerlendirilmesi
  • Bulguların raporlanması ve iyileştirme önerileri
  • adımları izlenir ve test süreci tamamen etik, yasal ve dokümante edilmiş bir çerçevede gerçekleştirilir.

    Sızma Testi Çeşitleri Nelerdir?

    Sızma testleri, hedef sistem hakkında test ekibine sağlanan bilgi düzeyine ve testin kapsamına göre farklı türlere ayrılır. Bu ayrım, testin gerçekçilik seviyesini ve elde edilecek çıktıların niteliğini doğrudan etkiler.

    Bilgi Seviyesine göre Sızma Testi Türleri

  • Test ekibine hedef sistem hakkında hiçbir ön bilgi verilmez. Gerçek bir dış saldırgan senaryosu simüle edilir. Zaman alıcıdır ancak gerçekçi sonuçlar sunar.

  • Sistem mimarisi, kaynak kodlar, ağ diyagramları ve kullanıcı bilgileri test ekibiyle paylaşılır. Derinlemesine analiz sağlar ve kritik zafiyetlerin tespitinde oldukça etkilidir.

  • Kısıtlı bilgi ile gerçekleştirilen test türüdür. Yetkili bir kullanıcı perspektifi sunar ve hem iç hem dış tehdit senaryolarını kapsar.

    Kapsamına göre Sızma Testi Türleri

  • İç ve dış ağ altyapılarında bulunan güvenlik açıklarını tespit etmeye yönelik testlerdir. Firewall, router, switch, VPN, sunucu servisleri ve ağ segmentasyonu bu kapsamda değerlendirilir.

  • Web tabanlı uygulamalarda bulunan mantıksal hatalar, kimlik doğrulama zafiyetleri, yetkilendirme problemleri ve OWASP Top 10 kapsamındaki açıklar analiz edilir.

  • REST, SOAP ve GraphQL gibi API servislerinin güvenliğini değerlendirmeye yöneliktir. Yetkilendirme kontrolleri, token yönetimi, veri sızıntıları ve iş mantığı zafiyetleri bu testlerin odak noktasıdır.

  • Android ve iOS uygulamalarının hem istemci tarafı hem de arka uç iletişimleri analiz edilir. Tersine mühendislik, veri saklama mekanizmaları ve API entegrasyonları test edilir.

  • Wi-Fi altyapılarının şifreleme yöntemleri, erişim kontrolleri ve yetkisiz bağlantılara karşı dayanıklılığı ölçülür. Rogue Access Point ve MITM saldırıları simüle edilir.

  • İnsan faktörünü hedef alan testlerdir. Phishing, vishing, fiziksel erişim ve farkındalık senaryoları üzerinden kurum çalışanlarının tehditlere karşı tepkileri değerlendirilir.

  • Uygulamanın kaynak kodları statik veya dinamik yöntemlerle incelenir. Mantıksal hatalar, güvenli olmayan fonksiyon kullanımları ve arka kapılar bu analizle tespit edilebilir.

  • Endüstriyel kontrol sistemleri ve kritik altyapılar için yapılan özel testlerdir. PLC, HMI, RTU gibi bileşenlerin güvenliği değerlendirilirken operasyonel süreklilik önceliklendirilir.

  • AWS, Azure, GCP gibi bulut ortamlarında yanlış yapılandırmalar, erişim politikaları ve servisler arası yetkilendirme sorunları incelenir.

  • Kurumsal kimlik altyapılarının güvenliğini ölçmeye yöneliktir. Yetki yükseltme, lateral movement ve domain takeover senaryoları test edilir.

  • Akıllı cihazlar, firmware yapıları ve gömülü sistemlerde donanımsal ve yazılımsal zafiyetler analiz edilir.

    Bu test türleri, kurumun faaliyet alanına, kullandığı teknolojilere ve risk önceliklerine göre özelleştirilebilir ve birbirini tamamlayacak şekilde uygulanabilir.

    Sızma Testlerinin Önemi

    Sızma testleri, kurumların siber güvenlik seviyesini proaktif olarak değerlendirmesini sağlayan en etkili yöntemlerden biridir. Gerçek saldırılar gerçekleşmeden önce zayıf noktaların tespit edilmesine olanak tanır.

    Günümüzde siber saldırıların karmaşıklığı ve sıklığı artarken, yalnızca güvenlik ürünlerine güvenmek yeterli değildir. Sızma testleri, bu ürünlerin ve uygulanan güvenlik politikalarının gerçek hayatta ne kadar etkili olduğunu ölçer.

    Sızma testlerinin kurumlara sağladığı başlıca faydalar;

  • Gerçek saldırı senaryolarına karşı hazırlık seviyesinin ölçülmesi
  • Kritik güvenlik açıklarının erken aşamada tespit edilmesi
  • Veri ihlali ve finansal kayıp risklerinin azaltılması
  • Yasal ve düzenleyici gereksinimlere uyumun desteklenmesi
  • Bilgi güvenliği farkındalığının artırılması
  • Ayrıca penetrasyon testleri, CVSS gibi skorlama sistemleriyle birlikte kullanıldığında, tespit edilen zafiyetlerin önceliklendirilmesini sağlar ve kaynakların doğru alanlara yönlendirilmesine katkı sunar.

    Sonuç olarak sızma testleri; kurumların dijital varlıklarını korumak, iş sürekliliğini sağlamak ve siber tehditlere karşı dirençli bir yapı oluşturmak için vazgeçilmez bir güvenlik pratiğidir.

    Neden Web?

  • // Hyper Text Transfer Protocol Secure World Wide Web dot pentest dot IDN Turkey //
  • // https://www.pentest.com.tr //

    Günlük hayatımızın bir kısmında veya işimize göre neredeyse tamamında giderek artış gösteren web uygulamaları kullanımı yer almaktadır. Artık hayatımızın her alanına entegre edilmekte, beraberinde özel bilgilerimizi barındırdığı gibi çalışmalarımızın da saklandığı bir dünya haline gelmiştir. En köküne inerek başlayacak olursak, orjinalinde WEB sadece statik broşürlerden ibaretti. Günümüzde web sitelerinin bir çoğu karmaşık şekilde büyümüştür. Statik broşürden kastım fonksiyonel olmayan ve sadece görüntülenebilen basit yapılardır. Karmaşık şekilde büyümesi ise, tam işlevsel ofis suitlerinin web tarayıcılar aracılığıyla şirket çalışanlarına ve internet üzerinden portallar vasıtasıyla halka sunulmasıdır. Bu sebeple WEB dünyasının güvenliği de bizi doğrudan ilgilendirmektedir.

    Günümüzde teknoloji ileri seviyelere gelmiş olsa bile, WEB güvenliği konusunda farkındalık edinmemiş bireylerin WEB kullanımını sürdürmesi kaçınılmaz şekilde tehlike arz etmektedir. WEB'in gelişimi ile birlikte güvenlik altyapıları oluşturulmuş ayrıca bu karmaşık WEB uygulamalarından sorumlu yönetici statüleri de ortaya çıkmıştır. Bir çok kurum ve kuruluş WEB tabanlı kritik iş uygulamalarını aktif olarak kullanmaktadır. WEB, günlük ve iş hayatımızda ne kadar kolaylık sağlıyor olsada, doğru orantılı olarak güvenlik zaafiyetleri yaratarak hayatımızı olumsuz anlamda etkileyebilir. Bu durumda en büyük görev biz siber güvenlik uzmanlarına ve uzman adaylarına düşmektedir. Sadece iş mantığıyla değil, sesimizin yettiği yere kadar siber güvenlik farkındalığı için çaba sarfetmeliyiz. Gelişmiş WEB sistemleri ve oluşturduğu riskler sebebiyle, saldırı tehditi de artış sergilemektedir. Saldırganlar bu zaafiyetleri manipüle ederek kullanmaktadır. Ayrıca bu durum sahtekarlık yaparak para kazanmak isteyen kişiler için büyük bir kazanç kaynağı olabileceği gibi saldırganın sistemde karışıklığa yol açmasına sebep olabilir.

    Web Uygulamaları Neden Popüler Hedeftir?

    İlk olarak yaygın kullanımı nedeniyle hedef haline geldiğini rahatlıkla söyleyebiliriz.

    Yıllar önce internet kullanımının büyük bir oranı akademik ve araştırma ortamı olarak kullanılmaktaydı. Şimdi ise World Wide Web (WWW) sayesinde bir çok insanın ve organizasyonun günlük hayatına dahil olmuştur. Web uygulamalarının en büyük avantajlarından biri, kullanıcının yorulmadan varsayılan ayarları kullanarak portatif yani seyyar yayın ve çalışma alanı oluşturmasıdır. Ayrıca masaüstü uygulamalardan daha kolay kurulabilirler.

    Web uygulamaları sıklıkla hassas ve kişisel bilgileri depolamak, yönetmek ve bunlara erişmek için kullanılır. Banka hesaplarımıza erişmek ve kredi kartlarımızı yönetmek için web uygulamalarını kullanıyor olmamızı örnek gösterebiliriz. Keza aynı şekilde şirketler bu hizmetleri sağlamak amacıyla web uygulamalarını kullanmak durumundadır. Büyük şirketlerin ve devlet kurumlarının vazgeçilmez olarak kullandığı bu web uygulamaları, içerisinde barındırdığı değerli bilgiler nedeniyle açık hedef haline gelerek saldırganların listesinde ilk sıralarda yer alabilirler.

    Geçmiş yıllarda WEB'in etkileşimi olmayan statik sayfalardan oluştuğundan bahsetmiştik. Günümüzde ise web uygulamaları interaktif olup, dosya paylaşımı ve mobil cihazlar da dahil olmak üzere çok çeşitli amaçlar için kullanılmaktadır.

    Bu durum SQL injection, Cross-Site Scripting ve bir çok web güvenlik açığının kullanılarak web uygulamalarının sömürülmesinde adeta saldırganlar için yeni bir kapı açılmasına vesile olmuştur. Sadece kişisel verilerin bulunması değil, WEB sitesinin popülerliği de büyük bir etken olabilir.

    HTTP Protokolü

    Hypet Text Transfer Protocol türkçe anlamı ile "Hiper Metin Transferi Protokolü" olarak çağrılabilir. Server-Client / Client-Server yani Sunucu ve İstemci (Kullanıcı) arasında bilginin hangi yol ve kurallarla aktarılacağını belirleyen patikadır. Web servisler için kullanılan temel protokol olup çalışma mantığına ve servisi manipüle etmeye yönelik tekniklere de aşina olmak gerekmektedir.

    HTTP/HTTPS arasındaki fark ise güvenli bilgi alışverişine sahip olunup olunmadığının vurgulanmasıdır. Protokolün alışverişi güvenli sertifika üzerinden gerçekleştirmesidir.

    Protokolün sonuna eklenen "S" harfi "Secure Sockets Layer" teknolojisini temsil etmektedir. Türkçe karşılığı "Güvenli Soket Katmanı" yani SSL, bilgi alışverişinde bulunacak olan iki nokta arasındaki iletişim trafiğini şifreli kanal üzerinden geçişini yaparak güvenli şekilde veri iletilmesini sağlayabilen teknolojidir.

    SSL sertifikasına sahip WEB sunucularının HTTPS üzerinden güvenli(Secure) bağlantı yaptıklarını görebiliriz. Nitekim günümüzde kullandığımız güncel tarayıcılar bu konuda uyarılar da yansıtmaktadır. SSL kullanılması tehlikeli atak vektörlerinin bir çoğunu engelleyebilir.

    The Tangled Web (Karışık-Dolanmış WEB) @Michael Zalewski (SANS)

    Bu öneriyle ilk olarak SANS şirketine ait bir dökümanda karşılaştım. Bu sertifikayı almaktan vazgeçsem bile dökümanı okuyarak ilginç bilgiler edinmem kaçınılmaz oldu. Paylaşımı yasak olduğu için link veremiyorum.

    "The Tangled Web", Michael Zalewski"nin seçkin bir kitabıdır. Aynı zamanda "p0f", "American Fuzzy Lop" gibi araçlar onun parmaklarından çıkmıştır. Kitap web ile ilişkili olan tasarım ve güvenlik sorunlarını kapsamlı bir şekilde içermektedir. Zalewski'den bahsetmek istememin sebebi, web geçmişinin ve alınan eski kararların günümüzdeki mevcut WEB'i neden etkilemeye devam ettiğini açıklamasıdır. Örneğin; HTTP tarihine bakarak HTTP'nin yazarlarının arzuları ve internetin gittikçe artan önemi arasındaki ilginç bir bağlantıyı keşfedebiliriz.

    Örneğin Tim Barners-Lee tarafından oluşturulan HTTP/0.9 protokolünün en eski taslağı bir buçuk sayfa uzunluğundaydı ve HTML olmayan (non-HTML) verileri iletmek için gereken esneklik gibi, geleceğe yönelik ihtiyaçları hesaba katamamıştır.

    Günümüzde tüm istemciler ve sunucular tartışılır bir biçimde HTTP/1.0 süper setini desteklemektedir ve çoğu HTTP/1.1'in makul şekilde dilini yani lehçesini çözümleyip konuşabilmektedir. Hiç bir pratik ve mantıksal gerekçesi olmamasına rağmen bir çok web sunucusu ve tüm yaygın tarayıcılar ise aynı zamanda HTTP/0.9 ile geriye dönük uyumluluğu sürdürmektedirler. Bunun sebebi ise geçmişte alınan yanlış/eksik kararlardır.

    Nitekim, HTTP/2 Internet Engineering Task Force (IETF) adlı uluslararası standart kuruluşunun HTTP Working Group (httpbis) adlı çalışma grubu tarafından geliştirilmiştir. Bu çalışma grubu, çok sayıda mühendis, protokol uzmanı ve şirket temsilcisinden oluşmaktadır. Dolayısıyla tek bir kişiden çıkan veya bir kaç kişinin tercihlerine bırakılmış olan protokol yapısına çeki düzen verilmiştir.

    Bu sebeple geliştiricilerin arzularından ve anlık ihtiyaç giderme eğilimlerinden ziyade, yeni teknolojilerde gelecek ve geçmiş arasındaki bağlantı bozulmadan olabilecek en ileri düzey düşünülerek çalışmalar yapılmaktadır.

    Durumu kitabında daha detaylı ele alan Zalewski, aynı zamanda web uygulamaları hakkında da bir çok önemli konuya değinmektedir. Profesyonel olmak istediğimiz konunun en temeline ve geçmişine inmek çok önemlidir. Bu yüzden günümüze kadar gelen bu teknolojiyi hem teknik hem de psikolojik adımlarıyla incelemenin büyük faydası olacağını düşünmekteyim. Web uygulamaları üzerinde ileri seviye düşünen arkadaşlarıma bu kitabı kesinlikle tavsiye etmekteyim. Türkçe kaynak öneremiyorum :/

    "The Tangled Web" hakkında daha fazla bilgi edinmek için bu linki inceleyebilirsiniz.

  • The Tangled Web // Nostarch
  • WEB 2.0: Artan İşlevsellik

    WEB siteler bilmiyor/anlamıyor olmalarına rağmen arka planda bir çok işlem gerçekleştirerek gerekenden daha fazlasını yapabilirler.

    WEB istemcileri anlamak, WEB uygulamalar üzerinde güvenlik testi gerçekleştirmek için çalışma ve yapısal mantığını tam anlamıyla idrak etmemiz gerekmektedir. Ayrıca bu bilgi kullanıcılara da aktarılmalıdır.

    "Web 2.0" ibaresi aslında yıllar boyunca kulaklara aşırı rahatsız edici ve anlamsız gelmekteydi. Buna rağmen "Web 2.0" ibaresinin günümüzde giderek zengin, dinamik ve hatta karmaşık web uygulamaları ile ilişkilendirilebileceği halde olduğunu söylebiliriz. "WEB 1.0" ile sadece okuyucu konumunda olan kullanıcılar, "WEB 2.0" ile birlikte tüketici rolden çıkarak üretici haline gelebilmektedir.

    WEB uygulamalarının zenginleşmesine olanak sağlayan "WEB 2.0" artık çok anlam ifade etmekte ve siber güvenliğin oluşumunda ise doğrudan rol oynamaktadır.

    "WEB 2.0" ile birlikte sunulan "Mash-up" teknolojisi artan işlevselliği daha iyi açıklamaktadır.

    Peki bu teknoloji nedir? kısaca değinelim.

    "Mash-up", farklı kaynaklarda yer alan metin, görüntü, ses ve video türleri gibi içerikleri bir araya getirerek, yeni bir düzenleme veya tasarım ile yayınlanmasıdır. Bu açıklama ile kafamızda şekillenen şey, günümüzde yaygın olarak kullandığımız fonksyonel WEB siteleri olacaktır.

    Ayrıca "WEB 2.0" ile birlikte AJAX ve diğer benzeri teknolojilerde entegre hale getirilebilmektedir.Sitelerin biz kullanıcılar için istekte bulunmasına izin vererek, bu isteklerin karşılıklarının çalıştırılmasında rol oynamaktadır.

    Bu etkileşimi ise WEB uygulamalarıyla arasında arabirim(interface) oluşturan web tarayıcılar ve mobil uygulamalar gibi araçlar gerçekleştirmektedir. Kullanıcıların bilgisayar aygıtlarından yararlanmarının birincil yolu budur. Kısacası WEB uygulamalarının gelişimi ve artan işlevselliği sayesinde WEB, tüm organizasyonlar için merkezi bir konum durumuna gelmiştir.

    AJAX, aslında WEB 2.0'ı işlevlendirmek için kullanılan klasik örneklerden sadece birisiydi. Eşzamansız olarak JavaScript ve XML'de WEB sayfalarını daha etkileşimli bir hale getirmenin popüler yollarıdır. Tipik WEB siteleri, kullanıcının bir bağlantıyı veya görüntüyü tıklatmasını, isteğin sunucuya gitmesini ve ardından WEB sayfalarının sonuçla birlikte yeniden çizilmesi gerektirir. AJAX ile kullanıcı, siteyle etkileşime girdikçe arama yapmak ve sunucudan veri almak için JavaScript kodu çalıştırır. Sonrasında ise veri alındıkça sayfa dinamik olarak güncellenir. Google haritalar bu teknolojinin mükemmel bir örneğidir.

    WEB 3.0: Anlamlandıran, Otonom ve Dağıtık

    Web 3.0, Web 2.0’ın sunduğu etkileşimli ve dinamik yapının bir adım ötesine geçerek, web’in yalnızca veri sunan veya işleyen değil; veriyi anlayan, yorumlayan ve bağlamsal kararlar verebilen bir yapıya evrilmesini ifade eder.

    Web 2.0’da web siteleri ve uygulamalar, kullanıcı etkileşimleri sayesinde zenginleşmişti; ancak hâlâ “ne yaptığını bilmeden” işlem yapan sistemler söz konusuydu.

    Web 3.0 ile birlikte bu durum değişmektedir. Web artık yalnızca işlem yapan değil, anlam çıkaran bir yapıya dönüşmektedir.

    Web 3.0’ın temelini Anlamsal Web kavramı oluşturur. Bu yaklaşımda amaç, verilerin yalnızca insanlar tarafından değil, makineler tarafından da anlamlandırılabilir hâle gelmesidir.

    Örneğin:

  • Web 2.0’da bir sayfa, “Özkan” kelimesini yalnızca metin olarak görür.
  • Web 3.0’da ise “Özkan”ın bir kişi, bir kullanıcı, bir müşteri ya da bir çalışan olduğu bağlamı ile birlikte anlaşılır.
  • Güncel Güvenlik Testlerinin Önemi

    Çoğu büyük kurum ve kuruluş güvenlik testlerine önem veriyor olsa bile, bu testlerin güncel olarak devam ettirilmesi konusunda kararsız ve tedirginlerdir. Çalışan bir sistemin güncellenerek aksamasından, ayrıca ufak test masraflarından çekindiklerini rahatlıkla söyleyebiliriz. Genellikle kurumlar Web'e dağıtılan uygulamaların sadece iş üzerindeki işlevselliğini kontrol ederek sınamaktadır. Güvenlik açıkları çok nadiren test edilmektedir. Bu durum vulnerability mailing listelerinin günlük raporları incelendiğinde daha belirgin bir şekilde ortaya çıkıyor. Güncel zaafiyetleri takip ederek işlem yapmak neredeyse hayati önem taşımaktadır. Yayınlanan binlerce güvenlik açığından hiç birinin sizi etkilemeyeceğine test etmeden nasıl inanabilir siniz? Bu durum genelde sistem yöneticilerinin özgüveni sayesinde ortaya çıkmaktadır. "imkansız" kelimesini kullanamayacağımız nadir konulardan birisi ne yazık ki siber güvenliktir.

    Common Vulnerabilities and Exposures (CVE) - (Ortak Güvenlik Açıkları ve Etkilenmeler) üzerinde çok sayıda açık olduğunu görebilir, takip edebilirsiniz. Yeni raporlamaların çoğunluğunun artık WEB uygulamalara ait olduğunu görüyoruz. Ayrıca keşif yoğunluğu yine aynı şekilde WEB üzerinde toplanmıştır. Çok kurcalanan sistemde daha fazla zaafiyet keşfedileceği düşünceme şüphesiz sizde katılıyorsunuzdur. WEB uygulamaları zaafiyetleri Exploit Database(EDB) üzerinde de takip edilebilir. Siber güvenlik uzmanlarının zaafiyet paylaşımı gösterdiği uluslararası kabul görmüş bir platformdur.

    Üzerinde durulması gereken en önemli noktalardan biri ise, WEB uygulamasının yeteneğinini geliştirmek için acele etmemektir. Bu durum zaafiyet oluşturabilir. Kuruluş fonksyonları testlerinden ziyade iş işlevselliği testlerine odaklanılması gerekmektedir. Bu süreç sürekli devam etmeli, güvenlik testlerinin devamı getirilmelidir. Aksi takdirde güncel WEB uygulama açıkları takip edilmediği sürece ortaya çıkacak olan zaafiyetler ciddi derecede zararlara yol açabilir.

    Ayrıca çeşitli web kusurlarına karşı savunmasız olan sitelerle alakalı duyuruları bulmak için xssed sitesini kontrol edebilirsiniz. Site şuan pasif durumdadır ancak geçmiş çalışmalara göz atmak altyapı için yardımcı olabilir. Pasif halde bulunan ve güncellenmeyen siteler üzerinde bile geçmiş bilgiler sayesinde çok önemli veriler elde edilebilir.

    Başlık içerisinde bahsettiğim önemli platformların adresleri aşağıda yer almaktadır.

  • exploit-db.com
  • cve.mitre.org
  • xssed.com(pasif)
  • Sömürmek için WEB'in Doğru Anlaşılması

    Başarılı bir şekilde WEB uygulama penetrasyon testleri gerçekleştirmek için web teknolojilerini daha iyi anlamamız gerekiyor.WEB uygulamalarını exploit edebilmek için, WEB'in nasıl çalıştığı ve nasıl çalışmadığı hakkında daha derin bir anlayışa sahip olmalıyız.Bu anlayış, ortalama kullanıcının bilgi düzeyinden ve hatta geliştiricilerden ve WEB yöneticilerinden daha derin olmalıdır.Pentester normal WEB uygulama kullanıcısından farklı bir bakış açısına sahiptir.

    Test esnasında kötü niyetli düşünmek, ama profesyonelce davranmak çok önemlidir. Kısıtlamaların atlatılacağı ve yetki yükseltme denemeleri yaparak çeşitli yollara başvurulmalıdır. Hedef sistemin geliştiricileri, yöneticileri ve operatörleri hangi hataları yapmış olabilir? sorusuna yönelik çalışma haritası oluşturarak testimizin daha başarılı olmasına olanak sağlayabiliriz. Bu daha önce bahsettiğim gibi genel olarak geliştiriciler ve yöneticilerden farklı bir zihniyet ortaya koyularak gerçekleştirilir. Uygulamadaki güvenlik kontrollerini bypass etmeye odaklanarak iş mantığı problemlerini bulmakta yine farklı düşünerek elde edilebilecek uygulama açığı olabilir.

    Dolayısıyla gözümüzü ve anlayışımızı web uygulamalar üzerinde otomatik olarak açığı saptayıcı hale getirmiş olacağız. Profesyonel bir zafiyet araştırmacısı veya pentester olduğunuzda ne demek istediğimi çok daha iyi anlayacaksınız.

    WEB Uygulama Pentest Metodolojisi

    Solid yani katı,sağlam,günenilir WEB uygulamaları üzerinde pentest çalışmaları gerçekleştirmek profesyonellik ve bilgi gerektirmektedir.

    Scattershot yaklaşımı tamamen yanlıştır! Scattershot gelişigüzel, rasgele anlamına gelmektedir. Hedefe gelişigüzel yaklaşmak bizi amacımıza ulaştıramayacaktır.

    Metodolojimiz şunlar olmalıdır ;

    # Kanıtlanmışlık ilkesiyle, daha önce kanıtlanmış ve denenmiş tecrübelerimiz üzerinden yola çıkmalıyız. Buna Track Record denilmektedir.

    # Tekrarlanabilirlik ilkesiyle, daha önce elde edilip düzeltilen web uygulama hataları yeniden test edilmelidir.Geliştiriciler tarafından tekrar aktif hale getirilmiş olunabilir.

    # Açıklanabilirlik ilkesiyle, keşfettiğimiz problemleri ve düzeltmeleri anlaşılabilir bir şekilde ifade edebilmeliyiz

    Başarılı bir WEB penetrasyon testi gerçekleştirmek için bu ilkelere sahip olmalı ve sadık kalmalıyız.Gelişigüzel davranışlar güvenlik açıklarını kaçırmamıza ve işimizi tamamlayamamıza sebebiyet verecektir. Şimdi bu terimleri sektör içerisinde yer edinmiş kalıplarıyla inceleyelim.

    Proven(Kanıtlanmışlık): Bu method penetrasyon testi gerçekleştiren kişiler tarafından sahiplenilmiş temel ilkedir. Geçmişte elde edilmiş tecrübeler ve bu doğrultuda devam eden çalışmalar sizi her zaman bir adım önde tutacaktır.Nitekim bir çok pentest uzmanı yayınladığı güvenlik açıklarıyla geçmişe yönelik başarılarını kanıtlamaktadır.

    Repeatable(Tekrarlanabilirlik): Güvenlik testlerinde karşılaşılan en büyük problemlerden birisi yanlış sonuçların ortaya çıkabilmesidir. Bulunan bir zaafiyetin veya bulunamayanların doğruluğunu test etmek için testin tekrarlanması gerekmektedir. Şüpheli bulguları netleştirmek için çok önemlidir.

    Explainable(Açıklanabilirlik): Sorunları bulabilen ve güvenlik açıklarını düzeltebilen bir uzman olabilirsiniz. Fakat nasıl bulduğunuzu açıklayamıyorsanız çok büyük bir problem sahibisiniz demektir. Geleceğe ve insanların güvence altında olmasına önem veren vizyonlu bir uzman, ne yaptığını öğretebilmeli ve açıklayabilmelidir.Bu ilke ihtiyacınızı karşılayarak sizi daha profesyonel uzman haline getirecektir.

    Ek bilgi olarak OWASP şirketinin daha fazla detaylandırdığı metodoloji şeması bulunmaktadır. Aslında bu şema pentest kavramının temeline inerek yeni başlayan bireylere yönelik bilgilerde içermektedir.

  • OWASP - Web Application Penetration Testing
  • Araç Bilgisi

    Araç bilgisi temel esaslardan birisidir. Komut satırı seçeneklerini veya parametrelerini her araç için ezberlememize gerek yoktur. Nitekim araçların ana ve yardım ekranlarında bu bilgi yer almaktadır. Mevcut sızma testi araçlarına aşina olmanız, yeteneklerini anlamanız ve uygun şekilde kullanabilmeniz gerekmektedir. İlerleyen sayfalarda bir çok aracı inceleyeceğiz fakat her aracı burada göremeceğinizden emin olabilirsiniz.En sık kullanılan ve testler için çok önemli olan araçları göreceksiniz.

    Hangi yardımcı araçların mevcut olduğunu ve hangi testler için geliştirildiğini anlamak çok önemlidir. Her bir aracın kullanımında derin bilgi edinmeliyiz.

    Araç bilgisini maddeler şeklinde tanımlayacak olursak;

      # Güçlü ve Zayıf yönlerini bilmek 
      # Yaygın taktik ve tuzakları anlayabilmek ve kullanabilmek
      # Test esnasında bir araçtan alınan bilginin bir diğer aracın 
        kullanımını besleyebileceğinin farkında olunması 
      # Araçların genişletilmesi veya geliştirilmesi
      # Otomosyon için komut dosyalarının geliştirilmesi
      # Mevcut araçlar için yamalar geliştirilmesi 
      # İhtiyaçlara yönelik yeni araçlar yaratılabilmesi
    

    Bu maddelerin hepsine hakim olunduğunda çoğu sistemin sizden kurtuluşu olmayacağına emin olabilirsiniz. Araçlara hakim olmak ve hatta kendinize özgü araçlara sahip olmak sizi ileri seviye pentester haline getirecektir.

    Test için İzin

    Test edeceğimiz sistem yöneticisi veya sahibinden izin almak hayati önem taşımaktadır. Kendinizi dava edilmiş olarak bulabilir, hatta kapis cezasına çarptırılabilirsiniz! Test iznini belgelendirmeniz de çok önemlidir. Herhangi bir yetkiliden imzalı şekilde test izninin verildiğine dair belge edinmelisiniz.

    Örnek ingilizce bir belgeyi sizin için sunuyorum;

  • >> BELGE <<
  • Almış olduğunuz izin belgesi yazılı olmalı ve kesinlikle taraflarca imzalanmalıdır. Sadece sözlü onay yada basit bir e-postaya kesinlikle güvenmemelisiniz. Bu sizi çok zor bir duruma düşürebilir.

    Bu önemli kural sizin pentest uzmanı olma yolunda en kritik noktadır. Ayrıca belgeli izin, test boyunca sizi özgürleştirerek doğru sonuçlar elde etmenize katkı sağlayacaktır. Hack çerçevesinde bir çok yasa mevcuttur. Uygulamaların güvenliğini sınamak için yetkiniz yoksa, size hacker damgası vurularak dava açılması kaçınılmaz olabilir.

    WEB Uygulama Pentester Araç Seti (Toolkit)

    Profesyonel bir pentester, kendisine ait özel araç seti(toolkit) oluşturmalıdır. Bu pentester'ın "dikkatli, özenli ve planlayıcı" olduğunu gösterir.

    Bazı önemli hususlar şunlardır;

      # Atak platformu
      # Dinamik WEB uygulama güvenliği tarayıcıları (Scanners) 
      # Tarayıcılar (Browsers)
      # Yol Kesme Vekilleri (Interception Proxies)
    

    Daha önce ele aldığımız saldırı metodolojisini oldukça etkili ve verimli bir şekilde yürütmek için, araç seti oluştururken dikkatli olmalıyız. Göz önünde bulundurmamız gereken dört önemli öğe bulunmaktadır; saldırıyı başlatmak için kullanacağımız saldırı platformu, dinamik web uygulamalarına yönelik güvenlik açığı tarayıcıları, manuel inceleme ve dorğulama için kullanacağımız web tarayıcıları ve son olarak Interception proxy'ler.

    Interception proxy'ler, proxy'leri kesmek, analiz etmek, değiştirmek ve bazı durumlarda ise istemci(client) ve sunucu(server) arasında oluşturulan oturum trafiğine sızmak için kullanılır.

    Şimdi bu hususları tek tek ele alalım.

    I-Atak PLatformu

    Windows, Linux, Mac OS X olabilir. Ağ testlerinde bu platformlar çok önemlidir ancak web uygulama testleri için hangisini kullanacağınız pekte önemli değildir. Ancak pentest için geliştirilmiş olunan işletim sistemlerini kullanmanızda elbette fayda vardır. Önceden kurulmuş sanal makinalar testlerinizde zaman kazandırabilir.

    Daha önce network penetrasyon testi üzerinde çalışanlar, işletim sistemi seçiminin web uygulama pentesti için de ne kadar önemli olduğunu bilirler. Sizin kendinizi kullanırken en rahat hissettiğiniz platform, web penetrasyon testi faaliyetlerizde yeterli olacaktır. Seçtiğiniz işletim sisteminiz üzerinde bazı araçları kullanamayabilirsiniz. Bu durumda diğer işletim sistemleri üzerinde de bilgi sahibi olmak önemlidir. Ayrıca bir çok işletim sisteminin özelliğini taşıyan tarama araçlarını kullanmakta da fayda vardır.

    Pentest gerçekleştirirken kullanmaya alıştığımız platform her zaman elimizin altında olmalıdır. Bu yüzden çeşitli işletim sistemlerini sanal olarak kurmamız gerekir.

    Web uygulama penetrasyon tesleri göz önünde bulundurularak oluşturulan Linux tabanlı işletim sistemleri mevcuttur. Özellikle de aşağıdaki üç Linux dağılımı bu alanda dikkat çekmektedir.

    # Kali - Eskiden Backtrack olarak bilinen Kali, sorgusuz olarak en popüler penetrasyon testi dağılımıdır. Kali özellikle de web uygulama penetrasyon testlerinde başarı sağlayan bir işletim sistemidir.

    # Parrot Security - Kali gibi penetrasyon testi, güvenlik açıklarının değerlendirilmesi ve azaltılması ve adli bilişim gibi bir çok konuyu içinde barından dağılımdır.

    # SamuraiWTF - SANS şirketi tarafından web penetrasyon testleri için özel olarak geliştilmiş işletim sistemidir. (Web Testing Framework)

    Eğer sık kullanılan Kali Linux işletim sistemine sahipseniz, ihtiyacınız olan bir çok araç otomatik olarak içerisinde yer almaktadır. Paketleri güncellemek için aşağıdaki komutu çalıştırabilirsiniz.

    # apt-get update && apt-get install kali-linux-web
    

    Ek olarak diğer özel güncellemeler için kullanılan parametreler şunlardır;

    kali-linux-web - Kali Linux Web Uygulama Araçları
    kali-linux - Kali Linux Temel Sistem
    kali-linux-all - Kali Linux Tüm Paketler
    kali-linux-forensic - Kali Linux Adli Bilişim Araçları
    kali-linux-full - Kali Linux Complete Sistem
    kali-linux-gpu - Kali Linux GPU Araçları
    kali-linux-pwtools - Kali Linux Şifre Kırma Araçları
    kali-linux-rfid - Kali Linux RFID Araçları
    kali-linux-sdr - Kali Linux SDR Araçları
    kali-linux-top10 - Kali Linux En Popüler 10 Araç
    kali-linux-voip - Kali Linux VoIP Araçları
    kali-linux-wireless - Kali Linux Wireless Araçları
    

    II-Web Uygulama Güvenliği Tarayıcıları (Sanners)

    Son derece kullanışlı ve zaman kazandırıcı bu otomatik tarayıcılar, web uygulama pentester için bulunmaz nimettirler. Çok sayıda büyük uygulamayı hızlı bir şekilde tarayabilme yeteneğine sahiptirler. Manuel gerçekleştirmemiz gereken testleri hızlı şekilde uygulayarak zamanı iyi değerlendirmemize sebebiyet verirler. Ancak bu otomatik tarayıcılar bizim için güçlü araçlar olsa bile kendimizi onlarla bağdaştırırsak aynı zamanda zayıflığımız da olabilirler. Eğer çok hızlıysak, işin derinliğine inemediğimizin ve bir çok şeyi es geçtiğimizin farkına da varmalıyız. Web uygulama güvenlik tarayıcılarını elbette kullanacağız. Ancak kendimizi tamamen bu araçlara yönelik çalışmaya sokmamalıyız. Araçlardan beklentilerimiz ne kadar fazla olursa, aynı orantıda başarısız olunması kaçınılmazdır.

    Örnek bazı tarayıcıların isimleri şöyledir;

    - Burp Pro
    - OWASP ZAP
    - Acunetix WVS 
    - Netsparker
    - Nikto
    - HP WebInspect 
    - IBM AppScan 
    - Qualys WAS 
    - Trustwave App Scanner 
    - Whitehat Sentinel 
    - Subgraph Vega
    

    gibi çok fazla sayıda scanner bulunmaktadır. Peki "en iyisi hangisi?" diye sorduğunuzu hissedebiliyorum.

    Hepsi genel taramalarda çok iyi araçlardır. Ancak ince konuları tespit etmekte genellikle de başarısız olurlar. Aslına bakarsak, sizin yetenekleriniz doğrultusunda en iyi tarayıcının hangisi olduğuna siz karar vermelisiniz. Hangi aracın size daha iyi yardımcı olabileceğini bilmeden tavsiye vermek hiç te doğru olmayacaktır.

    Çok büyük yapıya sahip bir web uygulama sistemi üzerinde test yapıyor olabilirsiniz. Bu durumda bu tür tarayıcılara kesinlikle ihtiyacınız olacaktır. Bu geniş hacim sebebiyle bir çok noktaya titiz davranamazsınız. Yorgun düşmenize ve verimsizliğe de yol açabilir. Bu araçları önemli noktaları keşfetmek için kullanmalıyız. Bu noktaları ise titizlikle incelemeli, araçların söylemlerini net bir şekilde doğrulamalıyız.

    Ağ üzerinden tarama yapabilen NESSUS tarzında bir program kullansanız bile, dinamik web güvenlik açığı tarayıcılarına da ihtiyaç duyacaksınızdır. Çünkü web uygulama tarayıcıları ve ağ tarayıcıları arasında çok farklı bir çalışma mantığı bulunmaktadır. Çok sağlam olduğuna inandığınız tek bir tarayıcıyı kullanmanız performansınızı olumsuz etkileyebilir.

    Bir web uygulama güvenlik tarayıcısının etkili olması için, web uygulamasıyla doğrudan etkileşime girmesi ve bu etkileşime dayanarak güvenlik açıklarının bulunup bulunmadığına karar vermesi gerekir. Web uygulama güvenlik tarayıcılarının kardeşi sayabileceğimiz ağ güvenlik açığı tarayıcılarının web kusurlarını tespit etmede neredeyse hiç başarılı olamayacağını kabullenmemiz gerekmektedir. Yanlış araçlardan doğru sonuç beklememeliyiz.

    Konumuza geri dönecek olursak, "En iyi hangisi?" sorusuna vereceğim cevap; Hiçbiri diğerlerinden daha iyi değildir. Üzerinde çalışacağınız sistemi bilmediğimiz için hangi aracında daha verimli olacağını söylememiz imkansızdır.

    III-Web Tarayıcılar (Browsers)

    Web tarayıcılar, penetrasyon testlerinin olmazsa olmazıdır. Nitekim çok önemli testleri onlar olmadan gerçekleştiremeyiz. Tarayıcı seçiminde bir savaş başlatmak istemiyorum :) Fakat tarayıcıların önemle dikkate alınması gerektiğini vurgulamak istiyorum. Tarayıcı seçiminizi kesinlikle hoş gözükmesini sağlayan makyajına göre seçmemelisiniz. Test işlemlerinde konfigürasyonu mümkün ve yetkisi yüksek olarak sunulmuş olanları tercih etmeliyiz.

    Şu maddeleri ele alabiliriz;

    # Güvenlik testini gerçekleştirirken destekleyici etkenlere sahip ve bize engel olmayacak bir tarayıcı olması.

    # Engel olsa bile bunu yapılandırabilme yetkimizin de verilmesi

    # Tarayıcının yeteneklerini uzantılar(extensions) veya eklentiler(add-ons) sayesinde geliştirerek avantajımız doğrultusunda kullanabilmek

    # En önemlisi ise tarayıcının davranışlarına ve tepkilerine alışabiliyor olmamızdır. Tarayıcı aynı hatalarda farklı davranışlar sergilememelidir.

    Bu maddeler tercihimizi kolaylaştırabilir.

    Tarayıcımızın yeteneğinin genişletilebilir olması çok önemlidir. Ayrıca yukarıda değindiğimiz gibi test esnasında bize engel olmamalıdır. Aksine destekleyici unsurlara sahip olmalıdır. Bu doğrultuda eklenti(add-ons) mağazaları geniş ve çeşitli olan tarayıcılar Firefox ve Chrome' dur.

    Tercih ettiğimiz tarayıcımızı işe yarar eklentilerle penetrasyon testleri için uygun hale getirmeliyiz. Şablonları kullanışımıza hazır ve zaman kazandırıcı halde yerleştirmeli, ihtiyacımız doğrultusunda eklenti kullanımı hakkında da bilgi sahibi olmalıyız.

    IV-Yol Kesme Vekilleri (Interseption Proxies)

    Yelpazemizin bir tarafında otomatik tarama araçları(sanners) bulunurken, diğer tarafında ise web tarayıcılar(browsers) bulunmaktadır. Yol Kesme Proxy'leri (Interseption Proxies) pentest için oluşturacağımız araç takımının son ana parçasıdır ve bir pentester cephanesinin en önemli rol taşıyan unsurlarından biridir.

    Bir web uygulama penetrasyon tester için en önemli araçtır. Bu araç basit basmalı tarama araçlarından (push-button scanners) daha mantıklı olmamızı sağlayacaktır. Yol Kesme Proxy'leri web tarayıcılar üzerinde manuel test yapılmasından çok daha faydalı bir şekilde bize yardımcı olarak, doğru hedeflere etkili işlem uygulamamızı sağlamaktadır.

    Interseption Proxy araçlarının hepsi varsayılan olarak 8080 portu üzerinden dinleme yapmaktadır. Bu tabii ki özel konfigürasyon ile değiştirilebilir. Tarayıcıyı 127.0.0.1:8080 üzerinden vekil tayin ederek karşı sunucudan gelen ve giden istekleri dinlemeye alır. Bu tıpkı ve tamamen aynı diyebileceğimiz Man in the Middle(MITM) yani ortadaki adam saldırısına benzemektedir.

    Üstünde duracağımız en önemli araçlar Zed Attack Proxy(ZAP) ve Burp Suite olacaktır. Bu araçlar günümüzde en popüler ve en etkili olanlardır.

    Canlı Uygulama

    https://sasanlabs.github.io/VulnerableApp/

    sudo apt  install docker-compose
    git clone https://github.com/SasanLabs/VulnerableApp.git
    akkus@akkus:~/Desktop/VulnerableAPP$ git clone https://github.com/SasanLabs/VulnerableApp.git
    Cloning into 'VulnerableApp'...
    remote: Enumerating objects: 7784, done.
    remote: Counting objects: 100% (17/17), done.
    remote: Compressing objects: 100% (17/17), done.
    remote: Total 7784 (delta 4), reused 0 (delta 0), pack-reused 7767 (from 3)
    Receiving objects: 100% (7784/7784), 42.43 MiB | 2.30 MiB/s, done.
    Resolving deltas: 100% (3932/3932), done.
    

    Teşekkürler (AkkuS)

    Original text