Web13: Session Fixation

Thảo luận trong 'Web Security' bắt đầu bởi Kaito KID, 21/08/14, 02:08 PM.

  1. Kaito KID

    Kaito KID VIP Members

    Tham gia: 02/07/13, 02:07 PM
    Bài viết: 41
    Đã được thích: 14
    Điểm thành tích:
    16
    1. Giới thiệu

    Session Fixation là một kỹ thuật cho phép hacker có thể chiếm đoạt session của người dùng. Kỹ thuật này lợi dụng việc server không thay đổi giá trị của session ID mỗi khi người dùng đăng nhập, thay vào đó nó sử dụng session ID sẵn có trước đó. Quá trình tấn công bao gồm việc lấy một session ID hợp lệ (có thể bằng cách truy cập vào website), sau đó tìm cách để nạn nhân đăng nhập vào website với session ID này, cuối cùng, khi nạn nhân đăng nhập thành công, hacker sẽ duyệt website với tài khoản của anh ta. Kịch bản cụ thể như sau:
    1. Mallory tìm một website, chẳng hạn http://unsafe.example.com, chấp nhận bất cứ session ID nào từ request mà không cần xác thực.
    2. Mallory sẽ gửi đến Alice một e-mail, trong đó có chứa đường link http://unsafe.example.com/?SID=1234.
    3. Alice đi đến http://unsafe.example.com/?SID=1234. Sau đó đăng nhập vào website.
    4. Mallory chỉ cần đi đến http://unsafe.example.com/?SID=1234, và sử dụng website với tài khoản của Alice.
    Mallory có thể dùng các cách sau để set cookie cho Alice:
    • Gửi kèm theo một đoạn script để set cookie
    • Gửi gói tin HTTP Response kèm theo giá trị cookie của MalloryGửi gói tin HTTP Response kèm theo giá trị cookie của Mallory
    • Sử dụng thẻ meta của HTML:

    [​IMG]

    2. Các ví dụ

    Ví dụ 1 – Client-side scripting

    Tương tự như kịch bản đã nêu ở phần trên, tuy nhiên, trong trường hợp này, Session ID không được truyền vào URL mà nằm trong cookie. Để sửa giá trị của Session ID trong cookie của nạn nhân, hacker sẽ chèn một đoạn Javascript:
    http://website.kom/document.cookie=”sessionid=abcd”;

    Ví dụ 2 - tag

    Tương tự như client-side scripting, nhưng lần này hacker sẽ chèn thêm thẻ :
    http://website.kon/

    Ví dụ 3 – HTTP header response

    Việc chèn Session ID cũng có thể được thực hiện bằng cách chặn các gói tin trao đổi giữa client và Web application, sau đó chèn thêm trường Set-Cookie vào header.

    [​IMG]
    3. Cách phòng chống

    Nguyên nhân của lỗi này là do server không tái tạo session ID sau mỗi lần đăng nhập thành công. Vì thế, khắc phục lỗi này cũng không khó, ta chỉ cần thay đổi giá trị của Session ID là xong. Trong PHP, ta dùng hàm session_regenerate_id() để cấp lại session.
     
    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, Cord and PhamTheThao like this.