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 |