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

Thảo luận trong 'Web Security' bắt đầu bởi Mask, 30/06/14, 09:06 PM.

  1. Mask

    Mask VIP Members

    Tham gia: 03/07/13, 08:07 AM
    Bài viết: 25
    Đã được thích: 23
    Điểm thành tích:
    18
    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 tôi sẽ đưa ra 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.

    URL: http://natas4.natas.labs.overthewire.org/
    Username: natas4
    Password: Z9tkRkWmpt9Qr7XrR5jWRkgOU901swEZ

    [​IMG]

    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:

    [​IMG]

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

    [​IMG]

    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

    [​IMG]

    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.

    [​IMG]


    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 như sau:
    PHP:
    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-ForClient-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

    [​IMG]

    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:
    PHP:
    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

    [​IMG]

    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 mà tôi đã nói ở trên
     
    Last edited by a moderator: 15/09/14, 04:09 PM
    Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    W570572 thích bài này.