Tìm hiểu về kĩ thuật tấn công xss

  1. Giới thiệu về XSS.

    1.1. Khái niệm XSS

    Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS để tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là một kĩ thuật tấn công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ...) những thẻ HTML hay những đoạn mã script nguy hiểm có khả năng đánh cắp hay thiết lập được những thông tin quan trọng như cookies, mật khẩu, usename…. Trong đó, những đoạn mã nguy hiểm được chèn vào hầu hết được viết bằng các Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML.

    1.2. Hình thức tồn tại của XSS

    • Stored XSS: là hình thức tấn công mà ở đó cho phép kẻ tấn công có thể chèn một đoạn script nguy hiểm (thường là Javascript) vào website của chúng ta thông qua một chức năng nào đó (vd: viết lời bình, guestbook, gửi bài..), để từ đó khi các thành viên khác truy cập website sẽ bị dính mã độc từ kẻ tấn công này, các mã độc này thường được lưu lại trong database của website chúng ta nên gọi là Stored. Stored XSS phát sinh do chúng ta không lọc dữ liệu do thành viên gửi lên một cách đúng đắn, khiến cho mã độc được lưu vào Database của website.

    • Reflected XSS: Trong hình thức này, kẻ tấn công thường gắn thêm đoạn mã độc vào URL của website chúng ta và gửi đến nạn nhân, nếu nạn nhân truy cập URL đó thì sẽ bị dính mã độc. Điều này xảy ra do ta không chú ý filter input từ URL của website mình.

    1.3. Mục tiêu của XSS

    XSS khai thác thường được sử dụng để đạt được các kết quả độc hại sau đây:

    • Truy cập thông tin nhạy cảm hoặc bị hạn chế.
    • Ăn cắp tiền (giao dịch ngân hàng, mua hàng online…).
    • Theo dõi thói quen lướt web của người dùng.
    • Thay đổi tính năng của trình duyệt
    • Bôi nhọ danh tiếng của một cá nhân hay công ty.
    • Hủy hoại ứng dụng web,
    • Tấn công từ chối dịch vụ…
  2. Hoạt động của XSS.

    XSS cho phép attacker chèn các đoạn mã vào link của đường dẫn, để thực hiện trên trình duyệt của người dùng, dẫn đến việc mất cookies, mật khẩu, session hay chèn virus…

    Thường thì XSS có dạng như: http://www.xxx.vn//index.php?pg=news&cat=<script>alert(“Lỗi_XSS”)</script>

    Về cơ bản XSS cũng giống như SQL Injection hay Source Injection, nó cũng là các yêu cầu (request) được gửi từ các máy client tới server nhằm chèn vào đó các thông tin vượt quá tầm kiểm soát của server.

    Các đoạn mã trong thẻ script không hề bị giới hạn bởi chúng hoàn toàn có thể thay thế bằng một file nguồn trên một server khác thông qua thuộc tính src của thẻ script. Cũng chính vì lẽ đó mà chúng ta chưa thể lường hết được độ nguy hiểm của các lỗi XSS.

    Nhưng nếu như các kĩ thuật tấn công khác có thể làm thay đổi được dữ liệu nguồn của web server (mã nguồn, cấu trúc, cơ sở dữ liệu) thì XSS chỉ gây tổn hại đối với website ở phía client mà nạn nhân trực tiếp là những người khách duyệt site đó. Tất nhiên đôi khi các hacker cũng sử dụng kĩ thuật này đề deface các website nhưng đó vẫn chỉ tấn công vào bề mặt của website.

    Thật vậy, XSS là những Client-Side Script, những đoạn mã này sẽ chỉ chạy bởi trình duyệt phía client do đó XSS không làm ảnh hƣởng đến hệ thống website nằm trên server.

  3. Khai thác lỗi XSS.

    xss.png

    • Bước 1: Hacker biết được người dùng đang sử dụng một ứng dụng Web có lỗ hổng XSS.
    • Bước 2: Người dùng nhận được 1 liên kết thông qua email hay trên chính trang Web (như trên guestbook, banner dễ dàng thêm 1 liên kết do chính hacker tạo ra…). Thông thường hacker khiến người dùng chú ý bằng những câu kích thích sự tò mò của người dùng như “ Kiểm tra tài khoản”, “Một phần thưởng hấp dẫn đang chờ bạn”…
    • Bước 3: Chuyển nội dung thông tin (cookie, tên, mật khẩu…) về máy chủ của hacker.
    • Bước 4: Hacker tạo một chương trình cgi hoặc một trang Web để ghi nhận những thông tin đã đánh cắp vào 1 tập tin.
    • Bước 5: Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng để thâm nhập vào tài khoản của người dùng.
  4. Phòng chống XSS.

    Như đã đề cập ở trên, một tấn công XSS chỉ thực hiện được khi gửi một trang web cho trình duyệt web của nạn nhân có kèm theo mã script độc của kẻ tấn công.

    Người ta không lường hết được mức độ nguy hiểm của XSS nhưng cũng không quá khó khăn để ngăn ngừa XSS. Có rất nhiều cách để có thể giải quyết vấn đề này. OWASP (The Open Web Application Standard Project) nói rằng để có thể xây dựng các website bảo mật cao đảm bảo những trang phát sinh động không chứa các tag của script, đối với các dữ liệu của người sử dụng bạn nên làm những việc sau:

    4.1. Với những dữ liệu người thiết kế và phát triển ứng dụng Web:

    Những dữ liệu, thông tin nhập của người dùng, người thiết kế và phát triển ứng dụng Web cần phải thực hiện vài bước cơ bản sau:

    • Chỉ chấp nhận những dữ liệu hợp lệ.
    • Từ chối nhận các dữ liệu hỏng.
    • Liên tục kiểm tra và thanh lọc dữ liệu
    • Tạo ra danh sách những thẻ HTML được phép sử dụng, xóa bỏ thẻ <script> hoặc đóng các thẻ Script trong thẻ <comment> coi đoạn Script đó như là một đoạn trích dẫn thôi.
    • Lọc ra bất kì một đoạn mã JavaScript/Java/VBScript/ActiveX/Flash Related.
    • Lọc dấu nháy đơn hay kép.
    • Lọc ký tự Null.
    • Xóa những kí tự “ > ”, “ < ”
    • ...

    4.2. Đối với người dùng

    Cần cấu hình lại trình duyệt để nhắc nhở người dùng có cho thực thi ngôn ngữ kịch bản trên máy của họ hay không?

    Khi chúng ta vào một trang web mới thì ta cần phải cân nhắc khi click vào các link, và với email chúng ta cần phải kiểm tra các link hay những hình ảnh quảng cáo thật kĩ. Và tóm lại chúng ta sẽ an toàn hơn khi có sự cảnh giác cao hơn.

  5. Đánh giá

    Kĩ thuật XSS khá phổ biến và dễ dàng áp dụng, và mức độ thiệt hại của chúng có thể gây những hậu quá rất nghiêm trọng. Vì thế, ngoài việc ứng dụng kiểm tra tính đúng đắn của dữ liệu trước khi sử dụng thì việc cần nhất là người dùng nên cảnh giác trước khi bước vào một trang Web mới hay khi nhận được một email rất thu hút nào đó. Có thể nói, nhờ vào sự cảnh giác của người dùng thì 90% đã đạt được sự bảo mật trong kĩ thuật này.

All Rights Reserved