This commit is contained in:
mcoder 2026-04-14 19:01:51 +03:30
parent cacf880fdc
commit 054eaacfe8
3 changed files with 70 additions and 50 deletions

View File

@ -1,7 +1,9 @@
services:
# دیتابیس MariaDB
# ----------------------------------------
# MariaDB Database
# ----------------------------------------
mariadb:
image: mariadb:10.6
image: mariadb:10.11
container_name: sec_lab_db
environment:
MYSQL_ROOT_PASSWORD: root_password
@ -14,7 +16,9 @@ services:
- lab_net
restart: always
# ----------------------------------------
# وب‌سرور اپلیکیشن اصلی (Victim)
# ----------------------------------------
victim-nginx:
image: nginx:stable-alpine
container_name: sec_lab_victim_nginx
@ -29,18 +33,14 @@ services:
- lab_net
restart: always
# هسته پردازشی PHP
# ----------------------------------------
# هسته پردازشی PHP (مشترک بین دو سایت)
# ----------------------------------------
php:
container_name: sec_lab_php
build:
context: .
dockerfile: ./docker/php/Dockerfile
args:
- COMPOSER_REGISTRY=http://192.168.1.201:8081/repository/composer-runflare/
- LINUX_REGISTRY=http://192.168.1.201:8081/repository/debian-arvan
- SECURITY_REGISTRY=http://192.168.1.201:8081/repository/debian-arvan-security
- NPM_REGISTRY=http://192.168.1.201:8081/repository/npm-group/
- NODE_REGISTRY=http://192.168.1.201:8081/repository/node-dist
volumes:
- ./:/var/www/html:rw
depends_on:
@ -49,14 +49,19 @@ services:
- lab_net
restart: always
# اپلیکیشن مهاجم (Hacker)
# ----------------------------------------
# وب‌سرور اپلیکیشن مهاجم (Hacker)
# ----------------------------------------
attacker-app:
image: nginx:stable-alpine
container_name: sec_lab_attacker_nginx
ports:
- "58691:80"
volumes:
- ./hacker_site:/usr/share/nginx/html:ro
- ./:/var/www/html:ro # حالا هکر هم به کدهای لاراول دسترسی دارد
- ./docker/nginx/hacker.conf:/etc/nginx/conf.d/default.conf:ro # کانفیگ اختصاصی هکر
depends_on:
- php
networks:
- lab_net
restart: always

17
docker/nginx/hacker.conf Normal file
View File

@ -0,0 +1,17 @@
server {
listen 80;
# این انجینیکس فقط به درخواست‌های دامنه هکر جواب می‌دهد
server_name hackerapp.eitebar.ir;
root /var/www/html/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

View File

@ -1,55 +1,53 @@
<?php
use App\Http\Controllers\VulnerabilityController;
use Illuminate\Support\Facades\Route;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken;
use App\Http\Controllers\UserController;
use App\Http\Controllers\VulnerabilityController;
// ==========================================
// صفحه اصلی
// ==========================================
Route::get('/', [UserController::class, 'home'])->name('home');
/*
|--------------------------------------------------------------------------
| ☠️ دامنه مهاجم (Attacker App) : hackerapp.eitebar.ir
|--------------------------------------------------------------------------
*/
Route::domain('hackerapp.eitebar.ir')->group(function () {
// داشبورد اصلی هکر برای مشاهده دیتای سرقت شده
Route::get('/', [VulnerabilityController::class, 'viewLogs'])->name('hacker.home');
Route::get('/hacker-panel', [VulnerabilityController::class, 'viewLogs'])->name('vulnerability.logs');
// ==========================================
// ۱. راه‌اندازی سریع آزمایشگاه (مرحله اول)
// ==========================================
Route::get('/setup-lab', [UserController::class, 'setupLab'])->name('setup.lab');
// روت مخفی هکر برای دریافت کوکی‌های سرقت شده (Stealer / C2 Server)
Route::get('/stealer', [VulnerabilityController::class, 'logStolenData'])->name('vulnerability.stealer');
// ==========================================
// ۲. سیستم احراز هویت (Authentication)
// ==========================================
Route::get('/login', [UserController::class, 'showLogin'])->name('login');
Route::post('/login', [UserController::class, 'login'])->name('login.submit');
// نکته امنیتی: خروج در حالت استاندارد باید POST باشد اما برای راحتی تست در لابراتوار GET قرار دادیم
Route::get('/logout', [UserController::class, 'logout'])->name('logout');
// ==========================================
// ۳. پنل کاربری (محافظت شده با نشست)
// ==========================================
Route::middleware(['web', 'auth'])->group(function () {
Route::get('/profile', [UserController::class, 'profile'])->name('user.profile');
});
// ==========================================
// ۴. هدف حمله CSRF (آسیب‌پذیر)
// ==========================================
Route::post('/update-email', [UserController::class, 'updateEmail'])
->withoutMiddleware([VerifyCsrfToken::class])
->name('vulnerable.update.email');
/*
|--------------------------------------------------------------------------
| 🛡️ دامنه قربانی (Victim App) : webapp.kr-rezvan.ir
|--------------------------------------------------------------------------
*/
Route::domain('webapp.kr-rezvan.ir')->group(function () {
Route::get('/', [UserController::class, 'home'])->name('home');
Route::get('/setup-lab', [UserController::class, 'setupLab'])->name('setup.lab');
// ==========================================
// ۵. آزمایشگاه XSS و سرقت کوکی (Hacker Panel)
// ==========================================
// صفحه اصلی آزمایشگاه XSS
Route::get('/xss', [VulnerabilityController::class, 'xss'])->name('vulnerability.xss');
// سیستم احراز هویت
Route::get('/login', [UserController::class, 'showLogin'])->name('login');
Route::post('/login', [UserController::class, 'login'])->name('login.submit');
Route::get('/logout', [UserController::class, 'logout'])->name('logout');
// روت مخفی هکر برای دریافت کوکی‌های سرقت شده (Stealer)
Route::get('/stealer', [VulnerabilityController::class, 'logStolenData'])->name('vulnerability.stealer');
// پنل کاربری (محافظت شده با نشست)
Route::middleware(['web', 'auth'])->group(function () {
Route::get('/profile', [UserController::class, 'profile'])->name('user.profile');
});
// داشبورد هکر برای مشاهده دیتای سرقت شده
Route::get('/hacker-panel', [VulnerabilityController::class, 'viewLogs'])->name('vulnerability.logs');
// هدف حمله CSRF
Route::post('/update-email', [UserController::class, 'updateEmail'])
->withoutMiddleware([VerifyCsrfToken::class])
->name('vulnerable.update.email');
// صفحه آزمایشگاه XSS
Route::get('/xss', [VulnerabilityController::class, 'xss'])->name('vulnerability.xss');
});