You are on page 1of 2

I. HTTP Host header là gì?

HTTP Header là một phần bắt buộc phải có kể từ HTTP/1.1. Nó chỉ định tên
miền mà khách hàng muốn truy cập. Ví dụ, khi chúng ta sử dụng trình duyệt
vào trang web: https://portswigger.net/web-security, trình duyệt củ chứng ta sẽ
gửi một yêu cầu như sau đến web server.
GET /web-security HTTP/1.1
Host: portswigger.net
Mục đích của Host header
● HTTP Host header giúp máy chủ có thể xác định thành phần nào mà máy
khách muốn giao tiếp thông qua địa chỉ IP hay URL (kèm theo port).
● Nếu các yêu cầu không chứa Host header hoặc được gửi không đúng định
dạng có thể dẫn đến sự cố khi định tuyến các yêu cầu đến ứng dụng dự
định.
● Với việc hỗ trợ Virtual hosting, bạn có thể chỉ sử dụng duy nhất 1 server,
và sử dụng thông tin ở Host header để điều hướng người dùng đến rất
nhiều các ứng dụng khác nhau.
Mô hình

II. HTTP Host header có thể bị tấn công như thế nào?
1. Tấn công Host header injection
Nếu máy chủ hoàn toàn tin tưởng vào HTTP Host header được gửi lên từ phía
người dùng và không xác thực hoặc không xử lý yêu cầu đó đúng cách, kẻ tấn
công có thể sử dụng thông tin đầu vào này để đưa vào các payloads có hại đồng
thời điều khiển hành vi phía máy chủ. Các cuộc tấn công liên quan đến việc đưa
trực tiếp payloads vào HTTP Host Header thường được gọi là "Host header
injection".
2. Một số trường hợp có thể bị tấn công Host header injection
● Khi không thực hiện kiểm tra yêu cầu của người dùng, kẻ tấn công có thể
tiêm nhiễm những payloads độc hại vào HTTP Header.
● Ngay cả khi HTTP Header được xử lý an toàn hơn, tùy thuộc vào cấu
hình của máy chủ xử lý các yêu cầu gửi đến, giá trị của trường "Host" có
khả năng bị ghi đè bằng cách đưa vào các tiêu đề khác.
● Do cấu hình sai trên website do sử dụng kiến trúc của bên thứ 3
3. Một số cách tấn công
● Thay đổi domain trong trường "Host" của HTTP Header request
GET /example HTTP/1.1
Host: hacker-domain.com
● Chèn 2 trường "Host" trong HTTP request
GET /example HTTP/1.1
Host: vulnerable-website.com
Host: hacker-domain.com
● Thêm ký tự line wrapping (\r, \n)
GET /example HTTP/1.1
Host: hacker-domain.com
Host: vulnerable-website.com
● Truyền trực tiếp URL trên GET request
GET https://vulnerable-website.com/ HTTP/1.1
Host: hacker-domain.com
● Chèn thêm trường "X-Forwarded-Host" để override host
GET /example HTTP/1.1
Host: vulnerable-website.com
X-Forwarded-Host: hacker-domain.com
III. Demo tấn công
Tấn công Host Header Injection thông qua chức năng Reset Password
Lab portswigger:
https://portswigger.net/web-security/host-header/exploiting/password-
reset-poisoning/lab-host-header-basic-password-reset-poisoning
Mô hình tấn công
Cách thức tấn công

You might also like