Lỗi CSRF: Bài học từ Paypal

ping

VIP Members
19/06/2013
57
101 bài viết
Lỗi CSRF: Bài học từ Paypal
Trong một số bài viết trước đây, chúng tôi đã giới thiệu tổng quan về lỗi CSRF

https://whitehat.vn/threads/9362-CSRF-Khai-niem-kich-ban-khai-thac-va-cach-phong-chong-Phan-1.html
https://whitehat.vn/threads/10448-CSRF-Khai-niem-kich-ban-khai-thac-va-cach-phong-chong-phan-2.html

Lỗi này tưởng chừng khá đơn giản nhưng nhiều website lớn vẫn gặp phải. Trong bài viết này tôi sẽ đề cập đến một trường hợp lỗi rất nghiêm trọng của CSRF trên trang thanh toán trực tuyến Paypal vào cuối năm 2014. Với lỗi này, kẻ tấn công có thể lừa nạn nhân thực hiện gửi tiền đến tài khoản bất kỳ, ngoài ra còn cho phép chiếm hẳn tài khoản Paypal của nạn nhân. Người phát hiện là nhà nghiên cứu người Ai Cập Yasser Ali, Paypal sau đó đã trao thưởng cho anh 10000$ vì phát hiện này. Kỹ thuật này cũng được đánh giá là top 10 kỹ thuật tấn công web hay nhất 2014.


Nguyên nhân gây lỗi
Phương pháp phổ biến nhất để chống CSRF là sử dụng synchronizer token. Trong phương pháp này, ứng với mỗi request của người dùng sẽ có một token được sinh ra ngẫu nhiên. Token này có hiệu lực trong request đấy và thay đổi khi người dùng thực hiện request khác.
Paypal cũng áp dụng phương pháp này cho website của mình. Họ dùng một tham số Auth trong query string để làm token cho các request. Tuy nhiên, sai lầm nghiêm trọng của Paypal là họ để token có thể sử dụng lại trong nhiều request khác nhau. Từ đấy kẻ tấn công có thể lừa nạn nhân truy cập một URL để thực thi request chuyển tiền (trong đó đã chứa token)


Chiếm token như thế nào?
Paypal cung cấp một chức năng chuyển tiền chỉ với email của người nhận và người gửi khi chưa đăng nhập:

Mã:
https://www.paypal.com/eg/cgi-bin/webscr?cmd=_send-money
Khi sumit, website sẽ tự động sinh ra một biến Auth trong request, đây chính là token của người dùng và có thể dùng lại. Kẻ tấn công chỉ đơn giản là bắt request này để lấy token.
Sau khi đã có được token, việc còn lại của kẻ tấn công chỉ là thực hiện lệnh chuyển tiền bất hợp pháp. Yasser Ali cũng phát hiện rằng, bằng cách tương tự anh có thể thêm email đăng nhập vào tài khoản của người dùng (bên cạnh primary email) và thay đổi được câu hỏi bảo mật. Cuối cùng thì anh chỉ việc reset mật khẩu với các thông tin trên để vào được trang quản trị của nạn nhân. Cuộc tấn công coi như kết thúc.

Nhà nghiên cứu này cũng làm một video để minh chứng cho cuộc tấn công của anh ta:

[video=youtube;KoFFayw58ZQ]https://www.youtube.com/watch?v=KoFFayw58ZQ[/video]
 
Chỉnh sửa lần cuối bởi người điều hành:
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
Bên trên