From 054eaacfe86d4d697e7c1bfaf9ff5bc7d6447d4a Mon Sep 17 00:00:00 2001 From: mcoder Date: Tue, 14 Apr 2026 19:01:51 +0330 Subject: [PATCH] Add --- docker-compose.yml | 27 ++++++++------ docker/nginx/hacker.conf | 17 +++++++++ routes/web.php | 76 +++++++++++++++++++--------------------- 3 files changed, 70 insertions(+), 50 deletions(-) create mode 100644 docker/nginx/hacker.conf diff --git a/docker-compose.yml b/docker-compose.yml index c25e569..5dfd959 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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 diff --git a/docker/nginx/hacker.conf b/docker/nginx/hacker.conf new file mode 100644 index 0000000..ec7a357 --- /dev/null +++ b/docker/nginx/hacker.conf @@ -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; + } +} \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 2ab5594..3be08c2 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,55 +1,53 @@ 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'); \ No newline at end of file + // هدف حمله 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'); + +}); \ No newline at end of file