Có nên cài dvwa ở máy thật không

Tìm hiểu về DVWA và Mod Security

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
----------------------------------------------

TIỂU LUẬN
TÌM HIỂU VỀ DVWA VÀ MOD SECURITY

Giảng viên hướng dẫn: Nguyễn Ngọc Điệp
Sinh viên thực hiện: Trần Thanh Long
Mã sinh viên: B12DCCN180

1

Tìm hiểu về DVWA và Mod Security

HÀ NỘI 2016

Mục lục

Giới thiệu về dự án OWASP

I.
1.

Dự án OWASP

OWASP (Open Web Application Security Project) là 1 dự án mở về bảo mật
ứng dụng web, dự án là sự cố gắng chung của cộng đồng với mục đích giúp các
doanh nghiệp có thể phát triển, mua và bảo trì các ứng dụng web một cách an toàn.


OWASP cung cấp cho công đồng nhiều nguồn “tài nguyên” khác nhau. OWASP
cung cấp nhiều tài liệu hướng dẫn về các lĩnh vực khác nhau trong việc bảo mật
ứng dụng:

Các vấn đề về bảo mật ứng dụng (Application Security Desk Reference):
Tài liệu này cung cấp các định nghĩa và mô tả về tất cả các khái niệm
quan trọng, các loại lỗi, lỗ hổng, các phương pháp tấn công, phương pháp
kiểm tra, các tác động kỹ thuật và tác động kinh doanh trong bảo mật ứng
dụng. Đây là tài liệu tham chiếu cho tất cả các tài liệu hướng dẫn khác
của OWASP.
Hướng dẫn Phát triển (Developer’s Guide): Tài liệu này bao gồm tất cả
các yếu tố bảo mật mà người phát triển ứng dụng cần quan tâm. Trong tài
2

Tìm hiểu về DVWA và Mod Security


liệu cung cấp hàng trăm loại lỗ hổng phần mềm, có thể được sử dụng như
một sách hướng dẫn mạnh mẽ về kiểm soát bảo mật.
Hướng dẫn Kiểm tra (Testing Guide): Là tài liệu cung cấp về các quy

trình và công cụ kiểm tra bảo mật ứng dụng. Cách sử dụng tài liệu tốt
nhất là áp dụng vào việc kiểm tra điểm yếu bảo mật của một ứng dụng
hoàn thiện.
Hướng dẫn Kiểm tra mã nguồn (Code Review Guide): Kiểm tra ứng
dụng bằng cách xem mã nguồn sẽ hỗ trợ phòng tránh cho ứng dụng khỏi
các tác động bên cạnh việc kiểm tra từ bên ngoài. Người kiểm tra có thể
chủ động lựa chọn cách thức tiếp cận với ứng dụng phù hợp nhất.
Các nghiên cứu mới nhất về bảo mật ứng dụng web
Các maillist uy tín về thông tin bảo mật.

OWASP là một mô hình tổ chức mới. Không bị vấn đề thương mại hóa ảnh
hưởng giúp cho OWASP đưa ra những thông tin chính xác, không thiên vị và có
giá trị về an toàn thông tin. OWASP không liên kết với bất kì công ti kỹ thuật nào,
dù OWASP hỗ trợ về các mặt kỹ thuật trong an toàn thông tin. Cũng giống như
những dự án phần mềm mã nguồn mở, OWASP tạo ra rất nhiều sản phẩm bằng sự
phối hợp và cộng tác của cộng đồng.
Nền tảng OWASP là đơn vị phi lợi nhuận nhằm đảm bảo sự thành công lâu
dài của dự án. Hầu hết mọi người liên quan đến OWASP là tình nguyện viên, bao
gồm Hội đồng Quản Trị, Ủy ban toàn cầu, Lãnh đạo các chi nhánh, Lãnh đạo các
dự án, và thành viên dự án. OWASP hỗ trợ sáng tạo trong nghiên cứu bảo mật với
các khoản trợ cấp và cơ sỡ hạ tầng.
2.

Dự án OWASP top 10

Cộng đồng OWASP cũng giới thiệu tài liệu “OWASP Top 10”. Đây là một
dự án tập trung vào phân loại 10 rủi ro bảo mật ứng dụng phổ biến nhất trong mối
quan hệ với các tác động kỹ thuật và kinh doanh, đồng thời cung cấp các hướng
dẫn cụ thể về cách thức kiểm tra, xác minh và khắc phục những điểm yếu bảo mật
dễ gặp phải của ứng dụng. OWASP Top 10 chủ yếu tập trung giải quyết vấn đề về

các nguy cơ phổ biến hơn là việc bảo mật trên một ứng dụng web hoàn thiện. Toàn
bộ nội dung trong OWASP Top 10 được đăng tải tại địa chỉ:
www.owasp.org/index.php/Top10
Mục tiêu của dự án Top 10 là nâng cao nhận thức về ứng dụng bảo mật bằng
cách xác định những rủi ro quan trọng nhất đối diện với các tổ chức. Dự án Top 10
đề cập tới nhiều tiêu chuẩn, sách, công cụ và các tổ chức, bao gồm MITRE, PCI
DSS, DISA, FTC, …. Sự ra đời của OWASP Top 10 đánh dấu 12 năm của dự án
3

Tìm hiểu về DVWA và Mod Security

này hoạt động nhằm nâng cao nhận thức về tầm quan trọng của những rủi ro trong
bảo mật ứng dụng. OWASP Top 10 ra mắt lần đầu tiên vào năm 2003, vài bản cập
nhật nhỏ được thực hiện vào năm 2004 và 2007, 2010 và trong bài giới thiệu này,
OWASP đề cập tới Top 10 của 2013.
OWASP Top 10 là danh sách được OWASP tổng hợp và công bố theo từng
năm, nhằm đưa ra các cảnh báo rủi ro an ninh của ứng dụng web một cách ngắn
gọn và xúc tích, giúp các doanh nghiệp, cá nhân xây dựng, phát triển, hay đánh giá
các ứng dụng web có thể tự đưa ra được các giải pháp phù hợp, nâng cao bảo mật
thông tin. Danh sách này luôn được thay đổi và cập nhật liên tục, do sự thay đổi về
các tác động ảnh hưởng của các lỗ hổng.
Theo OWASP trong năm 20 13, 10 rủi ro an ninh cao nhất là:
1.

2.

3.

4.

5.

Injection: Sai sót trong nhập liệu, chẳng hạn như SQL injection, OS
injection hay LDAP injection… Điều này xảy ra khi các thông tin sai lệch
được đưa vào cùng với các biến dữ liệu đầu vào như 1 phần của lệnh hay câu
truy vấn. Kẻ tấn công có thể lợi dụng sơ hở này để thực hiện các lệnh không
mong muốn hay truy cập các dữ liệu bất hợp pháp.
Broken Authentication and Session Management: Xác thực hay quản lý
phiên thiếu chính xác. Sơ hở này cho phép kẻ tấn công có thể lợi dụng để đạt
được mật khẩu, khóa hay phiên làm việc, từ đó mạo danh phiên làm việc và
danh tính của người dùng thông thường.
Cross-Site Scripting (XSS): Sai sót trong kiểm duyệt nội dung đầu vào
cũng dẫn đến rủi ro này. Các dữ liệu bất hợp pháp được gửi đến trình duyệt
web mà ko cần sự xác nhận thông thường. Nó cho phép kẻ tấn công thực thi
các kịch bản trên trình duyệt web của nạn nhân làm thay đổi nội dung trang
web, chuyển hướng nạn nhân hay đánh cắp phiên làm việc được lưu trên
trình duyệt.
Insecure Direct Object References: Điều này xảy ra thì nhà phát triển cho
thấy có các tham chiếu trực tiếp đến một đối tượng nội bộ hay của người
dùng khác, ví dụ như một tập tin, thư mục, hay cơ sở dữ liệu quan trọng, mà
ko có sự kiểm tra hay bảo vệ an toàn cần thiết. Điều này cho phép kẻ tấn
công có thể truy cập các tài liệu này một cách trái phép.
Security Misconfiguration: Một hệ thống bảo mât tốt là hệ thống triển khai
cho khung ứng dụng, máy chủ ứng dụng, máy chủ cơ sở dữ liệu, nền tảng…
các phương phảp bảo mật cần thiết, thống nhất và liên kết với nhau. Điều
này nhằm tránh những nguy cơ bị khai thác vào ứng dụng, ví dụ để lộ ra
những thông tin quan trọng khi trao đổi các gói tin.

4

Tìm hiểu về DVWA và Mod Security

Sensitive Data Exposure: Các dữ liệu nhạy cảm không được lưu trữ và bảo
vệ cẩn thận, dẫn đến khi bị kẻ tấn công khai thác gây ra những ảnh hưởng to
lớn cho hệ thống máy chủ, doanh nghiệp, khách hàng. Ví dụ như việc lưu trữ
thẻ tín dụng mà ko thông qua các khâu mã hóa, hay các gói tin TLS bị bẻ
khóa và nghe lén thông qua lỗ hổng CRIME.
7. Missing Function Level Access Control: Thiếu các điều khoản trong việc
phân quyền quản trị các mức, dẫn đến việc kẻ tấn công có thể lợi dụng và
truy ra các điểm yếu trên hệ thống, hay lợi dụng để leo thang đặc quyền.
8. Cross-Site Request Forgery (CSRF): Lợi dụng sơ hở của nạn nhân, kẻ tấn
công có thể lừa nạn nhân thực hiện các hành động nguy hiểm mà nạn nhân
không hề hay biết, ví dụ như chuyển tiền từ tài khoản nạn nhân sáng tài
khoản kẻ tấn công, thông qua các lỗ hổng XSS.
9. Using Known Vulnerable Components: Sử dụng các thư viện, plugin,
module… có chứa các lỗ hổng đã được công khai, dễ dàng dẫn đến việc bị
kẻ tấn công lợi dụng để tấn công vào hệ thống một cách nhanh chóng.
10. Unvalidated Redirects and Forwards: Chuyển hướng không an toàn người
dùng đến một đường dẫn bên ngoài có thể bị kẻ tấn công lợi dụng để chuyển
hướng nạn nhân đến một trang đích được chuẩn bị sẵn của kẻ tấn công.
6.

II.

Tìm hiểu về DVWA

Dvwa (Damn Vulnerable Web Application) là một sản phẩm mã nguồn mở
được xây dựng dựa trên OWASP top 10 và được phát triển bởi RandomStorm.

Dvwa là ứng dụng web phát triển bằng php/mysql bị lỗi. Mục tiêu chính của nó là
giúp cho các chuyên gia an ninh kiểm tra kỹ năng và công cụ của họ trong một môi
trường hợp pháp, giúp các nhà phát triển web hiểu rõ hơn về các quá trình đảm bảo
các ứng dụng web và hỗ trợ giáo viên / học sinh để giảng dạy / học bảo mật ứng
dụng web trong một môi trường lớp học.
Dự án DVWA được bắt đầu vào 12/2008 và dần được phổ biến rộng rãi. Hiện
nay, DVWA được sử dụng bởi hang ngàn chuyên gia an ninh / giáo viên / học sinh
trên toàn thế giới.
DVWA là một ứng dụng web chứa rất nhiều lỗ hổng nên nó được khuyến nghị
không nên cài đặt hay tải lên các webserver công khai mà chỉ nên cài đặt trên
localhost hoặc trên mạng LAN. Cách đơn giản nhất để cài đặt DVWA là download
và cài đặt xampp để thiết lập một webserver. Xampp dễ dàng được cài đặt trên
Linux, Solaris, Windows và Mac OS X.
DVWA không thể truy cập từ xa. Điều này được thực hiện bởi một số rules nhất
định trong file .htaccess. Ngoài ra để đề phòng việc DVWA bị tải lên các
5

Tìm hiểu về DVWA và Mod Security

webserver công khai, DVWA cũng chứa file robot.txt với các thiết lập để đảm bảo
ứng dụng sẽ không bị lập chỉ mục bởi các công cụ tìm kiếm.
Ở phiên bản mới nhất, DVWA được chia thành 10 phần ứng với 10 lỗ hổng
phổ biến trên các ứng dụng web là: brute force, command inject, csrf (Cross Site
Request Forgery), file include, file upload, insecure captcha, sql injection ,blind sql
injection, stored xss, reflected xss.
DVWA-Security là tính năng hỗ trợ cho việc học tập về bảo mật ứng dụng
web. DVWA-Security có thể được chia thành 2 phần: các mức độ bảo mật và PHPIDS.

Các mức độ bảo mật được chia thành 4 mức là Low, Medium, High và
Impossible tương ứng với 4 mức độ từ dễ đến khó.
PHP-IDS là một thư viện của PHP. Nó hoạt động tương tự một Web
Application Firewall (WAF), lọc các dữ liệu người dung đưa vào để phát
hiện các mã độc hại. PHP-IDS có thể tùy chỉnh bật hoặc tắt.

III.
1.

Tìm hiểu về Mod Security
Giới thiệu.
6

Tìm hiểu về DVWA và Mod Security

Mod Security là một web application firewall(WAF) được Ivan Ristic phát triển
dành cho Apache Web Server. Giống như những firewall thông thường khác, nó lọc
những lưu lượng dữ liệu vào và ra để có thể quyết định chặn lại những lưu lượng
mà nó nghi ngờ là độc hại dựa theo tập lệnh nó định nghĩa. Nó còn có nhiều tính
năng vượt trội khác như : HTTP transaction logging và content injection…
Các luật được tạo và chỉnh sửa sử dụng một định dạng văn bản đơn giản, nó
làm cho việc viết rules trở nên đơn giản hơn. Một khi đã quen với cú pháp của
ModSecurity, chúng ta có thể nhanh chóng viết được những rules để block một
exploit mới hoặc ngăn chặn một lỗ hổng.
Có thể hình dung Mod Security như là một trạm trung gian giữa HTTP request
và httpd(dịch vụ web server). Khi phát hiện ra một cuộc tấn công, những chi tiết về

vụ tấn công sẽ được lưu vào log file hoặc một email có thể được gửi tới người
quản trị viên để báo hiệu có một cuộc tấn công xảy ra trên hệ thống.
Mod Security cho phép bạn bảo vệ server của mình thông qua việc viết các luật
nhằm bao phủ một dải các viễn cảnh tấn công có thể. Do đó, Mod Security là một
lớp bổ sung có thể giúp bạn bảo vệ theo một cách không cần bản vá.
Mod Security giải quyết các vấn đề tầm nhìn : nó giúp bạn nhìn thấy lưu lượng
web của mình. Đó là chìa khóa trong security : mỗi khi bạn có thế nhìn thấy HTTP
traffic, bạn có thể phân tích nó trong thời gian thực, record nó khi cần thiết và phàn
ứng lại với các sự kiện. Điểm nổi bật ở đây là bạn có thể làm tất cả mà không tác
động gì tới các ứng dụng web. Thậm chí tốt hơn, nó còn có thể áp dụng với bất kì
ứng dụng nào, ngay cả khi bạn không thể truy được vào source code.
2.

Khả năng của Mod Security.

7

Tìm hiểu về DVWA và Mod Security

Mod Security đứng trước Web Server, làm nhiệm vụ như một firewall để
kiểm soát truy cập vào ra Web Server. Các thông tin đi từ bên ngoài vào và bên
trong ra sẽ được kiểm soát chặt chẽ để tránh những thông tin có thể gây hại cho
Web Server hay là việc rò rỉ các thông tin đặc biệt từ Web Server đến Client.
Mod Security có thể thực hiện các chức năng cụ thể sau:

Request filtering : tất cả các request gửi đến web server đều được phân
tích và càn lọc (filter) trước khi chúng được đưa đến các modules khác để

xử lý.
Anti-evasion techniques : paths và parameters được chuẩn hóa trước khi

phân tích để chống evasion techniques.
Understanding of the HTTP protocol : ModSecurity là web application
firewall nên nó có khả năng hiểu được HTTP protocol. ModSecurity có
khả năng càn lọc dựa trên các thông tin ở HTTP header hay có thể xem

xét đến từng parameters hay cookies của các requests…
POST payload analysis : ngoài việc càn lọc dựa trên HTTP header,

ModSecurity có thể dựa trên nội dung (payload) của POST request.
Audit logging : mọi request đều có thể được ghi lại (bao gồm cả POST)


để người quản trị có thể theo dõi nếu cần.
HTTPS filtering : ModSecurity có thể phân tích HTTPS.
Compressed content filtering : ModSecurity sẽ phân tích sau khi đã
decompress các request data.
8

Tìm hiểu về DVWA và Mod Security

Có một điều đáng chú ý là ModSecurity có khả năng phân tích https. Nhiều
bạn sẽ rất thắc mắc là tại sao ModSecurity có thể đọc được thông tin khi đã bị mã
hoá với ssl(secure sockets layer). Thực ra thì theo như các mô hình đều mô tả
ModSecurity đứng trước Web Server, nhưng trên thực tế thì ModSecurity là một
module của Web Server. Tất cả các thông tin được mã hoá với ssl thì đều được
Web Server giải mã trước, sau đó mới chuyển tới ModSecurity để xử lý.

3.

Hoạt động của Mod Security

Trong ModSecurity, mỗi phiên phân tích sẽ được thực hiện lần lượt qua 5 bước
(phase), tại mỗi bước ModSecurity sẽ thực thi các rule tương ứng nhằm phát hiện
và phòng chống các khai thác.
ModSecurity cho phép bạn đặt rule tại một trong năm thời điểm trong chu
kỳ xử lý của Apache như sau :

Phase Request Header : rule được đặt tại đây sẽ được thực hiện ngay
sau khi Apacheđọc request header, lúc này phần request body vẫn chưa
được đọc. Đây là bước đầu tiên trong quá trình thực hiện phân tích gói
tin. Mục đích của bước này nhằm cho phép người viết rule tương tác với
các request trước khi thực hiện các yêu cầu trong phần HTTP body. Phần
này khá quan trọng để phân tích các khai thác dựa vào HTTP method
cũng như dựa vào URL như SQL Injection, Reflect XSS, Local file

include …
Phase Request Body : đây là thời điểm các thông tin chức năng chung
đưa vào được phân tích và xem xét, các rule mang tính applicationoriented thường được đặt ở đây. Bước này là quá trình kiểm tra chính
trong quá trình client gởi request đến server, phần này sẽ có hiệu quả khi
người dùng cố sử dụng phương thức POST hoặc PUT để upload tập tin
lên phía server. Việc kiểm tra này bảo đảm dữ liệu đưa lên server là an
9

Tìm hiểu về DVWA và Mod Security

toàn, tránh tình trạng upload mã độc hoặc các dạng tấn công như Stored

XSS, Ajax Injection... ModSecurity hỗ trợ ba loại mã hóa request body :
- Application/x-www-form-urlencoded dùng để truyền form dữ liệu.
- Multipart/form-data dùng để truyền file.
- Text/xml : dùng để phân tích dữ liệu XML.
Phase Response Header : Những request đã được xử lý tại server sẽ
được trả về cho ModSecurity kiểm tra trạng thái trong phần respone
header. Trước khi phần respone body được đọc thì ModSecurity sẽ dựa
vào tập rule để xác định có cần kiểm tra nội dung dữ liệu trong phần
body hay không.
Ví dụ: mã trạng thái trả về là 404 (Not found) thì lúc này sẽ không cần

kiểm tra nội dung gói tin trả về.

Phase Response Body : Sau khi ModSecurity đã hoàn thành việc kiểm
tra tại respone header thì nội dung trong phần body sẽ được kiểm tra so
trùng với mẫu trong tập lệnh. Việc này là khá hiệu quả để phát hiện và
phòng chống xâm nhập trong trường hợp ở phase request header và phase
request body không phát hiện được tấn công.
Ví dụ: trong khai thác SQL injection, nếu hacker cố gắng sử dụng một

số công nghệ evasion thì việc phát hiện khi request là khó khăn. Khi khai
thác thành công, ModSecurity sẽ phân tích kết quả trong gói tin trả về để
phát hiện nếu như câu truy vấn thành công.

Phase Logging : đây là thời điểm các hoạt động log được thực hiện. các
rules đặt ở đây sẽ định rõ việc log sẽ như thế nào, nó sẽ kiểm tra các error
message log của Apache. Đây cũng là thời điểm cuối cùng để bạn chặn
các connection không mong muốn, kiểm tra các response header mà bạn
không thể kiểm tra ở phase response header và phase response body.

4.

Cài đặt.
10

Tìm hiểu về DVWA và Mod Security

Cài đặt thư viện:
Sudo apt-get istall gcc make httpd-devel libxml2
pcre-devel libxml2-devel curl-devel git

Cài đặt Mod Security:
sudo apt-get install libapache2-mod-security
sudo a2enmod mod-security
Chỉnh sử file /etc/httpd/conf/httpd.conf: thêm vào dòng:
LoadModule unique_id_module/modules/mod_unique_id.so
Sửa lại file httpd.conf để thực hiện load module ModSecurity:
LoadModule security2_module modules/mod_security2.so
Khởi động lại apache
service apache2 restart

5.

Cấu hình

ModSecurity là application firewall thuộc loại rules-based, nghĩa là chúng ta
cần thiết lập các rules để ModSecurity hoạt động. Các rules này được thể hiện dưới
dạng các chỉ thị (directives) và có thể đặt trực tiếp trong file cấu hình
Apache(thông thường là httpd.conf).
Ngoài ra có thể đặt các cấu hình này vào một file riêng, chẳng hạn
modsecurity.conf trong thư mục conf.d và sau đó chúng ta cần thêm vào httpd.conf
Include conf.d/modsecurity.conf
(mặc định trong httpd.conf đã có dòng include conf.d/*.conf . Với dòng này nó sẽ
thực hiện tất cả các file có phần mở rộng là .conf).
Theo mặc định thì rule engine bị disable. Để kích hoạt ModSecurity ta cần
thêm chỉ thị sau vào file cấu hình
SecRuleEngine On
11

Tìm hiểu về DVWA và Mod Security

Directive này dùng để điều khiển rule engine, chúng ta có thể sử dụng các
tùy chọn là On, Off hoặc DynamicOnly.
On : các rules của ModSecurity được áp dụng cho tất cả nội dung.
Off : vô hiệu hóa ModSecurity.
DynamicOnly : khi nó phù hợp với một luật nào đó thì nó cũng không thực
hiện bất kỳ hành động nào(rất có ích trong trường hợp muốn test một luật nào đó
mà không muốn nó block bất kì request nào có vấn đề với rules).
6.

Rules

Cấu trúc của một rule:
SecRule VARIABLES OPERATOR [ACTIONS]
a.

Variables
REMOTE_ADDR : Địa chỉ IP của client.
REMOTE_HOST : Hostname của client (nếu tồn tại) .
REMOTE_USER : Authenticated username (nếu tồn tại) .
REMOTE_IDENT : Remote Username (lấy từ inetd, ít dùng) .
REQUEST_METHOD : Request Method (GET, HEAD, POST..) .
SCRIPT_FILENAME : Đường dẫn đầy đủ của script được thực thi.
PATH_INFO : Phần mở rộng của URI phía sau tên của một script.
QUERY_STRING : URI phía sau dấu ?.
AUTH_TYPE : Basic hoặc Digest Authentication.
DOCUMENT_ROOT : Đường dẫn đến documentroot.
SERVER_ADMIN : Email của Server Administrator.
SERVER_NAME : Hostname của Server.
SERVER_ADDR : Địa chỉ IP của Server.

SERVER_PORT : Server port.
SERVER_PROTOCOL : Protocol, (ví dụ HTTP/1.1).
SERVER_SOFTWARE : Apache version.
TIME : Thời điểm hiện tại được viết theo cấu trúc : YmdHMS.
12

Tìm hiểu về DVWA và Mod Security

API_VERSION
THE_REQUEST : Dòng đầu tiên của request. vd: GET / HTTP/1.1.
REQUEST_URI : Request URI.
FILENAME : Tên file được yêu cầu đến.
b.

Collections

Một variables có thể bao gồm 1 hay nhiều phần dữ liệu. Khi variable có
nhiều hơn 1 giá trị thì ta gọi nó là collection.
SecRule ARGS:p dirty
SecRule ARGS:q dirty
Có thể dùng 1 hay nhiều variables
SecRule ARGS|REQUEST_HEADERS:User-Agent dirty
c.

Operators
Sử dụng @ để chỉ ra đây là một operation

Sử dụng !@ để chỉ ra một operation negation
Toán tử @rx (regular expression) là một toán tử mặc định, được sử dụng khi

không có một toán tử nào khác được chỉ định.
d. Action
Khi request vi phạm một rule nào đó thì ModSecurity sẽ thực thi một hành
động (action). Khi action không được chỉ rõ trong rule thì rule đó sẽ sử dụng
default action . Có 3 loại actions :
-

Primary Actions
Primary actions sẽ quyết định cho phép request tiếp tục hay không. Mỗi rule

chỉ có một primary action. Có 4 primary actions :
Deny : Request sẽ bị ngắt, ModSecurity sẽ trả về HTTP status code 500 hoặc
là status code của bạn thiết lập trong chỉ thị status.
Pass : Cho phép request tiếp tục được xử lý ở các rules tiếp theo.
13

Tìm hiểu về DVWA và Mod Security

Allow : Cho phép truy cập ngay lập tức và bỏ qua các phases khác (trừ
phases logging). Nếu muốn chỉ cho qua phase hiện tại thì cần chỉ rõ allow:phase
Khi đó sẽ vẫn được kiểm tra bởi các luật tại các phases sau. Chỉ cho phép truy cập
tới các request phases: allow:request, nó sẽ cho qua phase 1,2 và vẫn kiểm tra ở
phase 3 trở đi.
Redirect : Redirect một request đến một url nào đó.
-

Secondary Actions
Secondary actions sẽ bổ sung cho Primary actions, một rule có thể có nhiều

Secondary actions
Status : n : khi một Request vi phạm một rule nào đó thì ModSecurity có thể
trả về các HTTP status code n thay vì status code 500 mặc định.
exec : thực thi một lệnh nào đó nếu một request vi phạm.
log : ghi log những request vi phạm rule.
nolog : không ghi log
Khi request vi phạm một rule nào đó thì ModSecurity sẽ thực thi một hành
động (action). Khi action không được chỉ rõ trong rule thì rule đó sẽ sử dụng
default action . Có 3 loại actions :
-

Primary Actions
Primary actions sẽ quyết định cho phép request tiếp tục hay không. Mỗi rule

chỉ có một primary action. Có 4 primary actions :
Deny : Request sẽ bị ngắt, ModSecurity sẽ trả về HTTP status code 500 hoặc
là status code của bạn thiết lập trong chỉ thị status.
Pass : Cho phép request tiếp tục được xử lý ở các rules tiếp theo.
14

Tìm hiểu về DVWA và Mod Security

Allow : Cho phép truy cập ngay lập tức và bỏ qua các phases khác (trừ
phases logging). Nếu muốn chỉ cho qua phase hiện tại thì cần chỉ rõ allow:phase
Khi đó sẽ vẫn được kiểm tra bởi các luật tại các phases sau. Chỉ cho phép truy cập
tới các request phases: allow:request, nó sẽ cho qua phase 1,2 và vẫn kiểm tra ở
phase 3 trở đi.
Redirect : Redirect một request đến một url nào đó.
-

Secondary Actions
Secondary actions sẽ bổ sung cho Primary actions, một rule có thể có nhiều

Secondary actions
Status : n : khi một Request vi phạm một rule nào đó thì ModSecurity có thể
trả về các HTTP status code n thay vì status code 500 mặc định.
exec : thực thi một lệnh nào đó nếu một request vi phạm.
log : ghi log những request vi phạm rule.
nolog : không ghi log

7.

Core rule set

Ngoài việc tự thiết lập các rule, Mod security cũng cung cấp cho người dung
các gói rule được thiết lập sẵn, được gọi là Core Rules Set(CRS). CRS là một dự
án do OWASP triển khai, là một tập hợp các quy tắc phát hiện tấn công để sử dụng
cho Mod Security và các WAF nói chung. CRS nhằm mục đích bảo vệ các ứng
dụng web từ các cuộc tấn công bao gồm cả OWASP top 10 và giảm thiểu các cảnh
báo sai.

15

Tìm hiểu về DVWA và Mod Security

CRS cung cấp biện pháp bảo vệ chống lại nhiều cuộc tấn công phổ biến, bao
gồm:












SQL InjectionSQL Injection (SQLi)
Cross Site Scripting (XSS)
Local File Inclusion (LFI)
Remote File Inclusion (RFI)
Remote Code Execution (RCE)
PHP Code Injection
HTTP Protocol Violations HTTPoxy
Shellshock
Session Fixation
Scanner Detection
Metadata/Error Leakages
Project Honey Pot Blacklist
GeoIP Country Blocking

CSR yêu cầu Apache/IIS/nginx webserver với bản Mod Security 2.8.0 trở lên.
Chúng ta có thể download CSR tại Tại đây chúng ta có thể tùy chọn từng phần rule được thiết lập để chống lại

các cuộc tấn công riêng biệt.
Sau khi tải về, chúng ta sẽ được file crs-setup.conf.
Sau đó ta thêm vào file config của Mod Security:
Include /.../crs-setup.conf
Include /.../rules/*.conf

8. Logging
8.1.
Debug

log

Sử dụng SecDebugLog directive lựa chọn file để ghi lại các thông tin debug
SecDebugLog logs/modsec-debug.log
Bạn có thể thay đổi mức độ chi tiết các thông tin được log thông qua directive :
SecDebugLogLevel

4
16

Tìm hiểu về DVWA và Mod Security

Giá trị log có thể thay đổi từ 0-9 :
1.
2.
3.
4.
5.
6.

no logging.
errors (intercepted requests) only.
warnings.
notices.
details of how transactions are handled.
-as above, but including information about each piece of

9.

information handled.
log everything, including very detailed debugging
information.

8.2.

Audit log

Apache log ít thông tin vì thế nó không cho phép chúng ta có thể lần ngược các
bước của kẻ tấn công. ModSecurity hỗ trợ audit loging với đầy đủ thông tin và từ
đó có thể lần ngược lại quá trình của kẻ tấn công, cũng như là chỉnh sửa các rules
cho hợp lý tránh bị “false positive”. Có 2 directives:
SecAuditEngine On : Bật audit log lên.
SecAuditLog logs/audit.log : Chỉ ra file lưu trữ log chính
Ngoài ra còn có
SecAuditLog2 logs/audit2.log : Chỉ ra file lưu trữ log phụ
8.3.

Tùy biến thong tin log

SecAuditEngine chấp nhận 3 giá trị sau :
On : Log tất cả các requests.
Off : Không log.
RelevantOnly : Chỉ log những gì được sinh ra bởi các bộ lọc rules.
Ngoài ra ModSecurity còn hỗ trợ log dựa vào status code , ví dụ bạn cần log
lại những requests gây ra lỗi 5xx :
SecAuditLogRelevantStatus ^5

IV.

Xây dựng rules chống một số cách tấn công phổ biến
17

Tìm hiểu về DVWA và Mod Security

1. SQL Injection
SecRule ARGS "union\s+select" "t:lowercase,deny,msg:'SQL Injection'"
SecRule ARGS "union\s+all\s+select" "t:lowercase,deny,msg:'SQLInjection'"
SecRule ARGS "into\s+outfile" "t:lowercase,deny,msg:'SQL Injection'"
SecRule ARGS "drop\s+table" "t:lowercase,deny,msg:'SQL Injection'"
SecRule ARGS "alter\s+table" "t:lowercase,deny,msg:'SQL Injection'"
SecRule ARGS "load_file" "t:lowercase,deny,msg:'SQL Injection'"
SecRule ARGS "select\s+*" "t:lowercase,deny,msg:'SQL Injection'"
2. Xss
SecRule ARGS "alert\s+*\(" "t:lowercase,deny,msg:'XSS'"
SecRule ARGS "&\{.+\}" "t:lowercase,deny,msg:'XSS'"
SecRule ARGS "<.+>" "t:lowercase,deny,msg:'XSS'"
SecRule ARGS "javascript:" "t:lowercase,deny,msg:'XSS'"

V.

Demo

Demo tấn công Xss trên DVWA (Security level là low, không bật
PHP-IDS) khi không bật Mod Security và khi bật Mod Security.

18

Tìm hiểu về DVWA và Mod Security

19

Tìm hiểu về DVWA và Mod Security

20