DVWA - Mã nguồn thực hành pentest website

Giới thiệu DVWA:

Damn Vulnerable Web Application (DVWA) là một ứng dụng mã nguồn PHP/MySQL tập hợp sẵn các lỗi logic về bảo mật ứng dụng web trong mã nguồn PHP. Lỗi logic khi lập trình có thể áp dụng đối với các loại ngôn ngữ lập trình nhằm giảm thiểu khả năng tạo ra lổ hổng bảo mật từ tư duy lập trình chưa cẩn thận.
DVWA

Mục tiêu chính của DVWA đó là tạo ra một môi trường thực hành pentest hợp pháp. Giúp cho các nhà phát triển ứng dụng web hiểu hơn về hoạt động lập trình an toàn và bảo mật hơn. Bên cạnh đó DVWA cũng cung cấp cho các pentester phương pháp học và thực hành tấn công khai thác lỗi bảo mật ứng dụng web ở mức cơ bản và nâng cao.
Dự án DVWA đã được khai sinh từ tháng 12/2008 và phát triển rất nhanh chóng cũng như sớm nổi tiếng.

Cảnh báo sử dụng:

DVWA có chứa nhiều lỗ hổng bảo mật ở nhiều hạng mục vì vậy không nên sử dụng public như upload lên hệ thống nhà cung cấp hosting hay web server chạy trên Internet. Vì sẽ dẫn đến nguy cơ bị kẻ xấu khai thác trực tiếp hệ thống VPS/Hosting qua các lổ hổng thực hành này. Chính vì thế bạn chỉ nên cài đặt ở môi trường nội bộ như Máy chủ ảo (VPS) hay Web server local (Localhost).

Môi trường cài đặt:

DVWA là ứng dụng mã nguồn PHP và Cơ Sở Dữ Liệu là MySQL, nên bạn có thể cài đặt dịch vụ XAMPP trên cả Linux hoặc Windows để tạo môi trường thực hành nhanh chóng. Hoặc bạn có thể cài đặt hệ thống web server LAMP/LEMP trên CentOS/Ubuntu để thực hành.
Các lổ hổng trong DVWA:
Khi bạn thực hành với DVWA, bạn sẽ có những nhóm lổ hổng bảo mật như sau:
  • Brute Force
  • Command Execution
  • Cross Site Request Forgery (CSRF)
  • File Inclusion
  • SQL Injection
  • Insecure File Upload
  • Cross Site Scripting (XSS)
  • Easter eggs
Các mức độ bảo mật trong DVWA:
DVWA cung cấp 3 mức độ bảo mật tương ứng 3 level để bạn thực hành từ dễ cho đến khó gồm :
  1. High - mức cao nhất: Level này gần như là level dùng để so sánh mã nguồn có lổ hổng ở mức low và medium với mã nguồn đã được tối ưu ở mức an toàn bảo mật.
  2. Medium - mức trung bình: Mức độ này cung cấp nội dung logic code đã fix lổ hổng cơ bản ở hạng mục mức low.
  3. Low - mức độ thấp nhất: Với mức độ low thì mã nguồn PHP gân như phơi bày khả năng khai thác lổ hổng qua tư duy lập trình chưa bao quát vấn đề bảo mật.
Đối với mỗi trang thực hành bảo mật sẽ luôn có nút view source. Nút này được sử dụng để xem nội dung source code của các mức bảo mật ứng mổi hạng mục, để từ đó bạn có thể so sánh, đánh giá lý do tại sao mã nguồn này lại phơi bày ra lổ hổng bảo mật như vậy.

Hướng dẫn cài đặt DVWA:

Như đã nói ở trên bạn cần một máy chủ có thể chạy được PHP và MySQL để bắt đầu.

Tải về mã nguồn DVWA:

Bạn có thể tải trực tiếp tại đây, hoặc dùng git:
[[mcode]]$ git clone https://github.com/ethicalhack3r/DVWA.git[[ecode]]
Sau đó chép toàn bộ nội dung vào thư mục website trên máy bạn.

Tạo một cơ sở dữ liệu trống:

Để tạo một cơ sở dữ liệu mới bạn có thể dùng phpMyAdmin hoặc câu lệnh SQL:
[[mcode]]sql> CREATE DATABASE dvwadata;[[ecode]]
[[mcode]]sql> GRANT ALL PRIVILEGES ON dvwadata.* TO 'dvwauser'@'localhost' IDENTIFIED BY 'dvwapass';[[ecode]]
Giải thích: (Bạn có thể thay đổi câu lệnh tuỳ ý)
  • dvwadata là tên database.
  • dvwauser là tên tài khoản mysql.
  • localhost là địa chỉ máy chủ mysql.
  • dvwapass là mật khẩu của tài khoản ở trên.

Cấu hình kết nối cơ sở dữ liệu:

Ví dụ thư mục website là [[scode]]/var/www/html/[[escode]] vậy bạn hãy mở file [[scode]]/var/www/html/config/config.inc.php.dist[[escode]] lên, hãy tìm và chỉnh sửa đoạn sau:
[[lcode]]$_DVWA[ 'db_server' ]   = 'localhost';
$_DVWA[ 'db_database' ] = 'dvwadata';
$_DVWA[ 'db_user' ]     = 'dvwauser';
$_DVWA[ 'db_password' ] = 'dvwapass';[[ecode]]
Sau đó đổi tên từ [[scode]]config.inc.php.dist[[escode]] thành [[scode]]config.inc.php[[escode]] nhé ;)

Cấu hình PHP.ini:

Bạn hãy thêm những dòng này vào cuối file php.ini ở thư mục [[scode]]/var/www/html/[[escode]] và thư mục cấu hình PHP nhé:
[[lcode]]allow_url_include = on
allow_url_fopen = on
safe_mode = off
magic_quotes_gpc = off
display_errors = off[[ecode]]

Các cấu hình khác:

Ngoài ra thì trong file  [[scode]]config.inc.php[[escode]] ta còn có một số cấu hình khác như:
Thay đổi từ MySQL sang PostgreSQL, bạn chỉ cần thay đổi dấu [[scode]]#[[escode]] ở hai dòng này:
[[lcode]]# Database management system to use
$DBMS = 'MySQL';
#$DBMS = 'PGSQL'; // Currently disabled[[ecode]]
Thay đổi port cho khi sử dụng PostgreSQL:
[[lcode]]# Only used with PostgreSQL/PGSQL database selection.
$_DVWA[ 'db_port '] = '5432';[[ecode]]
Sử dụng ReCAPTCHA trong hệ thống, bạn cần vào trang Tạo khoá ReCAPTCHA để lấy 2 khoá public private rồi điền vào đây:
[[lcode]]# ReCAPTCHA settings
#   Used for the 'Insecure CAPTCHA' module
#   You'll need to generate your own keys at: https://www.google.com/recaptcha/admin/create
$_DVWA[ 'recaptcha_public_key' ]  = '';
$_DVWA[ 'recaptcha_private_key' ] = '';[[ecode]]

Tiến hành cài đặt:

Bạn hãy truy cập vào website của bạn với đường dẫn [[scode]]setup.php[[escode]]. Ví dụ:
[[mcode]]http://example.com/setup.php[[ecode]]
Ấn vào nút Create/Reset Database. Để tiến hành nạp data tự động.
Cài đặt DVWA.
Như vậy là đã cài đặt xong rồi đấy!
Bạn hãy vào đường dẫn [[scode]]login.php[[escode]] để đăng nhập và bắt đầu hack thôi.
Trang đăng nhập.
Tài khoản và mật khẩu mặt định là admin/password.
Bảng điều khiển.

Lời kết:

Mình khuyên các bạn nên sử dụng mã nguồn này để học và thực hành pentest nhé, vì nếu thực hiện trên các website có thể bạn sẽ bị dính líu tới pháp luật. Mà nếu "lỡ" thì đừng có khai The Kali Tools ra nhé =)).

Gợp ý bài viết của bạn Thuỷ Bùi.
Tham khảo từ DVWA Cuong Quach.

Post a Comment

0 Comments