Bài giảng Lập trình web ASP.Net với C# - Chương 9: Bảo mật và quản trị Website - Phạm Đào Minh Vũ

pdf 55 trang ngocly 2540
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình web ASP.Net với C# - Chương 9: Bảo mật và quản trị Website - Phạm Đào Minh Vũ", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_web_asp_net_voi_c_chuong_9_bao_mat_va_qu.pdf

Nội dung text: Bài giảng Lập trình web ASP.Net với C# - Chương 9: Bảo mật và quản trị Website - Phạm Đào Minh Vũ

  1. LẬP TRÌNH WEB ASP.NET VỚI C# Giảng Viên: Th.S Phạm Đào Minh Vũ Email: phamdaominhvu@yahoo.com 1
  2. Chương 9 Bảo mật và Quản Trị Website 1. Bảo mật Website 2. Quản trị Website 388 Trường CĐ CNTT TpHCM
  3. 9.1 BẢO MẬT WEB  Bảo mật ứng dụng Web  Bảo mật Web Server 389 Written by: Phạm Đào Minh Vũ Khoa CNTT Trường CĐ CNTT TP.HCM
  4. 9.1.1 Giới thiệu chung  Khi triển khai ứng dụng Web, người ta thường chỉ chú trọng vào giao diện, tính ứng dụng, tốc độ (bao gồm tốc độ xử lý và băng thông), mà quên mất rằng độ bảo mật của ứng dụng và web server mới là điều quan trọng mang tính sống còn đối với 1 doanh nghiệp  Một khi ứng dụng web ngày càng mở rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao  Các cuộc tấn công mang nhiều mục đích khác nhau, có thể là đánh cắp thông tin, phá hoại hoặc đôi khi chỉ là đùa giỡn. 390 Written by: Phạm Đào Minh Vũ Khoa CNTT Trường CĐ CNTT TP.HCM
  5.  Khi nói đến vấn đề bảo mật, các chuyên gia đều chú trọng đến sự an toàn của hệ thống mạng và hệ điều hành. Tuy nhiên, theo thống kê thì hơn 70% các cuộc tấn công là thông qua Internet (lợi dụng lỗ hổng bảo mật) và giá trị thiệt hải ước tính hàng tỷ USD mỗi năm  Kẻ tấn công (Hacker) thường lợi dụng lỗ hổng bảo mật của phần cứng lẫn phần mềm, cài đặt virus, worm, trojan, lỗi nghiệp vụ của lập trình viên, để thực hiện các cuộc tấn công. 391 Khoa CNTT Trường CĐ CNTT TP.HCM
  6. 392 Khoa CNTT Trường CĐ CNTT TP.HCM
  7. 9.1 BẢO MẬT ỨNG DỤNG WEB  Là 1 dạng tấn công phá hoại, mục tiêu là các ứng dụng Web trên Server  Mục đích của việc tấn công có thể là do phá hoại, đánh cắp thông tin, thay đổi nội dung website, 393 Written by: Phạm Đào Minh Vũ Khoa CNTT Trường CĐ CNTT TP.HCM
  8. 9.2.1. Lỗ hổng bảo mật ứng dụng web  SQL-injection  HTTP Response Splitting  Directory Traversal  Cross Site Scripting (XSS)  File Inclusion  Buffer Overflow  394 Khoa CNTT Trường CĐ CNTT TP.HCM
  9. 1 SQL-INJECTION  Tấn công SQL injection là hình thức tấn công chèn các đoạn mã SQL cho phép khai thác lỗ hổng bảo mật tồn tại trong cơ sở dữ liệu của một ứng dụng  Chiếm hơn 50% các cuộc tấn công vào website  CSDL: . Access . MSSQL . MySQL . Oracle .  Mức độ nguy hiểm: . Truy vấn vào CSDL của website . Thay đổi thông tin: thêm, xóa, sửa . Chiếm quyền admin của website . Thực thi các lệnh hệ thống . Làm cơ sở cho các loại tấn công khác: Local, virus, trojan, backdoor, DDoS, Proxy 395 Khoa CNTT Trường CĐ CNTT TP.HCM
  10. 2.1. SQL-INJECTION – Các dạng tấn công 1. By pass : bằng pass Code: trang Login.aspx.cs String vUsrName, vPassword; vUsrName = Request.Form("fUSRNAME") vPassword = Request.Form("fPASSWORD") strSQL = "SELECT * FROM T_USERS WHERE USR_NAME=' " & vUsrName & _ " ' and USR_PASSWORD=' " & vPassword & " ' " 396 Khoa CNTT Trường CĐ CNTT TP.HCM
  11. 1 SQL-INJECTION SELECT * FROM users WHERE User: admin & Pass: 123 user=„admin‟ AND pass=„123‟ User: abc‟ or 1=1 or 1=„‟& SELECT * FROM users WHERE Pass: def‟ or 1=1 or 1=„‟ user=„abc‟ or 1=1 or 1=„‟ AND pass=„def‟ or 1=1 or 1=„‟ Luôn luôn đăng nhập được 397 Khoa CNTT Trường CĐ CNTT TP.HCM
  12. 2.1. SQL-INJECTION – Các dạng tấn công Các dạng truy vấn: ' or 1=1 ' or 1=1# ' or 1=1/* ' or 1=1 ') or '1'='1 " or 1=1 ') or ('1'='1 or 1=1 ' or 'a'='a " or "a"="a ') or ('a'='a 398 Khoa CNTT Trường CĐ CNTT TP.HCM
  13. 2.1. SQL-INJECTION – Các dạng tấn công 2. Sử dụng câu lệnh SELECT Kẻ tấn công phải có khả năng hiểu và lợi dụng sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các yếu điểm. Ví dụ: Câu truy vấn : strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID => 399 or 1=1 Khoa CNTT Trường CĐ CNTT TP.HCM
  14. 2.1. SQL-INJECTION – Các dạng tấn công 3. Sử dụng câu lệnh UNION strSQL = "SELECT * FROM T_AUTHORS WHERE AUTHOR_NAME =' " & _ vAuthorName & " ' " Nhập vào : ' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' . Nếu hệ thống báo : invalid object name “OtherTable” thì có nghĩa câu truy vấn union đã được thực hiện. Việc còn lại là tìm table tương ứng để tấn công: ' UNION SELECT name FROM sysobjects WHERE xtype = 'U' => trả về tất cả các table 400 Khoa CNTT Trường CĐ CNTT TP.HCM
  15. 2.1. SQL-INJECTION – Các dạng tấn công Kết hợp với DROP, INSERT SELECT * FROM users WHERE username = „ '; DROP TABLE users; SELECT * FROM DATA WHERE „1' = „1‟; Hay: SELECT * FROM users WHERE username = „ „; Insert into users (id, username, password) values (NULL,„firewall‟,‟hacker‟) ; SELECT * FROM DATA WHERE „1' = „1‟; 401 Khoa CNTT Trường CĐ CNTT TP.HCM
  16. 2.1. SQL-INJECTION – Các dạng tấn công 4. Sử dụng Store Procedure Dạng tấn công sử dụng stored-procedures master xp_cmdshell to perform remote a„;exec master xp_cmdshell “đặt lệnh vào đây” – Ping a„;exec master xp_cmdshell “ping 10.10.1.2” Duyệt cấu trúc a„;exec master xp_cmdshell “dir c:\*.* /s > c:\directory.txt” Tạo file a„;exec master xp_cmdshell “echo tuonglua is here > c:\hacker.txt” – Tạo user a„;exec master xp_cmdshell “echo net user tuonglua 123 /add” 402 Khoa CNTT Trường CĐ CNTT TP.HCM
  17. 2.1. SQL-INJECTION – Cách Phòng Chống 1. Lập trình an toàn 2. Kiểm tra dữ liệu đầu vào - Lọc - ', '',",\',\\'/ - only(a-z, A-Z, 1,2,3 9,0) - key word: select, update, convert, like - ký tự được chuyển qua html, mssql, mysql 3. Manual error pages 403 Khoa CNTT Trường CĐ CNTT TP.HCM
  18. 2.1. SQL-INJECTION – Cách Phòng Chống 4. Cập nhật công nghệ: asp, aspx sql2000 > sql2005 Nâng cấp: IIS, PHP, Apache, Mysql, Mssql 5. Chặn hàm: exec, xp, sp file cmd.exe 6. Manual database: - default? - quyền sa (mssql) - phân quyền user cho database trên từng table 7. Tự tấn công 404 Khoa CNTT Trường CĐ CNTT TP.HCM
  19. 3. HTTP RESPONSE SPLITTING  Lỗi HTTP Response Splitting tấn công vào ứng dụng web và diễn ra khi nó không thể xử lý đúng các thông tin đầu vào người dùng nhập.  Kẻ tấn công từ xa có thể gửi một yêu cầu HTTP đặc biệt làm cho máy chủ web định dạng yêu cầu nhầm tưởng rằng nó chứa 2 yêu cầu HTTP chứ không phải một.  Chỉ yêu cầu thứ nhất được xử lý bởi người sử dụng. HTTP Response Splitting cho phép tiến hành một lượng lớn các cuộc tấn công kiểu như web cache poisioning, deface, “cross-user defacement”, chặn và ăn cắp thông tin người dùng và Cross site Scritpting. 405 Khoa CNTT Trường CĐ CNTT TP.HCM
  20. 4. DIRECTORY TRAVERSAL  Directory traversal hay còn được biết với một số tên khác như “dot-dot-slash”, “Path Traversal”,”directory clumbing” và “backtracking” là hình thức tấn công truy cập đến những file và thư mục mà được lưu bên ngoài thư mục webroot.  Hình thức tấn công này không cần sử dụng một công cụ nào mà chỉ đơn thuần thao tác các biến với / (dot-dot-slash) để truy cập đến file, thư mục, bao gồm cả source code, những file hệ thống,  Những hàm của những ngôn ngữ lập trình Web có khả năng gây lỗi Path Traversal như sau: • PHP: include(), include_once(), require(), require_once(), fopen(), readfile(), • JSP/Servlet: java.io.File(), java.io.FileReader(), • ASP: include file, include virtual, 406 Khoa CNTT Trường CĐ CNTT TP.HCM
  21. 5. CROSS SITE SCRIPTING  Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS để tránh nhầm lẫn với CSS- Cascading Style Sheet của HTML) là một kỹ thuật tấn công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác.  Nguyên nhân: cho phép người sử dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các đoạn mã nguy hiểm  Những đoạn mã nguy hiểm đựơc chèn vào hầu hết được viết bằng các Client-Site Script như JavaScript, 407 JScript, DHTML và cũng có thể là cả các thẻ HTML. Khoa CNTT Trường CĐ CNTT TP.HCM
  22. 6. FILE INCLUSION  Khi một trang web sử dụng các lệnh include, require, để gọi đến một file khác. Và sơ ý để người dùng có thể thay đổi file cần gọi đến. Như vậy website đó đang đứng trước nguy cơ bị tấn công File Inclusion .  Nguyên nhân: include, require, require _ once, include _ once cho phép file hiện tại gọi đến một file khác  Tùy vào mức độ bảo mật của Server, hacker có thể include đến file trên Server( local include) đó hoặc include đến file trên Server khác( remote include). Với từng mức độ hacker có thể có nhiều cách để up 408 shell . Khoa CNTT Trường CĐ CNTT TP.HCM
  23. 7. Các phần mềm tìm lỗ hổng  Acunetix Web Vulnerability Scanner  HP Scrawlr  Urlscan  Google 409 Khoa CNTT Trường CĐ CNTT TP.HCM
  24. 7. Acunetix Web Vulnerability Scanner 410 Khoa CNTT Trường CĐ CNTT TP.HCM
  25. 7. Acunetix Web Vulnerability Scanner • Acunetix WVS tự động kiểm tra ứng dụng web, tìm các lỗi XSS, SQL Injection, • Tường lửa, SSL và locked-down server đều không hiệu quả đối với việc hack ứng dụng web • Acunetix sẽ kiểm tra ứng dụng web, tìm lỗi code dẫn đến lỗi XSS • Acunetix cũng kiểm tra các lỗi khác trong những ứng dụng web phổ biến như joomla, PHPbb • Acunetix giúp xác định file có lỗi XSS, cho phép bạn sửa chúng trước hacker phát hiện ra. • Ngoài ra, một số tính năng mới kiểm tra mức độ bảo mật của website như tự động truy cập và quét SVN, cải tiến khả năng kiểm tra Cross-site scripting (XSS) và sửa các lỗi khác. 411 Khoa CNTT Trường CĐ CNTT TP.HCM
  26. 9.2.2. Lỗ hổng bảo mật Web Server  Permission  Authentication  Local attack  DoS, DDoS  Backdoor, Trojan, Virus  Human  412 Khoa CNTT Trường CĐ CNTT TP.HCM
  27. 1. Permission  Là dạng tấn công dựa vào việc phân quyền User trên webserver 413 Khoa CNTT Trường CĐ CNTT TP.HCM
  28. 2. Local Attack  Là dạng tấn công nội bộ từ bên trong của Webserver  Một Webserver sẽ chứa nhiều websites. Nếu website mục tiêu khó tấn công, hacker sẽ lợi dụng 1 website khác nằm cùng webserver có độ bảo mật thấp hơn để tấn công. 414 Khoa CNTT Trường CĐ CNTT TP.HCM
  29. Các bước thực hiện: 1. Xác định các website cần tấn công. 2. Xác định các website đặt cùng server với mục tiêu 3. Tìm cách khai thác một trong các website đặt chung server với mục tiêu. Khai thác được 1 trong số các website đó. Tìm cách upload webshell hoặc thực thi shell code. 4. Thành công có webshell, kiểm tra quyền của user hiện tại. 5. Nếu quyền hiện tại đủ để tấn công mục tiêu. Sang bước 6. Nếu quyền hiện tại không đủ tấn công, tìm cách leo thang đặc quyền. 7. Đã có đủ quyền, tiến hành đọc file config, tìm user/password. 8. Kết thúc. 4 1 5
  30. Phòng chống •safe mode: off -> on •Disable functions: system, exec, shell_exec, passthru, pcntl_exec, putenv, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, popen, pclose, set_time_limit, ini_alter, virtual, openlog, escapeshellcmd, escapeshellarg, dl, curl_exec, parse_ini_file, show_source Mod security •Zend Code :IonCube;phpcipher •Antivirus program .
  31. 3. Dos-Ddos – Tấn Công Từ Chối Dịch Vụ Tấn công từ chối dịch vụ là một loại hình tấn công nhằm ngăn chặn những người dùng hợp lệ được sử dụng một dịch vụ nào đó. 417 Khoa CNTT Trường CĐ CNTT TP.HCM
  32. 3. Dos-Ddos – Tấn Công Từ Chối Dịch Vụ  Có năm kiểu tấn công cơ bản sau đây:  Nhằm tiêu tốn tài nguyên tính toán như băng thông, dung lượng đĩa cứng hoặc thời gian xử lý  Phá vỡ các thông tin cấu hình như thông tin định tuyến  Phá vỡ các trạng thái thông tin như việc tự động reset lại các phiên TCP.  Phá vỡ các thành phần vật lý của mạng máy tính  Làm tắc nghẽn thông tin liên lạc có chủ đích giữa các người dùng và nạn nhân dẫn đến việc liên lạc giữa hai bên không được thông suốt. 418 Khoa CNTT Trường CĐ CNTT TP.HCM
  33. Biểu đồ tấn công từ chối dịch vụ
  34. Phòng chống . Phòng ngừa các điểm yếu của ứng dụng . Phòng ngừa việc tuyển mộ zombie . Ngăn ngừa kênh phát động tấn công sử dụng công cụ . Ngăn chặn tấn công trên băng thông . Ngăn chặn tấn công qua syn
  35. 3. VIRUS . Các dạng: . Phá hoại . Đánh cắp thông tin . Chiếm quyền điều khiển . Hỗ trợ cho hoạt động khác của Hacker . Đòi tiền chuộc (mới – năm 2015)
  36. . Virus CTB Locker (đòi tiền chuộc) . Gứi email có chứa file .exe đến người dùng . Âm thầm tiến hành mã hóa các file dữ liệu trong máy tính như: .doc, pdf, xls, jpg, zip bằng công nghệ “public-key”. . Gửi bảng thông báo, yêu cầu chuyển tiền để được giải mã
  37. 4. HACKER
  38. 5. Giải pháp cần thiết bảo mật Webserver Secure Web Server Sử dụng mod_security (HTTPS) Cài đặt firewall Web Backup (Sao lưu Server định kỳ) Cập nhật phiên bản mới Không cài đặt mặc định
  39. 9.2 QUẢN TRỊ WEB  Domain Name & Hosting  Triển khai Website 425 Written by: Phạm Đào Minh Vũ Khoa CNTT Trường CĐ CNTT TP.HCM
  40. 1. DomainName & Hosting 1.1 Khái niệm 1.2 Đăng ký và sử dụng 1.3 Quản trị 426 Trường CĐ CNTT TpHCM
  41. 1.1 Khái niệm • Domain Name (tên miền) là một tài nguyên trên Internet để chỉ định một địa chỉ của một máy tính hay một hệ thống máy tính nào đó trên Internet. (vd : www.abc.com) • Tên miền được dùng thay cho địa chỉ IP của máy tính. Mỗi tên miền là duy nhất và quản lý bởi tổ chức ICANN. • Tại Việt Nam, ta có thể mua các tên miền qua những nhà cung cấp đại diện. • Hosting (Web Hosting Service) là một dịch vụ Internet, cung cấp không gian lưu trữ trên một server và cho phép khách hàng lưu trữ website của họ để mọi người có thể truy xuất đến. • Khi đăng ký hosting, ta cũng phải cung cấp một Domain Name để server phân giải Domain Name với địa chỉ của website. 427 Trường CĐ CNTT TpHCM
  42. 1.2 Đăng ký và sử dụng • Để đăng ký Domain Name và Host, ta có thể liên lạc với bất kì nhà cung cấp nào • Các thông tin sau khi đăng ký : • Domain name • Địa chỉ trang quản trị host • Địa chỉ truy cập host bằng ftp • Tài toản quản trị host trên website • Tài khoản quản trị host trên ftp 428 Trường CĐ CNTT TpHCM
  43. 1.2 Đăng ký và sử dụng (tt) • Ví dụ : • Domain name : www.saoviet.edu.vn • Địa chỉ trang quản trị host : • Địa chỉ truy cập host bằng ftp : ftp.saoviet.edu.vn • Tài toản quản trị host trên website : • Username : itc-minhvu • Password : 123456 • Tài khoản quản trị host trên ftp • Username : saoviet • Password : 123456 429 Trường CĐ CNTT TpHCM
  44. 1.3 Quản trị • Trang quản trị host : (trang quản trị host của PA VietNam) 430 Trường CĐ CNTT TpHCM
  45. 1.3 Quản trị (tt) • Quản trị Host bằng FTP (với Total Commander) : Tạo kết nối với Server bằng FTP trong Total Commander 431 Trường CĐ CNTT TpHCM
  46. 1.3 Quản trị (tt) • Quản trị Host bằng FTP (với Total Commander) : Các thư mục trên Host Thư mục www chứa website (hoặc httpdoc) 432 Trường CĐ CNTT TpHCM
  47. 2. Triển khai Website • Gồm 3 bước: • Tạo CSDL cho Website. • Chỉnh sửa chuổi kết nối CSDL trong file Webconfig của Website • Upload Website lên Web Server 433 Trường CĐ CNTT TpHCM
  48. 2.1. Tạo CSDL • Tạo CSDL cho website: • Vào trang quản trị host, đến mục quản lý Database. • Chọn loại Database muốn tạo (MySQL, SQL Server ) • Nhập tên CSDL 434 Trường CĐ CNTT TpHCM
  49. • Tạo tài khoản cho CSDL 435 Trường CĐ CNTT TpHCM
  50. • Kết nối đến CSDL bằng SQL Server Management Studio 436 Trường CĐ CNTT TpHCM
  51. • Chạy các script để tạo Table, Store Procedure, Primary key, . 437 Trường CĐ CNTT TpHCM
  52. 2.2. Chỉnh sửa chuỗi kết nối • Upload website lên Host • Mở file web.config và chỉnh lại chuỗi kết nối 438 Trường CĐ CNTT TpHCM
  53. 2.3. Upload toàn bộ Website • Upload website lên Host • Mở Total Commander (hoặc một chương trình bất kì có thể kết nối đến host bằng ftp như FTP Cute, FTP Professional, ) • Mở kết đến Host, và mở thư mục www (hoặc httpdoc) • Copy toàn bộ website từ thư mục trên máy lên host. 439 Trường CĐ CNTT TpHCM
  54. 440 Trường CĐ CNTT TpHCM
  55. • Chạy Website 441 Trường CĐ CNTT TpHCM