Damn Vulnerable Web App ile web güvenlik açıklarını test etme

İçindekiler

Amaç, güvenlik sorunlarını analiz etmek ve çözmekle ilgilenen hem yeni başlayan hem de profesyonel kullanıcıların bilgi, beceri ve araçlarını simüle edilmiş bir ortamda test edebilmeleridir. araçlar web geliştiricileri için çok kullanışlıdır Bir uygulamanın veya web sitesinin sahip olabileceği sorunları anlayabilir ve programlamayı iyileştirebilir veya güvenlik açıklarını arayabilirler.

Çoğu geliştirici potansiyel güvenlik açıklarına karşı önlem almış olsa da, aşağıdakiler gibi birçok güvenlik açığı Siteler Arası Komut Dosyası Çalıştırma (XSS) veya SQL enjeksiyonlarıbirçok web sitesinin ve dolayısıyla kullanıcıların güvenliğini etkileyen .

Bu eğitimde biz gidiyoruz web güvenliği denetimleri için test laboratuvarı olarak kullanmak üzere bir web sitesi kurun ve yapılandırın, daha sonra analiz edilebilecek güvenlik açıklarında çeşitli zorluk seviyeleri öneren, daha da yaygın olan farklı güvenlik açıkları bulacağız.

Damn Vulnerabilty Web Application (DVWA) kullanacağız, bu, yerel bir sunucu da dahil olmak üzere sahip olduğumuz herhangi bir sunucuya kurulacak bir web sitesidir ve pentest testleri yapabilir. Resmi web sitesinden indirebiliriz.

İndirdikten sonra, öğreticilerde belirtildiği gibi bir web sunucusuna veya yerel bir sunucuya ihtiyacımız var:

  • Bilgisayarınızı bir web sunucusuna dönüştürmek için Xampp nasıl kurulur
  • Easyphp taşınabilir web sunucusu

Şimdi Damn Vulnerabilty Web Application (DVWA) zip dosyasını indirdikten sonra, onu açıp web sunucumuzun klasörüne kopyalıyoruz, bu durumda Linux altında Xampp kullanıyoruz.

Daha sonra bunun için veritabanını yapılandırmamız gerekiyor, phpmyadmin'den gideceğiz.

Bir terminal penceresinden yapmak istersek aşağıdaki komutu kullanacağız, ssh üzerinden erişebiliriz:

 ssh kullanıcısı @ miip
Öncelikle aşağıdaki komut ile komut satırından MySQL sunucusuna giriş yapacağız:
 mysql -u kök -p
Bu durumda, kök kullanıcı -u bayrağıyla belirtilir ve ardından MySQL'in bir parola istemesi gerektiğini belirtmek için -p bayrağı kullanılır. MYSQL'e giriş yapabilmek için erişim anahtarını giriyoruz.

Ardından komut satırından veritabanını oluşturabiliriz:

 veritabanı dvwa'sı oluşturun;
Sonra config dizinine gidiyoruz ve ardından dosyayı düzenliyoruz. config.inc.php, burada veri tabanının adını, kullanıcıyı ve erişim şifresini belirtmek için verileri değiştiriyoruz:
 
Yapılandırmayı kaydediyoruz ve web'in bulunduğu tarayıcıya gitmeli ve tıklamalıyız. Veritabanı Oluştur / Sıfırla Kuruluma devam etmek için

Ardından, yapılandırdığımız veritabanının verilerini oluşturacağız ve web'in getirdiği bazı araçları görebiliriz.

Daha sonra kurulumdan sonra http://localhost/dvwa web'e geri döndüğümüzde karşımıza bir login ekranı gelecek:

Web sitesine erişmek için aşağıdaki verileri kullanacağız:

kullanıcı: yönetici
Anahtar: parola

Web'in sol sütununda, sonunda bir menümüz var, seçeneği görebiliyoruz. DVWA GÜVENLİKBuradan güvenlik açıkları için zorluk seviyesini yapılandırabiliriz, güvenlik seviyeleri düşük, orta, yüksek veya imkansız.

Güvenlik düzeyi, DVWA'nın güvenlik açığı düzeyini değiştirir:

Düşük Güvenlik SeviyesiBu güvenlik seviyesi tamamen savunmasızdır ve herhangi bir güvenlik önlemi yoktur, bu nedenle hack tekniklerini daha kolay test etmemizi sağlayacaktır. Kullanımı, web uygulaması güvenlik açıklarının kendilerini kötü kodlama uygulamaları yoluyla nasıl gösterdiğine bir örnek olmak ve temel istismar, kırma ve hackleme tekniklerini öğretmek veya öğrenmek için bir platform olarak hizmet etmektir.

Orta Güvenlik SeviyesiBu düzey, geliştiricinin kodun ve geliştirmenin güvenlik açığı olmadığından emin olamadığı durumlarda güvenlik açıklarını göstermeye yarar.

Yüksek güvenlik seviyesiBu seviye, en ileri düzey kullanıcıların, web kodundaki kötü programlama uygulamalarının bir karışımı ile orta düzeyde bir zorlukla karşılaşmasını amaçlar. Burada ileri teknikleri deneyebiliriz.

Güvenlik seviyesi İmkansızBu seviye, tüm güvenlik açıklarına karşı en güvenli olanıdır. Güvenlik açığı bulunan kaynak kodunu güvenli kaynak koduyla karşılaştırmak için kullanılır. Bu seviye, bir web sitesinin nasıl doğru bir şekilde geliştirilmesi gerektiğini ve olası saldırılara karşı nasıl tepki vermesi gerektiğini göstermeyi amaçlar.

Farklı bilgisayar korsanlığı tekniklerini ve güvenlik açığı tespitini test edebilmek için en düşük seviyeyi belirledik.

Kaba Kuvveti Test Et kendi komut dosyanızla bir oturum açmayı kırmak için
Brute Force bağlantısına erişiyoruz ve bir giriş formu olduğunu görüyoruz, başarısız olması için kullanıcı adı ve şifreye herhangi bir veri giriyoruz ve bir hata olup olmadığını görüyoruz.

Giriş başarısız olduğunda, bize gösterilen URL'yi alarak girilen verilerle bir url görürüz:
http: // localhost / dvw… bkz. & Giriş = Giriş #,

Bu nedenle, kullanıcı ve şifre için farklı kombinasyonları test eden bir komut dosyası oluşturabilir veya Hydra için grafiksel bir arayüz olan xHydra gibi bir program kullanabilir veya SSH üzerinden sunucuya tek erişimimiz buysa, doğrudan komut satırından kullanabiliriz.

Hydra'yı kurmak için aşağıdaki komutları kullanacağız:

 sudo eklenti-apt-deposu ppa: pi-rho / güvenliksudo apt-get güncellemelerisudo apt-get kurulumu hidra hidra-gtk
Kurulumdan sonra, kullanıcı listelerini ve olası anahtarları txt formatında aramamız veya oluşturmamız veya öğreticide yaptığımız gibi kullanmak için bir sözlük aramamız gerekecek.

Ayrıca olası kullanıcıların adlarını içeren bir metin dosyası, ayrıca birçok araçta kullanılan bu skullsecurity.org sözlükleri, antivirüs vb. gibi şifre kırma veya hacklemeye izin veren bazı zaten işlevsel veri tabanlarını da kullanabiliriz. Tüm veri kaynaklarının kullanımı ücretsizdir.

Daha sonra, aşağıdaki komutları kullanarak sahip olduğumuz listelerle hidra kullanacağız:

 hydra -L /home/innove/usuarios.txt -P /home/innove/claves.txt 192.168.0.11 http-post-form "/dvwa/login.php:username=^KULLANICI^&parola=^PASS^&Login=Giriş : Oturum açılamadı "-w 10 -V 

Kabul edilen girişe ulaşan kullanıcıları ve şifreyi yeşil olarak gösteren bazı sonuçların olumlu olduğunu görebiliriz. Yönetici kullanıcı ve şifre ile denersek, kullanıcı panelini görmek için gireceğiz.

SQL Enjeksiyon güvenlik açığı
En düşük güvenlik seviyesinde, web SQL enjeksiyonuna karşı savunmasızdır, metin alanına kod enjekte etmeye başlamadan önce, PHP'deki tabloya başvuran kodun savunmasız olduğunu gözlemleyebiliriz.

 
Hata, verilerin GET ile değil POST kullanılarak gönderilmesi ve ikinci olarak gelen verilerin kötü amaçlı kod içermediğinin kontrol edilmesidir.

SQL ifadesi, gelenleri herhangi bir kontrol veya doğrulama olmadan doğrudan yürütür. Bu, kodu SQL enjeksiyonlarına karşı savunmasız hale getirir, örneğin SQL enjeksiyon sayfasında bir kimlik yerine aşağıdaki kodu eklersek, kullanıcıların tam listesini elde edebiliriz:

 1 'VEYA 1 = 1 UNION SELECT null, sürüm () #
Sonuç, kullanıcıların listesi olacaktır.

Metin alanına aşağıdaki kodu uygularsak tüm tablo listesini de elde edebiliriz.

 1 'VEYA 1 = 1 UNION SELECT null, INFORMATION_SCHEMA.tables'tan tablo_adı

Kullanıcıların listesini elde etmek ve her tablonun verilerini görmek için başka kombinasyonlar uygulayabiliriz.

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.
wave wave wave wave wave