chương 1 đề cập đến các phương pháp tiếp cận bảo mật ứng dụng web và quy trình kiểm thử với Burp Suite. Giới thiệu về dịch vụ web và kiến trúc ứng dụng web 1. Giao thức HTTP 1. Giới thiệu HTTP (Hyper-Text Transfer Protocol) là giao thức thuộc tầng ứng dụng thuộc bộ giao thức TCP/IP được sử dụng cho truyền siêu văn bản (Hyper-Text) của các ứng dụng web (Web applications).
Ngoat HTTP, HTTPS (Secure HTTP) con dugc su dung cho các ứng dụng web có yêu cầu đảm bảo an toàn thông tin truyền giữa máy khách (Client) và máy chủ (Server). Công dịch vụ chuẩn của HTTP là 80 và công dịch vụ chuẩn của HTTPS 1a 443.1 mô tả vị trí giao thức HT TP trong bộ giao thức TCP/IP và mô hình tham chiếu OSI. Giao thức HTTP trong bộ giao thức TCP/IP và mô hình tham chiếu OSI. TCP/IP Protocol Suite OSI model layers DARPA layers [ | Application Layer cà, « Application Layer HTTP FTP SMTP DNS RIP SNMP Transport Layer TCP UDP Transport Layer icmp | icmp | | LND [| MLD Network Layer Internet Layer " |_ ICMPv6 | ARP | IP (IPv4) | IPv6 Data Link Layer | Ỉ ị ' ' | Data Link Layer Network Interface i 802.11 i i ị Layer Ethernet = wireless § | Frame Relay ‡ ATM ‡ Physical Layer Ỉ LAN ; ' \ Hình 1.
Giao thức HTTP trong bộ giao thức TCP/IP và mé hinh tham chiéu OSI 2 Giao thức HTTP hoạt động theo kiêu yêu cầu — đáp ứng (request - response) trong mô hình giao tiếp khách — chủ (client — server).2 mô tả quá trình máy khách (Web Browser) gửi yêu cầu (request) đến máy chủ (HTTP Server) thông qua kết nối mạng. Theo đó, máy khách tạo một yêu cầu (GET request) và gửi xuống tầng HTTP, tiếp theo yêu cầu được đóng gói và chuyên tiếp đến các lớp hạ tầng mạng thông qua các lớp vận chuyên (TCP) và mạng (IP) để đến máy chủ HTTP ở công biết trước (Well- known port). Thông thường, công biết trước là công giao tiếp của máy chủ HTTP - các công số 80 hoặc 443. Máy chủ HTTP tiếp nhận yêu cầu đề xử lý.
_ —> Looks up Web Browser HTTP Server T8 ' = Web of Request received ` Files GET request ¥ T Returns HTTP Well-knownree naan contents t Via TCP/IP t + ¥ T LAP LAP (Ethernet or PPP) (Ethernet or PPP) x Routed to i Internet Hình 1. Máy khách (Web Browser) gửi yêu cầu (request) đến máy chủ (HTTP Server) _*~> Looks up Web Browser HTTP Server hung, ——- - - Web of Returned document MIME response Files | ‡ hetrns contents HTTP HTTP Response of file + I Vie TCP? IP Via TCP? IP | Ỷ LAP LAP (Ethernet or PPP) (Ethernet or PPP) “ Routed to Internet Internet (routing) Hình 1.3 mô tả quá trình máy chủ (HTTP Server) xử lý yêu cầu và gửi đáp ứng (response) đến máy khách (Web Browser). Khi nhận được yêu cầu truy nhập một trang web, máy chủ tiền hành xử lý: nếu đó là yêu câu một trang web tĩnh có nội dung có định, máy chủ sẽ đọc nội dung trang từ hệ thông file cục bộ của mình để tạo thành đáp ứng (HTTP Response) và gửi cho máy khách qua tầng HTTP, tiếp theo đáp ứng được đóng gói và chuyền tiếp đến các lớp hạ tầng mạng thông qua các lớp vận chuyên (TCP) và mạng (IP) để đến tầng HTTP phía máy khách và cuối cùng được chuyên cho máy khách (Web Browser) dé hién trị kết quả. Trên thực tế, nhiều ứng dụng web lưu nội dung các trang web trong các cơ sở dữ liệu, nên việc giao tiếp giữa máy khách (Web Browser) và may chu (HTTP Server) c6 sự tham gia của các chương trình chạy trên máy chủ (CGI Program) truy nhập cơ sở dữ liệu, như minh họa trên Hình 1.
Cho đến hiện nay, có 2 phiên bản của HTTP, gồm HTTP/1.1 là bản chỉnh sửa của HTTP/1.0 và điểm khác biệt chính của HTTP/I.1 so với bản gốc HTTP/1.0 sử dụng một kết nối mới cho một cặp trao đôi yêu cầu / đáp ứng, trong khi HTTP/1.1 sử dụng một kết nối mới cho một, hoặc nhiều cặp trao đôi yêu cầu / đáp ứng. HTTP HTTP Server Protocol t ¬ Web Browser <«—— ( CGI : Program ft Database | Hình 1. Kiến trúc cơ bản của một ứng dụng web 1. Các đặc điểm cơ bản Giao thức HTTP có 3 đặc điểm cơ bản, bao gồm không hướng kết nói, độc lập với thông tin truyền và không trạng thái.
Chi tiết các đặc điểm trên như sau: - Không kết nói (Connectionless): Máy khách và máy chủ HTTP giao tiếp theo theo kiêu yêu cầu — đáp ứng, mà không duy trì kết nói liên tục giữa hai bên. Cụ thê, máy khách HTTP, hay trình duyệt khởi tạo và gửi một yêu câu đến máy chủ HTTP, va sau khi gửi yêu cầu, máy khách ngất kết nói khỏi máy chủ và chờ đợi phản hồi. Máy chủ xử lý yêu câu, thiết lập lại kết nối và gửi phản hồi đến máy khách. - Độc lập với thông tin truyền (Media independent): Điều này có nghĩa là bất kỳ loại dữ liệu nào đều có thê truyền thông qua HTTP, với điều kiện cả máy khách và máy chủ biết cách xử lý nội dung của dữ liệu.
HTTP yêu cầu cả máy chủ và máy khách chỉ rõ kiêu nội dung của dữ liệu sử dụng khai báo kiểu MINE (Multipurpose Internet Mail Extensions). - Không trạng thái (Stateless): HTTP là giao thức không trạng thái hay không có nhớ, có nghĩa là máy khách và máy chủ nhận biết về sự tồn tại của nhau chỉ trong yêu câu hiện tại. Sau đó, cả hai đều “quên” ngay sự tồn tại của nhau. Do bản chất này của HTTP, không máy khách, hoặc trình duyét nào có thể lưu giữ thông tin giữa các yêu cầu khác nhau đến các trang web.
Các phương thức Giao thức HTTP hỗ trợ một số phương thức (method) để máy khách có thê gửi yêu cầu lên máy chủ. Các phương thức bao gom: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS va TRACE. Phan tiép theo mé ta van tat về tat cả các phương thức này. GET được sử dụng để truy vấn thông tin từ máy chủ sử dụng một địa chỉ web.
Các yêu cầu sử dụng phương thức GET chỉ nên truy vẫn dữ liệu và không nên có ảnh hơjởng (thay đôi) đến dữ liệu. HEAD tương tự như phương thức GET, nhưng chỉ có dòng trạng thái và phần tiêu đề được chuyển từ máy chủ đến máy khách. POST được sử dụng đề gửi đữ liệu đến máy chủ, chắng hạn thông tin khách hàng, file tải lên,. được gửi lên máy chủ sử dụng HTML form.
PUT được sử dụng đề thay thé tat ca các biêu diễn hiện tại của tài nguyên đích bằng nội dung tải lên. DELETE được sử dụng để xóa tất cả các biểu diễn hiện tại của tài nguyên đích cho bởi một địa chỉ web. CONNECT duoc su dung dé thiét lập đường hầm tới máy chủ được xác định bởi một địa chỉ web nhất định. OPTIONS duoc su dụng để mô tả các tùy chọn truyền thông cho tài nguyên đích.
TRACE được sử dụng để thực hiện một phép kiểm tra vòng lặp lại (loop-back) theo đường dẫn đến tài nguyên đích. Các thành phần của ứng dụng web Một ứng dụng web (Web application) có thê gồm các thành phần: Máy khách web/trinh duyét web (Web client/web browser), May chu web (HTTP/web server), URL/URI, Web session và cookie, Bộ dién dich va thực hiện các server script, Cac server script (CGI — Common Gateway Interface), May chu co so dit ligu va Ha tang mang TCP/IP ket noi giữa máy khách và máy chủ web. Trinh duyệt web Trình duyệt web là bộ phần mềm chạy trên máy khách có chức năng tạo yêu câu, gửi yêu cầu và hiên thị phản hồi/kết quả trả về từ máy chủ web. Các phương thức yêu câu bao gồm: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS và TRACE.
Trong số các phương thức trên, ba phương thức GET, HEAD và POST được sử dụng phô biến hơn cả. Trình duyệt web có khả năng hiển thị nhiều loại đữ liệu của trang web: văn bản, hình ảnh, âm thanh, video,. Trình duyệt cũng hỗ trợ khả năng lập trình bằng các ngôn ngữ script (như javascript), xử lý các ngôn ngữ HTML, XML, CSS,. Một số trình duyệt thông dụng bao gồm: Microsoft Internet Explorer, Google Chrome, Mozilla Firefox, Opera, Apple Safari.
May chu web Máy chủ web tiếp nhận yêu cầu từ trình duyệt web, xử lý yêu cầu và trả về dap ứng. Các đáp ứng thường là các trang web. Nếu là yêu câu truy nhập các file tinh, may chủ web truy nhập hệ thống file cục bộ, đọc nội dung file và gửi kết quả cho trình duyệt. Nếu là yêu cau truy nhập các file script, máy chủ web chuyên các script cho bộ xử lý script.
Script có thê bao gồm các lệnh truy nhập cơ sở dữ liệu đề xử lý dữ liệu. Kết quả 6 thực hiện scrIpt được chuyên lại cho máy chủ web để tạo thành đáp ứng và gửi cho trình duyệt. Một sô mã trạng thái đáp ứng thường gặp của máy chủ web: - 200: thành công - 404: lỗi không tìm thấy file/dữ liệu - 403: lỗi cắm truy nhập - 500: lỗi xử lý script trên máy chủ. Có nhiều loại máy chủ web được triển khai sử dụng trên thực té, trong do cac máy chủ web thông dụng nhất bao gồm: Mozilla Apache web server, Microsoft Internet Information Services (IIS), nginx (NGINX, Inc), Google web services, IBM Websphere va Oracle web services.
URL va URI URL (Uniform Resource Locator) con goi la dia chi web, 14 mét chuỗi ký tự cho phếp tham chiếu đến một tài nguyên Dạng thông dụng của URL: scheme://domain:port/path?query_ string#fragment 1d, trong đó: - scheme: chỉ giao thie truy nhap (http, https, ftp,. - domain: tén mién, vi dy www. - port: số hiệu công dịch vụ; với công chuan (http 80 hoặc https 443) thì không cần chỉ ra số hiệu công. - path: đường dẫn đến tên file/trang.
- ?query_string: chuỗi truy vẫn, gồm một hoặc một số cặp tên biến=giá trị. Ký tự và (&) được dùng đề ngăn cách các cặp. - fragment_id: một tên liên kết định vị đoạn trong trang. URI (Uniform Resource Identifier) là một chuỗi ký tự dùng để nhận dạng một địa chỉ web hoặc một tên.
URI có thể là URL hoặc URN (Uniform Resource Name), trong đó URN được dùng để nhận dạng tên của tài nguyên, còn URL được dùng đề tìm địa chỉ, hoặc vị trí của tài nguyên.5 biểu diễn các thành phần URL và URN trong URL. Các thành phân của URI 1. Web session va cookie Web session (phién làm việc web) là một kỹ thuật cho phép tạo ra ứng dụng web có trạng thái (stateful) vận hành trên giao thức HTP không trạng thái (stateless). Máy chủ web tạo ra và lưu một chuỗi định danh (ID) cho mỗi phiên (Session) theo yêu cầu của máy khách.