Bu konuda birkaç web hacking alanında bilgi birikimini arttırmak isteyenler için birkaç döküman paylaşacağım.
Günümüzde birçok büyük oluşum web uygulamalarında HTTP request alıp direkt olarak HTTP response döndürmekten öteye geçmiş durumda. Hacking bilgilerimizi güncel tutmak, araştırmacılığa devam et belki bir hackerda en çok olması gereken bir özellik. Sürekli öğrenmek, yeni teknolojileri ve yeni yaklaşımları takip edebilmek. Ancak bu yeni şeyleri öğrenmeye başlamadan önce temel bir hacking bilgisi elde etmemiz gerekiyor ve bilmediğimiz konularda daha fazla araştırma yaparak eksikliklerimizi gidermemiz lazım.
Burada vereceğim kaynaklar sizi A'dan B'ye götürür. B'den C'ye gitmek için kendi araştırmanızı yapmalısınız.
Bu vereceğim dökümanları anlamanız için öncelikle bir web uygulaması geliştirmeniz lazım aksi takdirde zafiyeti öğrenseniz bile nerede olacağınız görmeniz çok zor olabilecektir.
Tavsiyem: LAMP stack altyapısı üzerinden bir PHP frameworkü ile eticaret uygulaması geliştirin. Burada temel amaç olabildiğince farklı fonksiyonları kodlayarak gerçek hayatta o fonksiyonları gördüğünüzde aklınızda bir fikir oluşmasıdır. Bu fikirler de bizleri mantık kurarak zafiyete ulaştırır. Taktik basit, geliştirmeyi bilmeden hackleyemezin veya çooook zorlanırsın.
Siz bu eticaret uygulamasını geliştirmeye başladığınızda birçok olayı öğreneceksiniz: Web nasıl çalışır, DNS/HTTP protokolleri, servisler, sunucular, MVC yaklaşımı, SQL dili ve RDBMS kullanımı, JSON objeleri/XML dili, Dosya yükleme/silme/güncelleme, veritabanından veri güncelleme/silme/okuma/ekleme ve ORM, Template engine, Mail işlemleri, Import/Export, cart curt bu devam eder ama bakın gördünüz dimi sistemi kompleksleştirdiğiniz zaman o alanda bi hakimiyetiniz olacak dolayısıyla yarın birgün benzer bir componentle karşılaştığınızda çok rahat anlayabileceksiniz, emin olun bir şeyin nasıl inşa edildiğini tahmin edebilirseniz o binayı çok rahat yıkarsınız hiç bilmemenize oranla.) Bunları bilmek sizi rahatlatır, ek olarak bu eticaret uygulamasını bir kere kodladığınız zaman aynı işlemleri başka tech stacklerde de gerçekleştirebilirsiniz çünkü genel web uygulama geliştirme benzerdir tabi her dilin incelikleri var daha performanslı yolları olabilir ama ben size yazılımcı olmayı göstermiyorum ki haddim de değil ben size sadece hacking için temelleri bilmenin ne kadar önemli olduğunu göstermek istiyorum.
Yazılımlarda oluşabilecek zafiyetlerin nasıl oluştuğunu anlamak için ve bu zafiyetlerin oluşturacağı potansiyel riskleri azaltmak için yazılımcıların nasıl yaklaşmaları gerektiğini buradaki dökümanı baştan sona okuyarak anlarsınız: https://owasp.org/www-project-code-review-guide/assets/OWASP_Code_Review_Guide_v2.pdf
Yazılımlardaki zafiyetlerle neler yapılabileceğini kavramak için: https://github.com/OWASP/wstg/releases/download/v4.2/wstg-v4.2.pdf
Zafiyetleri sömürmeyi elle bir ortamda test etmek için: https://portswigger.net/web-security/all-topics
Açıkça bu 3 kaynağı derinlemesine öğrenin. Ancak bu kaynaklarda bilmediğiniz bir konuyu veya anlamadığınız noktalarda youtube veya medium/blog yazıları gibi yerlerde tam kafanıza oturtun.
Diyelim hocam, ben hepsini yaptım artık gerçekten bir tık daha öteye gitmek istiyorum derseniz. Benim burada tavsiyem acele etmemeniz yönünde olur çünkü bu dediklerimi bitirseniz bile tam kafanızda bir şema oluşması IT backgroundınza göre değişebilir. Bir kez pratik etmek var bir zafiyeti, yüzlerce kez farklı sitelerde farklı senaryolarda pratik etmek var. WAF bypass konularını da pas geçmeyin bu arada. WAF bypass başlı ayrı ama bi o kadar da yararlı bi dünya. Bir WAF'ı bypass edecek bir method bulabilirseniz artık o WAFtan bir daha korkmanıza gerek yok.
Devam edelim o zaman biz: (Bundan sonrasında benim de bilgim az, ancak neyi bilmediğimi bildiğimden dolayı sizlere ne bilmeniz gerektiği hakkında genel bir fikir verebilirim.)
Buradan sonra benim size tavsiyem biraz daha farklı teknolojilere çalışmanız olacaktır. Bu .NET+ANGULAR+MSSQL veya JAVA(SPRING)+ORACLE/POSTGRESQL veya MERN stack gibi konularla ilgilenmeniz olacaktır özellikle MERN stack üzerinde çok daha detaylı araştırmalar yapın. Bu teknolojileri bilmeniz sizi güzel yerlere getirir. Web geliştirme alanında öğrendiğiniz noktaları derinleştirebilirisinz: rabbitmq, memcache, redis, docket cloud(aws), graphql, websocket, nosql falan yani artar gider artık nerede eksik olduğunuzu hissediyorsanız yani karşınıza çıkıyor ama ben bunu bilmiyorum ama öğrensem işime yarar diyorsanız açın youtube videoları izleyin veya gidip dökümantasyonu okuyun eğer yapabiliyorsanız. Bi yerden sonra genel hacking bilginizi web-hacking üzerinde kullanın yani sadece webte gelişmek sizi bir yere kadar götürür diğer hacking alanlarındaki bilgilerinizde web alanında kullanmaya çalışın. Birçok nokta daha var anlatmam gereken ama onları kendiniz zaten dediklerimi yaparsanız rahatlıkla ne olduklarını ve niye önemli olduklarını öğrenebilirsiniz, mesela webmin nedir abi bi kurcala git container teknolojilerinii öğren, jenkins öğren ya da genel olarak devops süreçleri hakkında bir fikir sahibi olun.
Yani bunlar genel web-hacking alanında gelişmenize yardımcı olacaktır ama sizi öteye taşıyan sizin kendi tecrübeleriniz ve edindiğiniz bilgilerin kendisi ve farklılığı olacaktır bu yüzden mümkün olabildiğince sizin gibi kendinizi geliştiren insanlarla arkadaşlık kurun onlarla bildiklerinizi paylaşın. Yani ne kadar eklemem lazım bilmiyorum ama web-hacking'te genele de odaklanın illa takılı kalmayın weble bi bakın hedef hangi teknolojileri kullanıyor o teknolojilerde bir zafiyet var mı eğer varsa bu zafiyet nerede olabilir public bir PoC var mı. Bu tarz bilgileri genel hacking bilgileri olduğundan web-hacking spesifiğinde anlatmadım ama durumu anladınız.
Genel olarak hackingte gelişemiyorsanız önceki yazılarımdan biri var, yeni başlayanların yaptığı hatalar diye gidin onları okuyun.
Ha son bir şey ekleyeyim bu web-hacking için özel bir nokta olsun, bu benim fikrim yani belki yanlıştır: Hacking'in %90'ı bilgi toplama üzerine geçer ancak bu bilgi toplama ezber bir süreç değil sadece mantık kurduğumuz uygulamayı anlamaya çalıştığımız bir iş akışıdır.
Yanlışım olduysa affola, ben sadece yukarıdaki 3 linki bırakıp gidecektim ama eğer 1ine yardımcı olabilirsem ne mutlu bana. (Bu kaynaklar oldukça beğenilen ve birçok noktada başarılı olarak kabul edilen kaynaklar yani gönül rahatlığıyla okuyabilirsiniz.)
Günün ipucusu: Kaynak kod incelemelerinde yazılım kendi içerisinde çok güvenli bir yaklaşımla geliştirimiş olsa dahi bu yazılım başka bir websitesine request atıp dönen response'u kendi içerisindeki kritik fonksiyonlarda kullanıyorsa burada elimizdeki yazılımın kaynak kodunda gördüğümüz request atılan siteyi hacklememiz bizim asıl yazılımı hacklememize olanak sağlayan bir adım olacaktır. (Supply chain attack?)
İyi forumlar.
Günümüzde birçok büyük oluşum web uygulamalarında HTTP request alıp direkt olarak HTTP response döndürmekten öteye geçmiş durumda. Hacking bilgilerimizi güncel tutmak, araştırmacılığa devam et belki bir hackerda en çok olması gereken bir özellik. Sürekli öğrenmek, yeni teknolojileri ve yeni yaklaşımları takip edebilmek. Ancak bu yeni şeyleri öğrenmeye başlamadan önce temel bir hacking bilgisi elde etmemiz gerekiyor ve bilmediğimiz konularda daha fazla araştırma yaparak eksikliklerimizi gidermemiz lazım.
Burada vereceğim kaynaklar sizi A'dan B'ye götürür. B'den C'ye gitmek için kendi araştırmanızı yapmalısınız.
Bu vereceğim dökümanları anlamanız için öncelikle bir web uygulaması geliştirmeniz lazım aksi takdirde zafiyeti öğrenseniz bile nerede olacağınız görmeniz çok zor olabilecektir.
Tavsiyem: LAMP stack altyapısı üzerinden bir PHP frameworkü ile eticaret uygulaması geliştirin. Burada temel amaç olabildiğince farklı fonksiyonları kodlayarak gerçek hayatta o fonksiyonları gördüğünüzde aklınızda bir fikir oluşmasıdır. Bu fikirler de bizleri mantık kurarak zafiyete ulaştırır. Taktik basit, geliştirmeyi bilmeden hackleyemezin veya çooook zorlanırsın.
Siz bu eticaret uygulamasını geliştirmeye başladığınızda birçok olayı öğreneceksiniz: Web nasıl çalışır, DNS/HTTP protokolleri, servisler, sunucular, MVC yaklaşımı, SQL dili ve RDBMS kullanımı, JSON objeleri/XML dili, Dosya yükleme/silme/güncelleme, veritabanından veri güncelleme/silme/okuma/ekleme ve ORM, Template engine, Mail işlemleri, Import/Export, cart curt bu devam eder ama bakın gördünüz dimi sistemi kompleksleştirdiğiniz zaman o alanda bi hakimiyetiniz olacak dolayısıyla yarın birgün benzer bir componentle karşılaştığınızda çok rahat anlayabileceksiniz, emin olun bir şeyin nasıl inşa edildiğini tahmin edebilirseniz o binayı çok rahat yıkarsınız hiç bilmemenize oranla.) Bunları bilmek sizi rahatlatır, ek olarak bu eticaret uygulamasını bir kere kodladığınız zaman aynı işlemleri başka tech stacklerde de gerçekleştirebilirsiniz çünkü genel web uygulama geliştirme benzerdir tabi her dilin incelikleri var daha performanslı yolları olabilir ama ben size yazılımcı olmayı göstermiyorum ki haddim de değil ben size sadece hacking için temelleri bilmenin ne kadar önemli olduğunu göstermek istiyorum.
Yazılımlarda oluşabilecek zafiyetlerin nasıl oluştuğunu anlamak için ve bu zafiyetlerin oluşturacağı potansiyel riskleri azaltmak için yazılımcıların nasıl yaklaşmaları gerektiğini buradaki dökümanı baştan sona okuyarak anlarsınız: https://owasp.org/www-project-code-review-guide/assets/OWASP_Code_Review_Guide_v2.pdf
Yazılımlardaki zafiyetlerle neler yapılabileceğini kavramak için: https://github.com/OWASP/wstg/releases/download/v4.2/wstg-v4.2.pdf
Zafiyetleri sömürmeyi elle bir ortamda test etmek için: https://portswigger.net/web-security/all-topics
Açıkça bu 3 kaynağı derinlemesine öğrenin. Ancak bu kaynaklarda bilmediğiniz bir konuyu veya anlamadığınız noktalarda youtube veya medium/blog yazıları gibi yerlerde tam kafanıza oturtun.
Diyelim hocam, ben hepsini yaptım artık gerçekten bir tık daha öteye gitmek istiyorum derseniz. Benim burada tavsiyem acele etmemeniz yönünde olur çünkü bu dediklerimi bitirseniz bile tam kafanızda bir şema oluşması IT backgroundınza göre değişebilir. Bir kez pratik etmek var bir zafiyeti, yüzlerce kez farklı sitelerde farklı senaryolarda pratik etmek var. WAF bypass konularını da pas geçmeyin bu arada. WAF bypass başlı ayrı ama bi o kadar da yararlı bi dünya. Bir WAF'ı bypass edecek bir method bulabilirseniz artık o WAFtan bir daha korkmanıza gerek yok.
Devam edelim o zaman biz: (Bundan sonrasında benim de bilgim az, ancak neyi bilmediğimi bildiğimden dolayı sizlere ne bilmeniz gerektiği hakkında genel bir fikir verebilirim.)
Buradan sonra benim size tavsiyem biraz daha farklı teknolojilere çalışmanız olacaktır. Bu .NET+ANGULAR+MSSQL veya JAVA(SPRING)+ORACLE/POSTGRESQL veya MERN stack gibi konularla ilgilenmeniz olacaktır özellikle MERN stack üzerinde çok daha detaylı araştırmalar yapın. Bu teknolojileri bilmeniz sizi güzel yerlere getirir. Web geliştirme alanında öğrendiğiniz noktaları derinleştirebilirisinz: rabbitmq, memcache, redis, docket cloud(aws), graphql, websocket, nosql falan yani artar gider artık nerede eksik olduğunuzu hissediyorsanız yani karşınıza çıkıyor ama ben bunu bilmiyorum ama öğrensem işime yarar diyorsanız açın youtube videoları izleyin veya gidip dökümantasyonu okuyun eğer yapabiliyorsanız. Bi yerden sonra genel hacking bilginizi web-hacking üzerinde kullanın yani sadece webte gelişmek sizi bir yere kadar götürür diğer hacking alanlarındaki bilgilerinizde web alanında kullanmaya çalışın. Birçok nokta daha var anlatmam gereken ama onları kendiniz zaten dediklerimi yaparsanız rahatlıkla ne olduklarını ve niye önemli olduklarını öğrenebilirsiniz, mesela webmin nedir abi bi kurcala git container teknolojilerinii öğren, jenkins öğren ya da genel olarak devops süreçleri hakkında bir fikir sahibi olun.
Yani bunlar genel web-hacking alanında gelişmenize yardımcı olacaktır ama sizi öteye taşıyan sizin kendi tecrübeleriniz ve edindiğiniz bilgilerin kendisi ve farklılığı olacaktır bu yüzden mümkün olabildiğince sizin gibi kendinizi geliştiren insanlarla arkadaşlık kurun onlarla bildiklerinizi paylaşın. Yani ne kadar eklemem lazım bilmiyorum ama web-hacking'te genele de odaklanın illa takılı kalmayın weble bi bakın hedef hangi teknolojileri kullanıyor o teknolojilerde bir zafiyet var mı eğer varsa bu zafiyet nerede olabilir public bir PoC var mı. Bu tarz bilgileri genel hacking bilgileri olduğundan web-hacking spesifiğinde anlatmadım ama durumu anladınız.
Genel olarak hackingte gelişemiyorsanız önceki yazılarımdan biri var, yeni başlayanların yaptığı hatalar diye gidin onları okuyun.
Ha son bir şey ekleyeyim bu web-hacking için özel bir nokta olsun, bu benim fikrim yani belki yanlıştır: Hacking'in %90'ı bilgi toplama üzerine geçer ancak bu bilgi toplama ezber bir süreç değil sadece mantık kurduğumuz uygulamayı anlamaya çalıştığımız bir iş akışıdır.
Yanlışım olduysa affola, ben sadece yukarıdaki 3 linki bırakıp gidecektim ama eğer 1ine yardımcı olabilirsem ne mutlu bana. (Bu kaynaklar oldukça beğenilen ve birçok noktada başarılı olarak kabul edilen kaynaklar yani gönül rahatlığıyla okuyabilirsiniz.)
Günün ipucusu: Kaynak kod incelemelerinde yazılım kendi içerisinde çok güvenli bir yaklaşımla geliştirimiş olsa dahi bu yazılım başka bir websitesine request atıp dönen response'u kendi içerisindeki kritik fonksiyonlarda kullanıyorsa burada elimizdeki yazılımın kaynak kodunda gördüğümüz request atılan siteyi hacklememiz bizim asıl yazılımı hacklememize olanak sağlayan bir adım olacaktır. (Supply chain attack?)
İyi forumlar.
Bu içeriği görmek için giriş yapın.