Owasp ZAP (Zed Attack Proxy) ile güvenlik testleri
Yazılım güvenlik testleri dediğimizde yaşamış olduğumuz ülkede maalesef çokda önemsenmeyen veya projenin son fazında 1-2 günlük çalışma ile halledileceği düşünülen ama gerçekte bu iş için ciddi zaman ayrılması gereken bir konudur.
Çalışmış olduğum projede güvenlik testlerini yapmamız için gerekli araştırmalar yaptım. Geçmişte Hp’nin bir ürünü olan HP WebInspect Fortify kullanıldı. Bu programı kullanarak rahat bir şekilde otomatik güvenlik testlerinizi yapabiliyorsunuz. Programın her adımında ne yapmanız gerektiği, nasıl davranmanızı program size gösteriyor. Tabi bu programın bir maliyeti var ve Türkiye içinde de hatrı sayılır bütçe ayırmanız gerekiyor.
Gerek bütçe gerekse hp programı yerine alternatif olacak başka bir program araştırma gereksinimi bulundu. Araştırmalar sonucunda hem open source olması hem de kod geliştiren kitlenin yopun olması sebebiyle Owasp ZAP programı kullanmaya karar verdik. Owasp Zap’ın sayfasına gitmek için tıklayın.
Kurulumu son derece basit platform independent olması sebebiyle istediğiniz işletim sistemine kurabiliyorsunuz. Kurduktan sonra misal ben firefox ile çalıştım. Proxy ayarlarını manuel yapıp sunucu olarak localhost, port olarak da 8080 yazıyoruz. Bu Owasp ZAp programının otomatik olarak dinlediği porttur. İsterseniz Tools -> Options -> Local Proxy’den bunu değiştirebiliyorsunuz.
Programı çalıştırdığınızda sizi ilk olarak aşağıdaki ekran görüntüsü karşılamakta.
Direk atak yapmak istediğiniz linki yazarak sitenin açıklarını sizin için bulacaktır. Programın kullanışına daha fazla değinmeyeceğim. Malum Youtube olsun google amca olsun owasp zap yazdığınızda önünüze size yetecek kadar anlatım bulabileceksiniz. Ama programı önerir misiniz derseniz kesinlikle öneririm. User, session management olsun gerçekten çok başarılı bir uygulama olmuş. Ayriyeten programın add-on özelliği ile programın işlevselliğini artırabilirsiniz.
Bugün itibari ile üstünü çizdiğim aşağıdaki yazı geçerliliğini yitirdi. Viewstate bilinen bir konu ve kullanıcıların login olması konusunun düşünülmememsi imkansız. Bu konu üzerine gittim ve nihayetinde bu işin nasıl çözüleceği konusunu buldum. Zap ile gelen “Zest Script” ile bir önceki sayfada bulunan herhangi bir değişkeni parametre tanımlayarak post etme aşamasında ilgili değişkene atayabiliyorsunuz. Sağolsun Simon adım adım ne yapılması gerektiğini yazmaktadır. İlgili yazı için tıklayın.
Türkçeye çevirmeye şuan için üşendiğim için aşağıya gerekli adımların ingilizce halini kopyalıyorum.
Zest is essentially ZAPs macro language, but much more powerful.
Some pointers to get you started..
- Perform the requests you want to make via your browser proxying them through ZAP
- Locate and select them in the History tab, right click and “Add to Zest Script -> New Zest Script…”
- Give it a title and click Save
- Anti CSRF tokens _should_ be extracted and used automatically
- For other form based tokens you need right click on the request in the script and select “Add Zest Assignment -> Assign variable to a form field…”
- Then give it a suitable name and select the form / field you want
- To use variable in a request double click the request to edit it, put the cursor where you want the value, right click and select “Zest paste variable -> <variable name>”
- To fuzz a set of requests highlight them all, right click and select “Surround with -> Loop File” (assuming the fuzzing vectors are in a file) then select the file, give a loop variable a suitable name and use it as above
Programı öneririm dedim ama maalesef asp.net ve JSF olan projede çok sağlıklı çalıştığını söyleyemeyeceğim. Tabi uygulamada login olayı var ise. Çünkü viewstate’ler yüzünden kullanıcıyı login etmek için milyon takla atmanız gerekmekte oda pek sağlıklı çalıştığını söyleyemeyeceğim. Ama php, jsp vs. diğer dillerde ise projenizin bir problemle karşılaşacağınızı düşünmüyorum. En azından sorularınıza cevap bulabilirsiniz.
Simon Bennetts (@psiinon) dediğim kişi bu uygulamanın yapımcısı diyebiliriz. 🙂 Bu konuyu kendisine twitterdan sorduğumda kendisini JSF veya Asp.Net ile uygulama geliştirmediğini ve login ekranı ile ilgili maalesef yardımcı olamayacağını söyledi.
Umarım yazımın sizlere azda olsa bir yol göstereceğini düşünüyorum.
Yorum Yapın
Etiketler
Son Yazılar
- Uzak sunucuda bulunan android cihaz ile otomasyon
- Mac’ de çoklu Java versiyon yönetimi
- İş yarar docker komutları
- Eski branchlerin git’ den silinmesi
- Kubernetes Süresi Dolmuş Sertifikaları Yenilemek
Son Yorumlar
- Hosting koşuşturması için
- Garanti Sanal Pos Kurulumu, Sorunlar ve Çözümler için
- Visual Studio Toolbox’a component(bileşen) eklenmesi için
- “File is too large for destination file system” hatasını gidermek için
- Php’de UTF-8 Türkçe karakter sorunu ve çözümü için
Bağlantılar
Arşivler
- Kasım 2021
- Eylül 2021
- Ağustos 2021
- Temmuz 2021
- Aralık 2020
- Kasım 2020
- Ekim 2020
- Eylül 2020
- Kasım 2017
- Mayıs 2017
- Mart 2017
- Şubat 2017
- Ocak 2017
- Nisan 2015
- Aralık 2014
- Mayıs 2014
- Eylül 2013
- Haziran 2013
- Şubat 2013
- Kasım 2012
- Ekim 2012
- Eylül 2012
- Mart 2012
- Şubat 2012
- Ocak 2012
- Aralık 2011
- Kasım 2011
- Ekim 2011
- Eylül 2011
- Temmuz 2011
- Haziran 2011
- Mayıs 2011
- Mart 2011
- Ocak 2011
- Aralık 2010
- Kasım 2010
- Ekim 2010
- Eylül 2010
- Ağustos 2010
- Temmuz 2010
- Haziran 2010
- Mayıs 2010
- Nisan 2010
- Mart 2010
- Şubat 2010
- Ocak 2010
- Haziran 2009
- Mayıs 2009
- Nisan 2009
- Mart 2009