Web10: Một số hình thức giả mạo http headers

Trong lập trình web, nhiều lập trình viên sử dụng các trường trong http headers để kiểm tra, kiểm soát truy cập của người sử dụng. Việc kiểm tra, kiểm soát này tưởng trừng như an toàn nhưng trên thực tế tất cả trường trong http headers đều có thể bị giả mạo dẫn tới những nguy cơ về việc truy cập trái phép vào các website đó.

Dưới đây, Quản Trị Mạng sẽ cùng các bạn tìm hiểu một số trường hợp giả mạo http headers để thực hiện việc truy cập trái phép.

Trong một số trường hợp, một số website chỉ cho phép truy cập từ một số trang nhất định. Khi bạn request từ một trang khác sẽ bị từ chối truy cập.

Ví dụ, bạn thử truy cập trang sau:

URL: http://natas4.natas.labs.overthewire.org/

Username: natas4

Password: Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ

Truy cập bị từ chối

Trong trường hợp này, lập trình viên đã sử dụng biến $_SERVER['HTTP_REFERER'] để kiểm soát sự truy cập. Trường tương ứng với biến này trong header là Referer.

Vì vậy, có thể thay đổi header để truy cập vào site đó. Sử dụng Tamper data (addon trên firefox) để thay đổi trường referer trong header thành như sau:

Thay đổi trường referer trong header

Và chúng ta có thể truy cập vào site đó

Được phép truy cập

Một trường hợp khác:

Một site lưu trạng thái đăng nhập trong cookie, vì cookie cũng được gửi trong http header nên chúng ta có thể thay đổi:

URL: http://natas5.natas.labs.overthewire.org/

Username: natas5

Password: iX6IOfmpN7AYOQGPwtn3fXpbaJVJcHfq

Từ chối truy cập

Khi sử dụng Tamper data để phân tích header gửi lên ta thấy tham số loggedin=0 trong trường cookie. Thay đổi nó thành 1 sau đó submit để thấy sự khác biệt.

Cho phép truy cập

Một ví dụ tiếp theo:

Một site có đoạn xử lý ip của người truy cập tới. Site này chỉ cho truy cập tới từ một địa chỉ ip cố định, và không được phép truy cập từ các địa chỉ ip khác. Tuy nhiên nó sử dụng các thông tin được gửi lên trong http headers để kiểm tra ip của người sử dụng.

X-Forwarded-For và Client-Ip là 2 trường trương ứng của 2 biến server $_SERVER['HTTP_X_FORWARDED_FOR'] và $_SERVER['HTTP_CLIENT_IP'] trong HTTP header. Vì vậy, ta có thể giả mạo được địa chỉ IP truy cập bằng cách thay đổi một trong hai trường này.

Đối với form upload

Form upload

Một số lập trình viên sử dụng đoạn mã kiểm tra phần mở rộng của file upload như sau:

if($_FILES[‘file’][‘type’] == ‘image/gif’)
{
//cho phép upload
}
else
{
//không cho phép upload
}

Hacker có thể dễ dàng bypass bằng cách xử dụng các phần mềm Tamper để sửa trường Content-Type trong header trước khi gửi lên server

Sửa trường Content-Type trong header

Và hacker có thể upload nên một file với phần mở rộng .php trái phép.

Việc sử dụng các trường trong http headers để kiểm tra, kiểm soát truy cập là không an toàn, vì vậy các lập trình viên cần nắm được để đảm bảo an toàn cho website.

Dưới đây là video đề mô về một số trường hợp giả mạo http headers do thành viên diễn đàn WhiteHat.vn thực hiện:

Chúc các bạn thành công!

Thứ Bảy, 09/07/2022 20:00
51 👨 496
0 Bình luận
Sắp xếp theo
    ❖ Bảo mật máy tính