Task 7 [Day 2] Web Exploitation Elf HR Problems
Câu chuyện
McSkidy cần kiểm tra xem có bất kỳ yêu tinh nhân viên nào khác đã rời đi / bị ảnh hưởng bởi cuộc tấn công của Grinch Industries hay không, nhưng hệ thống lưu giữ thông tin của nhân viên đã bị tấn công. Bạn có thể hack lại chúng để xác định xem các đội khác trong Best Festival Company có bị ảnh hưởng không?

- Hiểu công nghệ cơ bản của máy chủ web và cách web giao tiếp.
- Hiểu cookie là gì và mục đích của chúng.
- Tìm hiểu cách thao tác và quản lý cookie để sử dụng với mục đích xấu.
HTTP(S)
Để máy tính của bạn và máy chủ web giao tiếp với nhau, cần có một giao thức trung gian. Đây là nơi HTTP (Giao thức truyền siêu văn bản) được giới thiệu! Giao thức HTTP là một giao thức máy khách-máy chủ để cung cấp giao tiếp giữa máy khách và máy chủ web. Các yêu cầu HTTP tương tự như một yêu cầu mạng TCP tiêu chuẩn; tuy nhiên, HTTP thêm các tiêu đề cụ thể vào yêu cầu xác định giao thức và thông tin khác.
Khi một yêu cầu HTTP được tạo, phương thức và tiêu đề đích sẽ luôn được bao gồm. Tiêu đề đích sẽ chỉ định những gì cần truy xuất từ máy chủ và tiêu đề phương thức sẽ chỉ định cách thức.
Khi truy xuất thông tin từ máy chủ web, người ta thường sử dụng phương thức GET, chẳng hạn như tải ảnh.
Khi gửi dữ liệu đến một máy chủ web, người ta thường sử dụng phương pháp POST, chẳng hạn như gửi thông tin đăng nhập.
Example Request
GET / HTTP/1.1
Host: tryhackme.com
User-Agent: Mozilla/5.0 Firefox/87.0
Referer: https://tryhackme.com/Khi máy chủ nhận được yêu cầu, nó sẽ gửi lại phản hồi, bao gồm mọi nội dung được yêu cầu nếu thành công và mã trạng thái. Mã trạng thái được sử dụng để cho trình duyệt máy khách biết cách máy chủ web diễn giải yêu cầu. Mã trạng thái "thành công" phổ biến nhất là HTTP 200 OK.
Example Response
HTTP/1.1 200 OK
Server: nginx/1.15.8
Date: Wednesday, 24 Nov 2021 13:34:03 GMT
Content-Type: text/html
Content-Length: 98
<html>
<head>
<title>Advent of Cyber</title>
</head>
<body>
Welcome To Advent of Cyber!
</body>
</html>Bản thân giao thức chỉ là một phần nhỏ của câu đố; khi nội dung được truy xuất từ máy chủ web, trình duyệt của bạn cần một cách để diễn giải và hiển thị thông tin được gửi. Các ứng dụng web thường được định dạng bằng HTML (Ngôn ngữ đánh dấu siêu văn bản), được hiển thị và tạo kiểu trong CSS (Trang tính kiểu xếp tầng). JavaScript cũng thường được sử dụng để cung cấp chức năng bổ sung.
Trong môi trường web ngày nay, việc sử dụng các khuôn khổ web đã trở nên phổ biến hơn đáng kể. Hầu hết các ứng dụng web hiện đại sử dụng nhiều khuôn khổ web và các giải pháp web khác mà người dùng cuối không thấy hoặc không tương tác với.
Để biết thêm thông tin về các yêu cầu, phương thức và tiêu đề HTTP, hãy xem phòng Cơ bản về Web!
Cookies

HTTP là một giao thức không trạng thái. Khi bạn gửi yêu cầu đến máy chủ web, máy chủ không thể phân biệt yêu cầu của bạn với yêu cầu của người khác .. Để giải quyết vấn đề không trạng thái và xác định những người dùng và cấp độ truy cập khác nhau, máy chủ web sẽ chỉ định cookie để tạo và quản lý phiên trạng thái giữa máy khách và máy chủ .
Cookie là những mẩu dữ liệu nhỏ (siêu dữ liệu) hoặc thông tin được lưu trữ cục bộ trên máy tính của bạn được gửi đến máy chủ khi bạn đưa ra yêu cầu.
Cookie có thể được gán bất kỳ tên nào và bất kỳ giá trị nào cho phép máy chủ web lưu trữ bất kỳ thông tin nào mà nó muốn. Hôm nay chúng ta sẽ tập trung vào cookie xác thực, còn được gọi là cookie phiên. Cookie xác thực hoặc phiên được sử dụng để nhận dạng bạn và cấp truy cập nào được đính kèm với phiên của bạn.
Dưới đây là sơ đồ mô tả việc gán và sử dụng cookie từ yêu cầu ban đầu đến yêu cầu phiên.
Để bắt đầu quá trình, khi bạn gửi một yêu cầu, chẳng hạn như yêu cầu đăng nhập, trình duyệt của bạn sẽ gửi thông tin đó thường là một yêu cầu ĐĂNG đến máy chủ web. Máy chủ web sẽ xác minh rằng nó đã nhận dữ liệu và đặt một cookie duy nhất; như đã đề cập trước đây, cookie là tùy ý và các giá trị được xác định bởi phương pháp hay nhất hoặc nhà phát triển web. Sau khi cookie được chỉ định, miễn là cookie vẫn được lưu trữ cục bộ trong trình duyệt của bạn, tất cả các yêu cầu GET trong tương lai sẽ được tự động gửi cùng với cookie đó để nhận dạng bạn và cấp truy cập của bạn. Khi máy chủ nhận được yêu cầu GET và cookie của bạn, nó sẽ định vị và hủy tuần tự hóa phiên của bạn. Deserialization là quá trình lấy một định dạng dữ liệu như JSON và xây dựng lại nó dưới dạng một đối tượng. Nếu thành công, máy chủ web sẽ trả lời yêu cầu của bạn với 200 phản hồi.
Bây giờ chúng ta đã hiểu cookie là gì và cách chúng được sử dụng, chúng ta hãy đi sâu vào nội dung của chúng.
Các thành phần cookie
Cookies được tạo thành từ 11 thành phần khác nhau; bạn có thể tìm thấy giải thích về từng thành phần trong bảng bên dưới.
| Component | Purpose | Example |
| Name | Mã nhận dạng cookie duy nhất (do máy chủ web đặt tùy ý). Luôn được ghép nối với thành phần giá trị. | SessionID |
| Value | Giá trị cookie duy nhất (do máy chủ web đặt tùy ý). Luôn được ghép nối với thành phần tên | sty1z3kz11mpqxjv648mqwlx4ginpt6c |
| Domain | Miền gốc của cookie. Đặt phạm vi của cookie. | .tryhackme.com |
| Path | Đường dẫn cục bộ đến cookie. Đặt phạm vi của cookie. | / |
| Expires/Max-age | Ngày/giờ mà cookie hết hạn | 2022-11-11T15:39:04.166Z |
| Size | Kích thước đĩa của cookie tính bằng byte. Đây thường là {Tên + Giá trị} | 91 |
| HttpOnly | Không thể truy cập cookie thông qua các tập lệnh phía máy khách | (indicated by a checkmark) |
| Secure | Cookie chỉ được gửi qua HTTPS | (indicated by a checkmark) |
| SameSite | Chỉ định khi nào một cookie được gửi thông qua các yêu cầu trên nhiều trang web | none |
| SameParty | Mở rộng chức năng của thuộc tính SameSite cho các nhóm của Bên thứ nhất. | (indicated by a checkmark) |
| Priority | Xác định tầm quan trọng của cookie. Xác định xem nó nên được gỡ bỏ hoặc giữ lại | High |
Nhìn vào tất cả các thành phần của một cookie có vẻ đáng sợ. Không cần phải lo lắng như những kẻ tấn công; chúng ta chỉ cần quan tâm đến hai thành phần: Name và Value; phần còn lại của các thành phần do máy chủ web xử lý.
Các thành phần cookie luôn được chuẩn bị theo từng cặp. Cặp chính là name-value; điều này sẽ xác định tên của cookie và giá trị của tên. Cặp thứ hai là attribute-value; điều này sẽ xác định một thuộc tính của cookie và giá trị của thuộc tính. Dưới đây là một ví dụ về Set-Cookie .
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>; Secure; HttpOnly
Thao tác với cookie

Thao tác cookie là lấy một cookie và sửa đổi nó để có được hành vi không mong muốn do nhà phát triển web xác định. Có thể thao tác cookie vì cookie được lưu trữ cục bộ trên hệ thống máy chủ của bạn, có nghĩa là bạn có toàn quyền kiểm soát chúng và sửa đổi chúng theo ý muốn.
Để bắt đầu sửa đổi và thao tác với cookie, chúng tôi cần mở các công cụ dành cho nhà phát triển của mình. Trong Google Chrome, các công cụ dành cho nhà phát triển được gọi là "Công cụ dành cho nhà phát triển Chrome" và trong Mozilla Firefox, chúng được gọi là "Công cụ dành cho nhà phát triển Firefox".
Có thể truy cập các công cụ dành cho nhà phát triển bằng cách nhấn F12 hoặc Ctrl + Shift + I. Khi các công cụ dành cho nhà phát triển được mở, để truy cập cookie của bạn, hãy điều hướng đến tab Bộ nhớ trong Firefox hoặc tab Ứng dụng trong Chrome / Edge; chọn menu thả xuống Cookies ở phía bên trái của bảng điều khiển.

Giá trị cookie lúc đầu có vẻ ngẫu nhiên; tuy nhiên, chúng thường có một giá trị được mã hóa hoặc ý nghĩa đằng sau chúng có thể được giải mã thành một giá trị không tùy ý, chẳng hạn như đối tượng Javascript.
Từ góc độ của kẻ tấn công, bạn có thể giải mã giá trị cookie để xác định các đối tượng bên dưới. Khi bạn đã xác định được các đối tượng bên dưới, bạn có thể sửa đổi chúng theo những gì bạn muốn. Để sử dụng cookie, bạn sẽ cần mã hóa nó trở lại mã hóa ban đầu và thay thế giá trị cookie. Dưới đây là một ví dụ về giá trị cookie được giải mã.
{firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"
Bây giờ chúng ta đã có tất cả các mẩu cookie và cách thao tác chúng, chúng ta có thể kết hợp tất cả chúng lại với nhau để có được quyền truy cập ngoài ý muốn.
Dưới đây là tóm tắt về cách các giá trị cookie có thể được sử dụng.
- Nhận giá trị cookie từ việc đăng ký hoặc đăng ký tài khoản.
- Giải mã giá trị cookie.
- Xác định ký hiệu đối tượng hoặc cấu trúc của cookie.
- Thay đổi các tham số bên trong đối tượng thành một tham số khác với mức đặc quyền cao hơn, chẳng hạn như quản trị viên hoặc quản trị viên.
- Mã hóa lại cookie và chèn cookie vào không gian giá trị; điều này có thể được thực hiện bằng cách nhấp đúp vào hộp giá trị.
- Hành động cookie; điều này có thể được thực hiện bằng cách làm mới trang hoặc đăng nhập.
Tài liệu bổ sung
Để biết thêm thông tin về (các) HTTP và cookie, hãy xem các phòng TryHackMe khác này.
- HTTP: https://tryhackme.com/jr/httpindetail
- Authentication: https://tryhackme.com/jr/authenticationbypass
What encoding type was used for the cookie value?
Nó hỏi định dạng của giá trị cookie là gì, dạng như ảnh bạn thấy là hexa
What object format is the data of the cookie stored in?
Mình đem mã hex này đi giải mã thu được dạng dữ liệu JSON
Manipulate the cookie and bypass the login portal.
What is the value of the administrator cookie? (username = admin)
Mình sửa thông tin user thành admin và thực hiện mã hóa hex lại để sử dụng
What team environment has a network warning?
Tương tự thành phần thứ 2 mà có ảnh báo lâu phản hồi là mục Application
If you want to learn more about Authentication bypasses, we suggest trying out this room https://tryhackme.com/jr/authenticationbypass
Tasks released each day get progressively harder (but are still guided with walkthrough videos). Come back tomorrow for Day 3's task, where InsiderPHD will be recording a video walkthrough!


0 Comments