bài tập môn học an ninh hệ thống mạng máy tính đề tài WEB APPLICATION SECURITY
HỌC VIỆN KỸ THUẬT QUÂN SỰ KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP MÔN HỌC AN NINH HỆ THỐNG MẠNG MÁY TÍNH Đề tài: WEB APPLICATION SECURITY Giảng viên: TS Trần Hồng Quang. Học viên : Nguyễn Thị Hương. Nguyễn Duy Hoàng. Trần Danh Minh Hoàng. Nguyễn Việt Hùng. Lớp: CH CNTT K25B. HÀ NỘI - 10/2014 An ninh hệ thống mạng máy tính Nhóm 19 - CHCNTT K25B HVKTQS 2 MỤC LỤC LỜI MỞ ĐẦU 3 CHƯƠNG 1: TỔNG QUAN VỀ ỨNG DỤNG WEB 4 I. Khái niệm ứng dụng Web 4 II. Một số lỗi bảo mật ứng dụng web thông dụng 6 CHƯƠNG 2. CÁC PHƯƠNG PHÁP TẤN CÔNG ỨNG DỤNG WEB 7 I. Information & Discovery 7 1. Spidering/Site Crawling 7 2. Dentifiable Characteristics 7 3. Errors and Response Codes 7 4. File/Application Enumeration 8 5. Network Reconnaissance 8 II. Một số cách tấn công ứng dụng web 9 1. Thao tác trên tham số truyền 9 2. Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross-Site Scripting) 12 3. Chèn câu truy vấn SQL 15 4. File include 20 5. Upload file 25 6. Yêu cầu giả mạo (Cross-Site Request Fogery) 28 7. Chiếm hữu phiên làm việc 32 8. Tổng kết quá trình tấn công của Hacker 36 9. Tổng kết các biện pháp phòng thủ 39 III. Authentication/Authorization 42 IV. System Mis-Configurations 42 KẾT LUẬN… 43 TÀI LIỆU THAM KHẢO 44 An ninh hệ thống mạng máy tính Nhóm 19 - CHCNTT K25B HVKTQS 3 LỜI MỞ ĐẦU Trong thời đại ngày nay, Internet đã trở nên rất quen thuộc và là một công cụ hữu ích để một đất nước giới thiệu hình ảnh hay đơn giản chỉ là một trang web cá nhân của một ai đó giới thiệu về mình. Tất cả đã kéo theo sự phát triển không ngừng của các ứng dụng web. Và dần dần, khái niệm ứng dụng web đã trở nên phổ biến. Khi mà trên internet, ứng dụng web đã trở lên phổ biến và được ứng dụng một cách rộng rãi thì các cuộc tấn công ứng dụng web cũng phát triển hết sức phức tạp. Điều này đã đặt ra vấn đề cấp thiết cần làm như thế nào để bảo đảm an toàn thông tin cho ứng dụng web, thông tin của người sử dụng. Các khái niệm chuyên môn về ứng dụng web và tấn công ứng dụng web cũng dần trở lên phổ biến hơn trong các tài liệu chuyên ngành. Các công cụ hỗ trợ người lập trình web, người quản trị mạng cũng xuất hiện giúp tìm kiếm lỗ hổng của ứng dụng web, nhưng nó không theo kịp sự phát triển nhanh đến mức chóng mặt theo xu hướng nhanh hơn, đẹp hơn của các ứng dụng web, và tất nhiên nó không thể ngăn chặn hoàn toàn các cuộc tấn công ứng dụng web, khi mà các cuộc tấn công ngày càng đa dạng khai thác triệt để những lỗi của ứng dụng web, của người quản trị, hay người lập trình ứng dụng web. Thống kê cho thấy 75% cuộc tấn công internet là tấn công ứng dụng web, nó gây ra những thiệt hại vô cùng to lớn, vì vậy việc tìm hiểu về tấn công ứng dụng web là rất cần thiết nhằm có cách phòng chống tấn công và bảo mật ứng dụng web hiệu quả trở thành một yêu cầu cấp thiết… Do đây là một xu hướng tất yếu của thời đại, nên việc tìm hiểu và nghiên cứu ứng dụng web sẽ giúp ích rất nhiều cho các nhà lập trình web mới, hay các quản trị viên mới còn ít kinh nghiệm trong việc quản trị hệ thống mạng của mình, phòng tránh, hay khắc phục những lỗi của ứng dụng web. Bài tập lớn được thực hiện nhằm mục đích giới thiệu rõ hơn về ứng dụng web nhằm tránh những nhầm lẫn và đồng thời tìm hiểu những tấn công ứng dụng web phổ dụng nhằm cách phòng chống, bảo mật web một cách hợp lý. An ninh hệ thống mạng máy tính Nhóm 19 - CHCNTT K25B HVKTQS 4 CHƯƠNG 1: TỔNG QUAN VỀ ỨNG DỤNG WEB I. Khái niệm ứng dụng Web Ứng dụng web là một ứng dụng chủ/ khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác. Dưới góc độ chức năng, ứng dụng Web là các chương trình máy tính cho phép người dùng website đăng nhập, truy vấn vào ra dữ liệu qua mạng Internet trên trình duyệt Web yêu thích của họ. Dữ liệu sẽ được gửi tới người dùng trong trình duyệt theo kiểu thông tin động (trong một định dạng cụ thể, như với HTML thì dùng CSS) từ ứng dụng Web qua một Web Server. Trình khách dành cho người sử dụng thường là một trình duyệt Web như Internet Explorer hay Netscape Navigator. Cũng có thể một chương trình đóng vai trò đại lý người dung hoạt động như một trình duyệt tự động. Người dùng gửi và nhận các thông tin từ trình chủ thông qua việc tác động mua bán, các diễn đàn, gửi nhận email. Tốc độ phát triển các kỹ thuật xây dựng ứng dựng web cũng phát triển rất nhanh. Ngày nay ứng dụng web thường được viết bằng Java hay các ngôn ngữ tương tự và chạy trên máy chủ phân tán, kết nối đến nhiều nguồn dữ liệu. Một ứng dụng web thường có cấu trúc như sau: Hoạt động của ứng dụng Web: Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến máy chủ Web thông qua các phương thức cơ bản GET, POST…của giao thức HTTP, trình chủ lúc này có thể cho thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như C/C++, PHP, ASP,… hoặc trình chủ yêu cầu bộ diễn dịch thực thi các trang JSP, JAVAR…theo yêu cầu của trình khách. Tuỳ theo các tác vụ của chương trình được cài đặt mà nó xử lý, tính toán, kết nối đến cơ sở dữ liệu, lưu các thong tin do trình khách gửi đến…và từ đó trả về cho trình khách một luồng dữ liệu có định dạng theo giao thức HTTP or HTTPS, nó gồm 2 phần: An ninh hệ thống mạng máy tính Nhóm 19 - CHCNTT K25B HVKTQS 5 Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao đổi giữa trình duyệt và webserver. Body là phần nội dung dữ liệu mà server gửi về client, nó có thể là một file HTML, một hình ảnh, một đoạn phim hay một văn bản bất kỳ. Sơ đồ rủi ro ở một số lớp: Mô hình bức tường lửa An ninh hệ thống mạng máy tính Nhóm 19 - CHCNTT K25B HVKTQS 6 SSL makes me secure: II. Một số lỗi bảo mật ứng dụng web thông dụng Trusting Client – side data Unescaped Special Characters HTML Character Filtering Authentication mechanisms using technologies such as JavaScript or ActiveX. Lack of re-authenticating the user before issuing new passwords or performing critical tasks. Hosting of uncontrolled data on a protected domain Các lỗi bảo mật ở trên có thể xuất hiện trong tất cả các ứng dụng web, bất kể nó được phát triển bởi các chuyên gia độc lập hay các công ty phần mềm nổi tiếng nhất. An ninh hệ thống mạng máy tính Nhóm 19 - CHCNTT K25B HVKTQS 7 CHƯƠNG 2. CÁC PHƯƠNG PHÁP TẤN CÔNG ỨNG DỤNG WEB I. Information & Discovery Trước khi tấn công một mục tiêu nào đó mà chúng ta tìm hiểu được chi tiết về mục tiếu đó thì khả năng tấn công thành công sẽ cao. Do vậy các tin tặc muốn tấn công một hệ thống họ sẽ tìm các thông tin chi tiết về hệ thống đó dựa vào các công cụ tìm kiếm, các lỗi phát sinh từ các ứng dụng … Đưới đây là một số cách thức tìm hiểu thông tin để tấn công. 1. Spidering/Site Crawling Spider web là những công cụ mạnh nhất và hữu ích nhất cho những thứ tốt và xấu trên internet. Một Spider có chức năng chính là khai thác dữ liệu. Cách một spider hoạt động điển hình là thu thập thông tin của một trang web tại một thời điểm. Nó sẽ thu thập các địa chỉ liên quan như là địa chỉ email, các thẻ meta, dữ liệu ẩn, thông tin URL, và các liên kết khác. Google.com là một spider điển hình. Người ta sử dụng spider để hack và được gọi là “google hack” Chúng ta có thể sử dụng công cụ wget để lấy các thông tin được công bố trong các ứng dụng Ví dụ: Để thu thập các tiêu đề HTTP của các web ta dùng lệnh sau wget-S –spider <mục tiêu> Để thu thập nội dung trang web ta dùng lệnh sau wget-r-D <miền> <mục tiêu> 2. Dentifiable Characteristics Đặc điểm nhận dạng là những tính năng mô tả một trang web hay nói một cách khác họ sẽ nói cho bạn biết các thông tin về trang web. 3. Errors and Response Codes Để tìm hiểu mục tiêu tấn công thì vấn đề các lỗi của web application cũng mang lại rất nhiều thông tin. Kẻ tấn công có thể dựa vào các HTTP Response. Trong mỗi HTTP Response đều chứa một trạng thái mã (status code). Các trạng thái mã cho biết kết quả truy vấn mà máy chủ web trả về. Ví dụ Thông tin HTTP Response HTTP/1.1 200 OK Date: Tue, 17 Dec 2013 03:30:53 GMT An ninh hệ thống mạng máy tính Nhóm 19 - CHCNTT K25B HVKTQS 8 Server: IBM_HTTP_SERVER/1.3.26.2 Apache/1.3.26 (Unix) Set-Cookie: tracking=tI8rk7joMx44S2Uu85nSWc Pragma: no-cache Expires: Thu, 01 Jan 1970 00:00:00 GMT Content-Type: text/html;charset=ISO-8859-1 Content-Language: en-US Content-Length: 24246 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="en"> <head> <meta http-equiv="Content-Type" content=”text/html; charset=iso-8859-1”> 4. File/Application Enumeration Đây là một kỹ thuật phổ biến được sử dụng để liệt kê và truy cập tài nguyên không được tham chiếu bởi ứng dụng nhưng vẫn có thể truy cập. Kẻ tấn công có thể tìm kiếm bằng cách sử dụng công nghệ Brute Force để tìm kiếm các nội dung không liên kết trong thư mục domain như là các thư mục temporary và tệp tin các tệp tin sao lưu cũ cũng như các tập tin cấu hình cũ. Các tài nguyên này có thể lưu trữ thông tin nhạy cảm về web application. 5. Network Reconnaissance Cách này dùng các công cụ và các tiện ích khác nhau để tìm hiểu thu thập thông tin. Cách dò tìm này kẻ tấn công thường dò địa chỉ IP, dò các dịch vụ đang chạy. Sau đây, tôi xin giới thiệu về một số cách tấn công các ứng dụng web và một số cách phòng chống (các kỹ thuật tấn công và bảo mật ứng dụng web): - Thao tác trên tham số truyền. - Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross-Site-Scripting). - Chèn câu truy vấn SQL. - File Include. - Upload File. - Yêu cầu giả mạo (Cross-Site-Request Fogery - CSRF). - Chiếm hữu phiên làm việc. An ninh hệ thống mạng máy tính Nhóm 19 - CHCNTT K25B HVKTQS 9 - Tổng kết quá trình tấn công của hacker. - Tổng kết các biện pháp phòng chống. II. Một số cách tấn công ứng dụng web 1. Thao tác trên tham số truyền 1.1. Thao tác trên URL a. Phát hiện lỗ hổng Khi nhập tham số vào 1 form HTML thì kết quả sẽ được truyền đến server theo hai cách: GET và POST. Nếu dùng GET thì tất cả tên biến và giá trị sẽ được truyền đi và xuất hiện trên URL. Ví dụ: Một URL thực hiện việc thay đổi mật khẩu được truyền đến server bằng phương thức GET: http://www.test.com/changepass.php?username=ACE_AnGeL&password=123456 Chúng ta quan sát URL trên thì sẽ thấy URL chứa 2 biến username và password với giá trị là username: ACE_AnGeL và password: 123456 Với cách truyền tham số này, hacker có thể dễ dàng thay đổi username và password theo ý mình: http://www.test.com/changepass.php?username=ACE_AnGeL&password=654321 Hay: http://www.test.com/changepass.php?username=admin&password=123456 Vậy hacker có thể thay đổi password của bất kì user nào với việc chỉ cần biết username. Thật nguy hiểm nếu website của chúng ta truyền tham số như vậy trong các hành động nhạy cảm. b. Một số biện pháp khắc phục Để khắc phục sự nguy hiểm của việc truyền tham số qua phương thức GET này ta có thể làm theo một số cách sau đây: Sử dụng phương thức POST thay vì GET Sử dụng cơ chế hàm băm (hash table). Khi người dùng chứng thực thành công với username và password hợp lệ, hệ thống sẽ sinh ra một khóa tương ứng, khóa này sẽ được lưu trên server và dùng để chứng thực các hành động của user này. Nếu khóa này không hợp lệ chứng tỏ hành động của user đã bị mạo danh. Đối với những thông tin có giá trị, cần mã hóa thông tin này trước khi cho hiển thị trên trình duyệt để tránh hacker có thể thay đổi tùy ý. An ninh hệ thống mạng máy tính Nhóm 19 - CHCNTT K25B HVKTQS 10 1.2. Thao tác trên biến ẩn form a. Phát hiện Trong HTML có thể truyền thông tin qua một biến ẩn form đó là hiden field. Biến ẩn form không hiển thị trên màn hình trình duyệt nhưng có thể xem nội dung này thông qua việc view source, vì thế đây có thể là một điểm yếu để hacker lợi dụng nếu hiden field này chứa các thông tin có giá trị nếu nó chứa các thông tin có giá trị ví dụ như giá của mặt hàng. Ví dụ 1 form có nội dung như sau: <form action=”http://www.test.com/checkout.php” menthod=”POST” > <input type=”hiden” name=”cost” value=”100”> </form> Với nội dung form như trên thì trình duyệt sẽ gửi đến trình chủ nội dung như sau: POST /http://www.test.com/checkout.phpHTTP/1.0 Cost=100 Nhưng nếu hacker download source code của form và sửa giá trị của hiden field như sau: <form action=”http://www.test.com/checkout.php” menthod=”POST” > <input type=”hiden” name=”cost” value=”1”> </form> Thì request đến trình chủ sẽ bị thay đổi là: POST /http://www.test.com/checkout.php HTTP/1.0 Cost=1 Ngoài việc hacker có thể thay đổi giá trị của các hiden field, hacker còn có thể thay đổi các nội dung các của form như độ dài của 1 ô nhập dữ liệu để tiến hành các kỹ thuật tấn công như Buffer over flow, … b. Một số biện pháp khắc phục Chỉ nên sử dụng biến ẩn form để lưu giữ những biến ít giá trị như có tác dụng tính toán việc hiển thị trên trình duyệt chứ không nên dùng biến ấn form để lưu giữ những giá trị thao tác ứng dụng. Dùng tham số HTTP_REFERER để kiểm tra xem nguồn gốc của request, nhưng hacker cũng có thể thay đổi tham số này để đánh lừa trình chủ. Vậy ta cũng ko nên quá tin tưởng vào tham số này. Trên trình chủ nên sử dụng các thông tin được tham chiếu từ cơ sở dữ liệu để tính toán. [...]... không nhằm vào máy chủ hệ thống mà chủ yếu tấn công vào máy của người sử dụng Hacker sẽ lợi dụng sự lỏng lẻo của hệ thống, hiểu biết hạn chế của người dùng cũng như đánh vào sự tò mò của họ dẫn đến chiếm đoạt được các thông tin quan trọng 1 cách dễ dàng Thông thường hacker sử dụng liên kết URL đã gắn thêm những đoạn mã được Nhóm 19 - CHCNTT K25B HVKTQS 12 An ninh hệ thống mạng máy tính viết bằng... về một chương trình CGI hoặc trang web của hacker và lưu trữ vào một tập Bước 4: Sau khi nhận được cookie đánh cắp, hacker dùng nó để thâm nhập vào Nhóm 19 - CHCNTT K25B HVKTQS 13 An ninh hệ thống mạng máy tính phiên làm việc của nạn nhân Ví dụ: Trang web http://www.test.com có lỗ hổng XSS, hacker sẽ thực hiện kỹ thuật tấn công XSS như sau: Khi hacker phát hiện ra website http://www.test.com có lỗ... phép người dùng thay đổi password bao gồm các file changepass.html, crsf.php với mã nguồn như sau: Nhóm 19 - CHCNTT K25B HVKTQS 29 An ninh hệ thống mạng máy tính Changepass.html Change Your Password New Password:... người quản trị ứng dụng không mong muốn Từ đó hacker có thể chiếm quyền điều khiển hệ thống 3.2 Các cách tấn công a By Pass Với dạng tấn công này, hacker có thể lợi dụng lỗ hổng SQL injection để vượt qua các trang đăng nhập một cách khá đơn giản Nhóm 19 - CHCNTT K25B HVKTQS 15 An ninh hệ thống mạng máy tính Ta sẽ xét một trang đăng nhập có nội dung code như sau: . HỌC VIỆN KỸ THUẬT QUÂN SỰ KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP MÔN HỌC AN NINH HỆ THỐNG MẠNG MÁY TÍNH Đề tài: WEB APPLICATION SECURITY Giảng viên:. dụng web phổ dụng nhằm cách phòng chống, bảo mật web một cách hợp lý. An ninh hệ thống mạng máy tính Nhóm 19 - CHCNTT K25B HVKTQS 4 CHƯƠNG 1: TỔNG QUAN VỀ ỨNG DỤNG WEB. Trần Hồng Quang. Học viên : Nguyễn Thị Hương. Nguyễn Duy Hoàng. Trần Danh Minh Hoàng. Nguyễn Việt Hùng. Lớp: CH CNTT K25B. HÀ NỘI - 10/2014 An ninh hệ thống mạng máy tính Nhóm 19