CHƯƠNG 1 – CƠ SỞ LÝ THUYẾT 1. Tổng quan về tấn công Web. Ngày nay, Web chính là kênh truyền thông cơ bản giúp doanh nghiệp tăng cường hình ảnh trực tuyến của mình trên thế giới mạng, giúp xây dựng, duy trì nhiều mối quan hệ với khách hàng tiềm năng. Với xu hướng phát triển công nghệ CNTT và truyền thông hiện nay, Web đã trở thành kênh bán hàng phổ biến đối với hàng nghìn doanh nghiệp lớn nhỏ.
Đặc biệt website hiện nay cho phép đóng gói, xử lý, lưu trữ và truyền tải dữ liệu khách hàng với dữ liệu lớn, quan trọng và có giá trị (như thông tin cá nhân, mã số thẻ tín dụng, thông tin bảo mật xã hội …). Chính những đặc điểm này, các website thường xuyên là mục tiêu tấn công của tin tặc để khai thác đánh cắp các thông tin quan trọng. Một trong những phương thức tấn công phổ biến là khai thác các lỗi bảo mật liên quan đến ứng dụng web. Nhiều điểm yếu nghiêm trọng hay các lỗ hổng cho phép hacker xâm nhập thẳng và truy cập vào cơ sở dữ liệu để trích xuất các dữ liệu nhạy cảm, quan trọng.
Các lỗi bảo mật ứng dụng web là nguyên nhân chủ yếu gây ra các lỗi đối với website. Các harker sau khi phát hiện được các lỗi này, thường sử dụng các kỹ thuật khác nhau để tiến hành xâm nhập, khai thác hoặc đánh sập cả hệ thống đích. Một số kỹ thuật thường được sử dụng như Buffer Overflows, SQL Injection, and Cross-site Scripting… Việc phân loại các kiểu tấn công thành các nhóm khác nhau sẽ giúp cho người quản trị xác định các nguy cơ cũng như biện pháp đối phó hiệu quả hơn. Một số phương thức tấn công ứng dụng web (Nguồn: https://securitydaily.net/) Luan van 6 1.
Một số khái niệm cơ bản về ứng dụng web a. HTTP Request & HTTP Response HTTP header là phần đầu của thông tin mà trình khách và trình chủ gửi cho nhau. Những thông tin trình khách gửi cho trình chủ được gọi là HTTP requests (yêu cầu) còn trình chủ gửi cho trình khách là HTTP responses (phản hồi). Thông thường một HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham số và giá trị.
Một số tham số có thể được dùng trong cả Header yêu cầu và Header trả lời, còn số khác thì chỉ được dùng riêng trong từng loại. 2 - HTTP Request (Nguồn: http://www.com/) HTTP Request: - Dòng đầu của HTTP Request là dòng Request-Line bao gồm các thông tin: + Method: là phương thức mà HTTP Request này sử dụng (POST, GET, HEAD, TRACE,. + URI: là địa chỉ định danh của tài nguyên. + HTTP version: là phiên bản HTTP đang sử dụng - Tiếp theo là các trường Header thông dụng như: + Accept: Loại nội dung có thể nhận được từ thông điệp phản hồi.
Ví dụ: text/plain,text/html,. + Accept-Encoding: Các kiểu nén được chấp nhận. Luan van 7 ví dụ: gzip, xz,. + User-Agent: Thông tin về trình duyệt của người dùng + Connection: Tùy chọn cho kết nối hiện tại.
Ví dụ: closed, keep-alive, update,. + Cookie: Thông tin HTTP Cookie từ máy chủ - Header của HTTP request sẽ kết thúc bằng một dòng trống Cấu trúc của HTTP phản hồi gần giống với HTTP yêu cầu, chỉ khác nhau là thay vì Request-Line thì HTTP phản hồi có Status-Line. 3- HTTP Response (Nguồn: http://www.com) HTTP Response: - Status-Line có phần chính như sau: HTTP-version là phiên bản HTTP cao nhất mà máy chủ đang hỗ trợ, Status-Code: mã kết quả trả về, Reason-Phrase: mô tả về Status-Code - Tiếp theo là các tham số và kèm một dòng trống để báo hiệu kết thúc header - Cuối cùng là phần thân của HTTP response Luan van 8 b. Session Session là khoảng thời gian người sử dụng giao tiếp với một ứng dụng.
Session bắt đầu khi người sử dụng truy cập vào ứng dụng lần đầu tiên, và kết thúc khi người sử dụng thoát khỏi ứng dụng. Mỗi session sẽ có một định danh (ID), mỗi session khác nhau sẽ có ID khác nhau. Trong ngữ cảnh ứng dụng web, website sẽ quyết định khi nào session bắt đầu và kết thúc. Trong một session, website có thể lưu trữ một số thông tin như đánh dấu bạn đã login hay chưa, những bài viết nào bạn đã đọc qua… HTTP là giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa là HTTP không lưu trữ trạng thái làm việc giữa trình duyệt với trình chủ.
Sự thiếu sót này gây khó khăn cho một số ứng dụng web, bởi vì trình chủ không biết trước đó trình duyệt đã có những trạng thái nào. Vì thế, để giải quyết vấn đề này, ứng dụng web đưa ra một khái niệm phiên làm việc (Session). Còn Session ID là một chuỗi để chứng thực phiên làm việc. Một số trình chủ sẽ cung cấp một Session ID cho người dùng khi họ xem trang web trên trình chủ.
Để duy trì phiên làm việc thì Session ID thường được lưu vào: - Biến trên URL - Biến ẩn form - Cookie Phiên làm việc chỉ tồn tại trong một thời gian cho phép, thời gian này được cấu hình quy định tại trình chủ hoặc bởi ứng dụng thực thi. Trình chủ sẽ tự động giải phóng phiên làm việc để khôi phục lại tài nguyên của hệ thống. Cookie Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình chủ và trình duyệt của người dùng. Các cookie được lưu trữ dưới những file dữ liệu nhỏ dạng text, được ứng dụng tạo ra để lưu trữ/truy tìm/nhận biết các thông tin về người dùng ghé thăm trang web và những vùng mà họ đi qua trong trang.
Những thông tin này có thể được bao gồm tên/định danh người dùng, mật khẩu, sở thích, thói quen… cookie được trình duyệt của người dùng chấp nhận lưu trên đĩa cứng của máy tính, tuy nhiên không phải lúc Luan van 9 nào trình duyệt cũng hỗ trợ cookie, mà còn tùy thuộc vào người dùng có chấp nhận chuyện lưu trữ đó hay không. Ở những lần truy cập sau đến trang web đó, ứng dụng có thể dùng lại những thông tin trong cookie (như thông tin liên quan đến việc đăng nhập vào Facebook, gmail…) mà người dùng không phải làm lại thao tác đăng nhập hay cung cấp các thông tin khác. Cookie được phân làm 2 loại secure/non-secure và persistent/non-persistent do đó ta sẽ có 4 kiểu cookie là: - Persistent và Secure - Persistent và Non-Secure - Non-Persistent và Secure - Non-Persistent và Non-Secure Persistent cookie được lưu trữ dưới dạng tập tin .txt trên máy khách trong một khoảng thời gian xác định. Non-Persistent cookie thì được lưu trữ trên bộ nhớ RAM của máy khách và sẽ bị hủy khi đóng trang web hay nhận được lệnh hủy từ trang web.
Secure cookie chỉ có thể được gửi thông qua HTTPS (SSL). Non-Secure cookie có thể được gửi bằng cả hai giao thức HTTPS hay HTTP. Thực chất là đối với secure cookie thì trình chủ sẽ cung cấp chế độ truyền bảo mật. Các thành phần của một cookie bao gồm: Domain Flag Path Secure Expiration Name Value 64.vn FALSE / FALSE 1154029490 Apache 996349247480 Domain: tên miền của trang web đã tạo cookie (ở trên là www.vn) Flag: mang giá trị TRUE/FALSE – Xác định các máy khác với cùng tên miền có được truy xuất đến cookie hay không.
Path: phạm vi các địa chỉ có thể truy xuất cookie. Ví dụ: Nếu path là “/tracuu” thì các địa chỉ trong thư mục /tracuu cũng như tất cả các thư mục con của nó như /tracuu/baomat có thể truy xuất đến cookie này. Còn nếu giá trị là “/” thì cookie sẽ được truy xuất bởi tất cả địa chỉ thuộc miền trang web tạo cookie. Luan van 10 Secure: mang giá trị TRUE/FALSE – Xác định đây là một secure cookie hay không, nghĩa là kết nối có sử dụng SSL hay không.
Expiration: thời gian hết hạn của cookie, được tính bằng giây kể từ 00:00:00 giờ GMT ngày 01/01/1970. Nếu giá trị này không được thiết lập thì trình duyệt sẽ hiểu đây là non-persistent cookie và chỉ lưu trong bộ nhớ RAM và sẽ xóa nó khi trình duyệt bị đóng. Name: tên biến (trường hợp này là Apache) Value: với cookie được tạo ở trên thì giá trị của Apache là 64.16018996349247480, của tên miền http://www.com Kích thước tối đa của cookie là 4kb. Số cookie tối đa cho một tên miền là 20 cookie.
Cookie bị hủy ngay khi đóng trình duyệt gọi là “session cookie”. Một ví dụ về cookie: Giả sử lần đầu tiên bạn vào trang facebook.com thì máy tính của bạn sẽ tải trang này rất lâu vì nó phải tải nội dung trang web về máy của bạn. Sau khi đăng nhập vào hệ thống và sử dụng như bình thường. Sang ngày hôm sau, vào lại trang facebook.com thì vào rất nhanh và nhiều khi cũng không cần phải đăng nhập tài khoản nữa nguyên nhân chính là do trình duyệt đã lưu cookie các thông tin hôm qua bạn đã vào.
Cookie là một cao dao hai lưỡi, lợi ích của nó thì bạn có thể thấy được sự tiện lợi là đỡ tốn thời gian tải lại trang web nhưng ngượi lại nhược điểm của nó là các Hacker có thể dựa vào các file cookie để lấy các thông tin tài khoản. Rất là nguy hiểm nên tốt nhất không để trình duyệt lưu cookie nhưng đa số người dùng hiện nay đều để chế độ lưu cookie vì người dùng không biết đến sự nguy hiểm của nó hoặc là thấy nó tiện cho công việc của mình. Proxy Hiện nay, người dùng sử dụng Internet đa số là đi Internet trực tiếp nghĩa là người dùng tự mình đi đến máy chủ hỏi xin các yêu cầu. Đi trưc tiếp như thế này thì có cái khuyết điểm là băng thông sẽ tốn rất nhiều.
Chính vấn đề về băng thông nên mới ra đời khái niệm “proxy”. Proxy là một Internet server làm nhiệm vụ chuyển tiếp thông tin và kiểm soát tạo sự an toàn cho việc truy cập Internet của các máy khách, còn gọi là khách hàng Luan van 11 sử dụng dịch vụ Internet. Trạm cài đặt proxy gọi là proxy server. Proxy hay trạm cài đặt proxy có địa chỉ IP và một cổng truy cập cố định.
Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặc biệt. Những chương trình máy khách của người sử dụng sẽ qua trung gian máy chủ proxy thay thế cho máy chủ thật sự mà người sử dụng cần giao tiếp. Máy chủ proxy xác định những yêu cầu từ client và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng máy chủ proxy sẽ kết nối với máy chủ thật thay cho máy khách và tiếp tục chuyển tiếp những yêu cầu từ máy khách đến máy chủ, cũng như trả lời của máy chủ đến máy khách. Vì vậy máy chủ proxy giống cầu nối trung gian giữa máy chủ và máy khách.