CSRF – Khái niệm, kịch bản khai thác và cách phòng chống - Phần 1

Thảo luận trong 'Web Security' bắt đầu bởi Kaito KID, 13/01/15, 05:01 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
    Tóm tắt
    Bài viết này đề cập đến một lỗ hổng thường xuất hiện trong các ứng dụng web, nằm trong OWASP TOP 10 (2013) – CSRF. Bài viết được tổng hợp từ các tài liệu về CSRF, cách kiểm tra, đánh giá code và cách phòng chống CSRF của tổ chức OWASP.

    1. CSRF là gì?
    Cross-Site Request Forgery, cũng được biết đến với các tên gọi one-click attack, session riding, XSRF, là một phương thức tấn công lừa người dùng cuối thực hiện những hành động không mong muốn trên một ứng dụng web. Phương thức tấn công này sẽ “mượn tay” người dùng gửi những request định sẵn đến server, trong khi họ vẫn đang trong phiên đăng nhập.
    Ví dụ, A có quyền thực hiện một quyền X thông qua một link HTTP. B bằng cách nào đó biết được link này, nhưng không có quyền thực thi. Anh ta sẽ lừa A click vào link soạn sẵn của mình, khi đó, link HTTP sẽ được thực thi một cách hợp pháp dưới quyền của A.

    2. Kịch bản khai thác
    Chúng ta cùng xem xét một ví dụ sau: Alice muốn chuyển $100 cho Bob thông qua website bank.com, website này có lỗ hổng CSRF. Maria, một kẻ tấn công, muốn lừa Alice gửi tiền cho cô ta. Maria phải thực hiện hai bước sau:
    • Xây dựng một URL hoặc một đoạn script để khai thác.
    • Lừa Alice thực thi URL hoặc đoạn script trên.

    Đối với phương thức GET
    Nếu ứng dụng web sử dụng phương thưc GET để truyền tham số và thực thi hành động, tác vụ chuyển tiền có thể được thực hiện thông qua URL tương tự như sau:

    HTML:
    GET http://bank.com/transfer.do?acct=BOB&amount=100 HTTP/1.1
    Đầu tiên, Maria sẽ tạo một URL có nhiệm vụ chuyển tiền từ tài khoản của Alice đến tài khoản của cô ta:

    HTML:
    http://bank.com/transfer.do?acct=MARIA&amount=100000
    Bằng một số kỹ thuật Social Engineering, Maria sẽ lừa Alice request đến bank.com với URL trên. Ví dụ:

    HTML:
    [URL="http://bank.com/transfer.do?acct=MARIA&amount=100000"]View my Pictures![/URL]
    Hoặc:

    HTML:
    [IMG]http://bank.com/transfer.do?acct=MARIA&amount=100000[/IMG]
    Đối với phương thức POST
    Khác với trường hợp vừa nêu trên, ứng dụng web sẽ gửi thông tin lên thông qua phương thức POST:

    HTML:
    POST http://bank.com/transfer.do HTTP/1.1
    acct=BOB&amount=100
    Request sẽ không được chuyển đến server thông qua thẻ A hay IMG, nhưng có thể được chuyển đi thông qua thẻ FORM:

    HTML:
    
    
     
    Last edited by a moderator: 13/01/15, 10:01 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
    JuztN and Cord like this.