راهاندازی آزمایشگاه Web Application Pentest با استفاده از Docker
در حوزه امنیت سایبری، Penetration Testing و Vulnerability Assessment از گامهای کلیدی برای شناسایی و کاهش تهدیدات امنیتی بالقوه محسوب میشوند. با توجه به افزایش چشمگیر تعداد برنامههای تحت وب، نیاز به محیطهای آزمایشی امن و پایدار بیش از هر زمان دیگری اهمیت پیدا کرده است.
در این مقاله، به بررسی مفهوم Vulnerable Web Applications، اهمیت آنها در فرآیند Penetration Testing، و نحوه راهاندازی این محیطها با استفاده از Docker خواهیم پرداخت.
فهرست مطالب
- مقدمهای بر Vulnerable Web Applications
- پیشنیازها
- راهاندازی Docker بر روی سیستم
- راهاندازی Vulnerable Web Applications با استفاده از Docker
- Damn Vulnerable Web Application (DVWA)
- OWASP Juice Shop
- OWASP VulnerableApp
- OWASP WebGoat
- SQLi-Labs
- bWAPP
- OWASP Mutillidae II
- Damn Vulnerable GraphQL Application
- Damn Vulnerable RESTurant API
- Pixi
- PyGoat
- Server-Side Request Forgery
- VulnBank
- VulnLab
- OWASP WrongSecrets
- Yrprey
- Zero Health
- نتیجهگیری
مقدمهای بر Vulnerable Web Applications
Vulnerable Web Applications برنامههای تحت وبی هستند که بهصورت عمدی با ضعفها و آسیبپذیریهای امنیتی طراحی شدهاند تا Penetration Testers و پژوهشگران امنیت بتوانند مهارتهای خود را در یک محیط ایمن و کنترلشده آزمایش و تقویت کنند.
این دسته از برنامهها نقش مهمی در شناسایی و کاهش تهدیدات امنیتی بالقوه ایفا کرده و بهطور گسترده در صنعت امنیت سایبری مورد استفاده قرار میگیرند.
پیشنیازها
- آشنایی پایه با Docker و دستورات آن
- آشنایی با Linux و مفاهیم برنامههای تحت وب
راهاندازی Docker بر روی سیستم
Docker یک پلتفرم است که امکان اجرای برنامهها را درون Containerهای سبک و ایزوله فراهم میکند — رویکردی ایدهآل برای استقرار برنامههای آسیبپذیر بدون ایجاد تغییر یا تاثیر بر سیستم اصلی.
برای نصب Docker و Docker Compose در سیستمهای مبتنی بر Debian/Ubuntu، دستورات زیر را اجرا کنید:
apt install docker.io
apt install docker-compose
راهاندازی Vulnerable Web Applications با استفاده از Docker
در ادامه، دستورالعملهای لازم برای راهاندازی انواع Vulnerable Web Applications با بهرهگیری از Docker ارائه شده است:
DVWA (Damn Vulnerable Web Application)
DVWA یک برنامه تحت وب مبتنی بر PHP/MySQL است که یک وبسایت آسیبپذیر را شبیهسازی میکند و به کاربران امکان میدهد تا در یک محیط امن، بهرهبرداری از آسیبپذیریهای رایج وب نظیر SQL Injection و Cross-Site Scripting (XSS) را تمرین کنند.
برای پیکربندی DVWA در Docker، میتوانید از دستورات زیر استفاده کنید:
docker pull sagikazarmark/dvwa
docker run --rm -it -p 8080:80 sagikazarmark/dvwa
مراحل پیکربندی و ورود به DVWA
دسترسی به صفحه ورود
- مرورگر خود را باز کرده و آدرس زیر را وارد کنید:
http://localhost:8080/login.php - اطلاعات پیشفرض ورود:
- نام کاربری admin
- رمز عبور password
- بر روی دکمه Login کلیک کنید.
ایجاد/بازنشانی پایگاه داده
پس از ورود موفقیتآمیز، صفحهای با عنوان Database configuration نمایش داده خواهد شد.
برای انجام عملیات زیر، دکمه Create / Reset Database را کلیک کنید:
- راهاندازی اولیه پایگاه داده DVWA (در صورت پیکربندی اولیه)
- پاکسازی دادههای موجود و بازنشانی به حالت پیشفرض (در صورت نیاز به بازنشانی)
نکته: مطمئن شوید که اطلاعات کاربری MySQL در فایل /var/www/html/config/config.inc.php به درستی تنظیم شده باشد.
بارگذاری خودکار صفحه اصلی
پس از پیکربندی پایگاه داده، بهطور خودکار به صفحه خوشآمدگویی DVWA هدایت خواهید شد.
در این صفحه قادر خواهید بود:
- سطح امنیتی را انتخاب کنید (Low/Medium/High/Impossible)
- به ماژولهای مربوط به آسیبپذیریها مانند SQL Injection و XSS دسترسی داشته باشید.
Juice Shop
OWASP Juice Shop یک برنامه وب متنباز است که بهصورت عمدی ناامن طراحی شده و بیش از ۳۰ آسیبپذیری و چالش مختلف را برای کاربران فراهم میکند تا آنها را شناسایی و بهرهبرداری کنند.
برای پیکربندی Juice Shop در Docker، میتوانید از دستورات زیر استفاده نمایید:
docker pull bkimminich/juice-shop
docker run --rm -p 3000:3000 bkimminich/juice-shop
پس از راهاندازی کانتینر Juice Shop، میتوانید از طریق مرورگر خود به آدرس http://localhost:3000 مراجعه کنید. از این نقطه، میتوانید فعالیتهای عملی تست نفوذ خود را آغاز نمایید.
OWASP VulnApp
OWASP VulnApp یک برنامه تحت وب است که بهصورت عمدی در برابر انواع مختلف حملات آسیبپذیر طراحی شده است و محیطی امن و کنترلشده برای کاربران فراهم میکند تا درباره امنیت وب آموزش ببینند و مهارت بهرهبرداری از آسیبپذیریها را تمرین کنند. این برنامه شامل مجموعهای از آسیبپذیریها مانند SQL Injection، XSS و File Inclusion میباشد.
برای پیکربندی OWASP VulnApp در Docker، میتوانید از دستورات زیر استفاده نمایید:
git clone https://github.com/SasanLabs/VulnerableApp.git cd VulnerableApp
docker-compose up
پس از راهاندازی کانتینر OWASP VulnApp، میتوانید از طریق مرورگر خود به آدرس http://localhost:80 مراجعه کنید. از این نقطه، میتوانید فعالیتهای عملی تست نفوذ خود را آغاز نمایید.
WebGoat
WebGoat یک برنامه تحت وب آموزشی است که با ارائه مجموعهای از درسها و تمرینها، مفاهیم امنیت برنامههای تحت وب مانند احراز هویت (Authentication)، مجوزدهی (Authorization) و اعتبارسنجی ورودی (Input Validation) را آموزش میدهد.
برای پیکربندی WebGoat در Docker، میتوانید از دستورات زیر استفاده نمایید:
docker pull webgoat/webgoat docker run -p 127.0.0.1:8080:8080 -p 127.0.0.1:9090:9090 -e TZ=Europe/Amsterdam webgoat/webgoat
پس از راهاندازی کانتینر WebGoat، میتوانید از طریق مرورگر خود به آدرس http://localhost:8080/WebGoat/login مراجعه کنید. از این نقطه میتوانید فعالیتهای عملی تست نفوذ خود را آغاز نمایید.
SQLi-Labs (Dhakkan)
SQLi-Labs یک برنامه تحت وب است که بهصورت تخصصی برای آموزش حملات SQL Injection طراحی شده و مجموعهای از چالشها و تمرینها را برای کاربران فراهم میکند تا مهارت بهرهبرداری از آسیبپذیریهای SQL Injection را تمرین نمایند.
برای پیکربندی SQLi-Labs در Docker، میتوانید از دستورات زیر استفاده کنید:
docker pull acgpiano/sqli-labs docker run -d -p 80:80 acgpiano/sqli-labs:latest
پس از راهاندازی کانتینر SQLi-Labs، میتوانید از طریق مرورگر خود به آدرس http://localhost مراجعه کنید. از این نقطه میتوانید فعالیتهای عملی تست نفوذ خود را آغاز نمایید.
پیکربندی SQLi-LABS و چالشها
پیکربندی پایگاه داده
برای انجام تنظیمات و بازنشانی پایگاه داده، گزینهی “configuration/reset Database for labs” را انتخاب کنید تا:
- در صورت وجود، پایگاه داده قدیمی (با هدف امنیتی) پاکسازی شود.
خروجی تأیید میکند که ایجاد پایگاه دادهها و جداول با موفقیت انجام شده است (برای مثال: [*]……Creating New Table ‘USERS’ successfully)
دستهبندی چالشها
- صفحه ۱ (Basic): شامل انواع حملات SQL Injection مبتنی بر خطا (Error-based)، کور (Blind) و مبتنی بر زمان (Time-based) (مثلاً: GET – Error based – Single quotes).
- صفحه ۲ (Advanced): حملات پیچیدهتر مانند تزریقهای دوگانه (Double injections) و استخراج اطلاعات با outfile dumping.
- صفحه ۳ (Stacked): تزریقهای چند کوئری (Multi-query injections) (مثلاً: ST – Double Injection).
- صفحه ۴ (Challenges): مجموعهای از چالشها با سطوح دشواری متنوع (از Less-1 تا Less-22).
bWAPP
bWAPP یک برنامه تحت وب است که بهصورت عمدی در برابر انواع مختلف حملات آسیبپذیر طراحی شده و محیطی امن و کنترلشده را برای آموزش امنیت وب و تمرین بهرهبرداری از آسیبپذیریها فراهم میکند. این برنامه مجموعهای از آسیبپذیریها از جمله SQL Injection، XSS و File Inclusion را پوشش میدهد.
برای پیکربندی bWAPP در Docker، میتوانید از دستورات زیر استفاده کنید:
docker pull raesene/bwapp docker run -d -p 80:80 raesene/bwapp
پس از راهاندازی کانتینر bWAPP، میتوانید از طریق مرورگر خود به آدرس http://localhost/install.php مراجعه کنید.برای نصب bWAPP، روی گزینه “here” کلیک کنید.
پس از تکمیل فرآیند نصب، صفحه اصلی bWAPP بهصورت خودکار بارگذاری خواهد شد.
Mutillidae
Mutillidae یک برنامه تحت وب است که بهصورت عمدی در برابر انواع مختلف حملات آسیبپذیر طراحی شده و محیطی امن و کنترلشده برای آموزش امنیت وب و تمرین بهرهبرداری از آسیبپذیریها فراهم میکند. این برنامه مجموعهای از آسیبپذیریها از جمله SQL Injection، XSS و File Inclusion را پوشش داده و به دلیل سناریوهای واقعگرایانه و چالشبرانگیز خود شناخته میشود.
برای پیکربندی Mutillidae در Docker، میتوانید از دستورات زیر استفاده کنید:
git clone https://github.com/webpwnized/mutillidae-docker.git cd mutillidae-docker docker compose -f.build/docker-compose.yml up --build –detach
پس از راهاندازی کانتینر Mutillidae، میتوانید از طریق مرورگر خود به آدرس http://localhost:80 مراجعه کنید. از این نقطه، میتوانید فعالیتهای عملی تست نفوذ خود را آغاز نمایید.
Damn Vulnerable GraphQL Application
Damn Vulnerable GraphQL Application یک برنامه تحت وب مبتنی بر GraphQL است که بهصورت عمدی در برابر انواع مختلف حملات آسیبپذیر طراحی شده و محیطی امن و کنترلشده برای آموزش امنیت GraphQL و تمرین بهرهبرداری از آسیبپذیریها فراهم میکند.
برای پیکربندی Damn Vulnerable GraphQL Application در Docker، میتوانید از دستورات زیر استفاده نمایید:
docker pull dolevf/dvga docker run -t -p 5013:5013 -e WEB_HOST=0.0.0.0 dolevf/dvga
پس از راهاندازی کانتینر Damn Vulnerable GraphQL Application، میتوانید از طریق مرورگر خود به آدرس http://localhost:5013 مراجعه کنید. از این نقطه، میتوانید فعالیتهای عملی تست نفوذ خود را آغاز نمایید.
Damn Vulnerable RESTurant API
Damn Vulnerable RESTurant API یک RESTful API است که بهصورت عمدی در برابر انواع مختلف حملات آسیبپذیر طراحی شده و محیطی امن و کنترلشده برای آموزش امنیت API و تمرین بهرهبرداری از آسیبپذیریها فراهم میکند. این برنامه مجموعهای از آسیبپذیریهای خاص API از جمله ضعفهای Authentication و Authorization را پوشش میدهد.
برای پیکربندی Damn Vulnerable RESTurant API در Docker، میتوانید از دستورات زیر استفاده کنید:
git clone https://github.com/theowni/Damn-Vulnerable-RESTaurant-API-Game.git cd Damn-Vulnerable-RESTaurant-API-Game ./start_app.sh
پس از راهاندازی کانتینر Damn Vulnerable RESTurant API، میتوانید از طریق مرورگر خود به آدرس http://localhost:8091/docs مراجعه کنید. از این نقطه، میتوانید فعالیتهای عملی تست نفوذ خود را آغاز نمایید.
Pixi
Pixi یک برنامه تحت وب است که بهصورت عمدی در برابر انواع مختلف حملات آسیبپذیر طراحی شده و محیطی امن و کنترلشده را برای آموزش امنیت وب و تمرین بهرهبرداری از آسیبپذیریها فراهم میکند.
برای پیکربندی Pixi در Docker، میتوانید از دستورات زیر استفاده نمایید:
git clone https://github.com/DevSlop/Pixi.git cd Pixi docker-compose up
پس از راهاندازی کانتینر Pixi، میتوانید از طریق مرورگر خود به آدرس http://localhost:8000/login مراجعه کنید. از این نقطه، میتوانید فعالیتهای عملی تست نفوذ خود را آغاز نمایید.
PyGoat
PyGoat یک Web Application است که با هدف آموزش Web Application Security طراحی شده و شامل مجموعهای از درسها و تمرینها در حوزههایی مانند Authentication، Authorisation و Input Validation میباشد. این پلتفرم یک محیط Hands-on برای یادگیری امنیت وب و تمرین در شناسایی و بهرهبرداری از Vulnerabilities فراهم میکند، با تمرکز ویژه بر Python-based Web Applications.
برای Configure کردن PyGoat بر روی Docker، میتوانید از دستورات زیر استفاده کنید:
docker pull pygoat/pygoat:latest docker run --rm -p 8000:8000 pygoat/pygoat:latest
پس از Start کردن PyGoat Container، میتوانید با مراجعه به آدرس http://localhost:8000/login از طریق Web Browser خود به آن دسترسی پیدا کنید. از این نقطه، میتوانید Hands-on Testing Journey خود را آغاز نمایید.
SSRF
SSRF یک Web Application است که با هدف آموزش حملات Server-Side Request Forgery (SSRF) طراحی شده و مجموعهای از Challenges و Exercises را برای کاربران فراهم میکند تا بتوانند در شناسایی و بهرهبرداری از SSRF Vulnerabilities تمرین کنند.
برای Configure کردن SSRF بر روی Docker، میتوانید از دستورات زیر استفاده نمایید:
docker pull youyouorz/ssrf-vulnerable-lab docker run -d --name ssrf-lab -p 9000:80 youyouorz/ssrf-vulnerable-lab
پس از Start کردن SSRF Container، میتوانید با مراجعه به آدرس http://localhost:9000 از طریق Web Browser خود به آن دسترسی پیدا کنید. از این نقطه، میتوانید Hands-on Testing Journey خود را آغاز نمایید.
VulnBank
VulnBank یک Web Application است که با هدف شبیهسازی یک Vulnerable Online Banking System طراحی شده و به کاربران امکان میدهد تا در بهرهبرداری از Common Web Vulnerabilities مانند SQL Injection و Cross-Site Scripting (XSS) تمرین کنند.
برای Configure کردن VulnBank بر روی Docker، میتوانید از دستورات زیر استفاده نمایید:
git clone https://github.com/Commando-X/vuln-bank.git cd vuln-bank docker-compose up
پس از Start کردن VulnBank Container، میتوانید با مراجعه به آدرس http://172.24.0.3:5000 از طریق Web Browser خود به آن دسترسی پیدا کنید. از این نقطه، میتوانید Hands-on Testing Journey خود را آغاز نمایید.
VulnLab
VulnLab یک Web Application است که با هدف فراهم کردن یک محیط Hands-on برای یادگیری Web Security و تمرین در بهرهبرداری از Vulnerabilities طراحی شده است. این پلتفرم مجموعهای از آسیبپذیریها از جمله SQL Injection، XSS و File Inclusion را پوشش میدهد و به دلیل Realistic و Challenging Scenarios خود شناخته شده است.
برای Configure کردن VulnLab بر روی Docker، میتوانید از دستورات زیر استفاده کنید:
docker pull yavuzlar/vulnlab docker run -d -p 1337:80 yavuzlar/vulnlab
پس از Start کردن VulnLab Container، میتوانید با مراجعه به آدرس http://localhost:1337 از طریق Web Browser خود به آن دسترسی پیدا کنید. از این نقطه، میتوانید Hands-on Testing Journey خود را آغاز نمایید.
WrongSecrets
WrongSecrets یک Web Application است که با هدف آموزش مفاهیم Secrets Management و روشهای صحیح ذخیرهسازی و مدیریت Sensitive Data طراحی شده است.
برای Configure کردن WrongSecrets بر روی Docker، میتوانید از دستورات زیر استفاده کنید:
docker run -p 8080:8080 jeroenwillemsen/wrongsecrets:latest-no-vault
پس از Start کردن WrongSecrets Container، میتوانید با مراجعه به آدرس http://localhost:8080 از طریق Web Browser خود به آن دسترسی پیدا کنید. از این نقطه، میتوانید Hands-on Testing Journey خود را آغاز نمایید.
Yrprey
Yrprey یک Web Application است که با هدف شبیهسازی یک وباپلیکیشن آسیبپذیر طراحی شده است. این محیط به کاربران اجازه میدهد تا در یک فضای کنترلشده، بهرهبرداری (Exploitation) از Web Vulnerabilities رایج مانند SQL Injection و Cross-Site Scripting (XSS) را تمرین کنند.
برای Configure کردن Yrprey در محیط Docker، میتوانید از دستورات زیر استفاده کنید:
git clone https://github.com/yrprey/yrprey-application.git cd yrprey-application docker-compose -f.docker/dev/app.yaml -p yrprey up -d
پس از Start کردن Yrprey Container، میتوانید از طریق مرورگر وب خود و با مراجعه به آدرس http://localhost:3005 به آن دسترسی پیدا کنید. از این نقطه، میتوانید فرآیند Hands-on Testing خود را آغاز نمایید.
Zero Health
Zero Health یک Web Application است که با هدف شبیهسازی یک سیستم بهداشتی و درمانی آسیبپذیر طراحی شده است. این محیط به کاربران اجازه میدهد تا در یک بستر کنترلشده، بهرهبرداری (Exploitation) از Web Vulnerabilities رایج مانند SQL Injection و Cross-Site Scripting (XSS) را تمرین کنند.
برای Configure کردن Zero Health در محیط Docker، میتوانید از دستورات زیر استفاده کنید:
git clone https://github.com/aligorithm/zero-health.git cd zero-health docker-compose up
پس از Start کردن Zero Health Container، میتوانید از طریق مرورگر وب خود و با مراجعه به آدرس http://localhost:3000 به آن دسترسی پیدا کنید. از این مرحله، میتوانید فرآیند Hands-on Testing خود را آغاز نمایید.
نتیجه گیری
وباپلیکیشنهای آسیبپذیر، فرصتهای Hands-on ارزشمندی را برای هر دو تیم Red Team و Blue Team فراهم میکنند تا مهارتهای خود را ارتقاء دهند. با Mapping این برنامهها به چارچوب MITRE ATT&CK، متخصصان امنیت میتوانند Real-world Attack Chains را شبیهسازی کرده و وضعیت دفاعی (Defense Posture) خود را بهبود بخشند.
Docker فرآیند Deploy کردن این Labs را آسان و قابل تکرار میکند. چه در حال تست XSS، SQLi یا API Abuse باشید، همواره باید دستورالعملهای اخلاقی (Ethical Guidelines) را رعایت کرده و از این محیطها صرفاً در بسترهای ایزوله (Isolated Environments) استفاده کنید.