tìm hiểu ứng dụng web, cách thức tấn công và bảo mật web
LỜI MỞ ĐẦU Cùng với phát triển công nghệ thông tin, công nghệ mạng máy tính phát triển mạng internet ngày phát triển đa dạng phong phú Các dịch vụ mạng thâm nhập vào hầu hết lĩnh vực đời sống xã hội Các thông tin Internet đa dạng nội dung hình thức, có nhiều thông tin cần bảo mật cao tính kinh tế, tính xác tính tin cậy Bên cạnh đó, hình thức phá hoại mạng trở nên tinh vi phức tạp Do hệ thống, nhiệm vụ bảo mật đặt cho người quản trị mạng quan trọng cần thiết Xuất phát từ thực tế đó, tìm hiểu cách công phổ biến phòng chống loại công Chính vậy, thông qua việc nghiên cứu số phương pháp công cách bảo mật lọa công này, mong muốn góp phần nhỏ vào việc nghiên cứu tìm hiểu vấn đề an ninh mạng giúp cho việc học tập nghiên cứu Lý chọn đề tài Trong năm gần đây, Việt Nam ngày phát triển mặt công nghệ thông tin Đặc biệt ứng dụng web, người nghe làm việc ứng dụng web Website trở nên phổ biến trở thành phần quan trọng người doanh nghiệp, công ty Bên cạnh lý an toàn bảo mật cho ứng dụng web vấn đề nan giải người.Vì tìm hiểu ứng dụng web cách thức công bảo mật web Mục tiêu Giúp hiểu ứng dụng website, mối đe dọa vấn đề an toàn thông tin làm việc ứng dụng web hàng ngày, hiểu rõ kỹ thuật công bảo mật web Phạm vi Tìm hiểu kỹ thuật công phổ biến SQL Injection, Denial Of Service, Local Attack,…Cách bảo mật, phòng thủ loại công phổ biến cách tổng quan MỤC LỤC CHƯƠNG TỔNG QUAN VỀ WEBSITE, CÁC DỊCH VỤ CỦA WEBSITE VÀ LỖI BẢO MẬT THÔNG DỤNG 1.1 Mô tả Website cách hoạt động .4 1.2 Các dịch vụ ứng dụng web CHƯƠNG CÁC LOẠI TẤN CÔNG VÀ BẢO MẬT ỨNG DỤNG WEB PHỔ BIẾN 2.1 LOCAL ATTACK 2.1.1 Tìm hiểu Local Attack 2.1.2 Cách công Local Attack 2.1.3 Cách bảo mật cho Local Attack 2.1.4 Các công cụ hỗ trợ .13 2.2 Tấn công từ chối dịch vụ - (Denial Of Service) 15 2.2.1 DOS(Denial Of Service) .15 2.2.2 Ddos(Distributed Denial of Service) 18 2.2.3 Tấn công từ chối dịch vụ phản xạ nhiều vùng DRDoS (Distributed Reflection Denial of Service) 30 2.3 SQL Injection 31 2.3.1 Tấn công SQL injection 31 2.3.2.Cách Phòng Tránh SQL Injection 39 2.4 Cross Site Scripting (XSS) 43 2.4.1 Tấn công XSS 43 2.4.2 Phòng chống 46 CHƯƠNG 47 DEMO, ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI .47 3.1 Demo 47 3.2 Kết luận 48 3.2.1 Các vấn đề đạt .48 3.2.2 Hạn chế 49 Trang 3.2.3 Hướng phát triển đề tài 49 NHẬN XÉT HƯỚNG DẪN 50 NHẬN XÉT PHẢN BIỆN 51 Trang CHƯƠNG TỔNG QUAN VỀ WEBSITE, CÁC DỊCH VỤ CỦA WEBSITE VÀ LỖI BẢO MẬT THÔNG DỤNG 1.1 Mô tả Website cách hoạt động Website “trang web” mạng Internet, nơi giới thiệu thông tin, hình ảnh doanh nghiệp sản phẩm, dịch vụ doanh nghiệp (hay giới thiệu thông tin gì) để khách hàng truy cập nơi đâu, lúc Website tập hợp nhiều trang [web page] Khi doanh nghiệp xây dựng website nghĩa xây dựng nhiều trang thông tin, catalog sản phẩm, dịch vụ Để tạo nên website cần phải có yếu tố bản: Cần phải có tên miền (domain) Nơi lưu trữ website (hosting) Nội dung trang thông tin [web page] Một số thuật ngữ bản: Website động (Dynamic website) website có sở liệu, cung cấp công cụ quản lý website (Admin Tool) Đặc điểm website động tính linh hoạt cập nhật thông tin thường xuyên, quản lý thành phần website dễ dàng Loại website thường viết ngôn ngữ lập trình PHP, Asp.net, JSP, Perl, , quản trị Cơ sở liệu SQL MySQL Website tĩnh lập trình ngôn ngữ HTML theo trang brochure, sở liệu công cụ quản lý thông tin website Thông thường website tĩnh thiết kế phần mềm FrontPage, Dreamwaver, Đặc điểm website tĩnh thay đổi nội dung, thay đổi nội dung thường liên quan đến thay đổi văn kèm thể nội dung Hiện nay, hầu hết doanh nghiệp sử dụng website động, hệ công nghệ website người biết đến web 2.0 - Tên miền (domain): Tên miền địa website, internet tồn địa (tức tồn tên miền) Có loại tên miền: - Tên miền Quốc tế: tên miền có dạng com; net; org; biz; name - Tên miền Việt Nam: tên miền có dạng vn; com.vn; net.vn; org.vn; gov.vn; - Lưu trữ website: Dữ liệu thông tin website phải lưu trữ máy tính (máy chủ - server) hoạt động kết nối với mạng Internet Một server lưu trữ nhiều website, server bị cố chẳng hạn tắt thời điểm Trang không truy cập website lưu trữ server thời điểm bị cố - Tùy theo nhu cầu lưu trữ thông tin mà doanh nghiệp thuê dung lượng thích hợp cho website [thuê dung lượng host] - Dung lượng host: Là nơi để lưu sở trữ liệu website (hình ảnh, thông tin …), đơn vị đo dung lượng thường Mb Gb - Băng thông hay dung lượng đường truyền truyền: Là tổng số Mb liệu tải lên máy chủ tải từ máy chủ (download, upload) nơi đặt website, đơn vị đo thông thường Mb/Tháng 1.2 Các dịch vụ ứng dụng web Với công nghệ nay, website không đơn giản trang tin cung cấp tin đơn giản Những ứng dụng viết web không gọi phần website nữa, chúng gọi phần mềm viết web Có nhiều phần mềm chạy web Google word (xử lý văn bản), Google spreadsheets (xử lý bảng tính), Email ,… Một số ưu điểm phần mềm hay ứng dụng chạy web: • Mọi người có trình duyệt bạn cần trình duyệt để chạy phần mềm • Phần mềm luôn cập nhật chúng chạy server • Luôn sẵn sàng 24/7 • Dễ dàng backup liệu thường xuyên • Có thể truy cập lúc, nơi, miễn bạn có mạng • Chi phí triển khai cực rẻ so với phần mềm chạy desktop Hãy hình dung bạn có phần mềm quản lý bán hàng hay quản lý công việc công ty Không phải lúc bạn công ty, với phần mềm viết web, bạn vào kiểm tra, điều hành đâu, chí bạn cần điện thoại chạy trình duyệt IPhone mà không cần đến máy tính Trang CHƯƠNG CÁC LOẠI TẤN CÔNG VÀ BẢO MẬT ỨNG DỤNG WEB PHỔ BIẾN 2.1 LOCAL ATTACK 2.1.1 Tìm hiểu Local Attack - Local attack kiểu hack phổ biến không khuyên dùng.Đối web server thông thường bạn đăng ký tài khoản server bạn cấp tài khoản server thư mục để quản lý site Ví dụ : tenserver/tentaikhoancuaban Và có tài khoản người dùng khác tương tự : tenserver/taikhoan1.Giả sử taikhoan1 bị hacker chiếm hacker dùng thủ thuật,các đoạn scrip,các đoạn mã lệnh để truy cập sang thư mục chứa site bạn tenserver/taikhoancuaban Và theo cách hacker công sang site người dùng khác lấy thông tin admin,database,các thông tin bảo mật khác chèn đoạn mã độc vào trang index site bạn Dạng công gọi Local Attack - Thông thường nhất, Local Attack sử dụng để đọc lấy thông tin config từ victim, sau dựa vào thông tin config mục đích hacker để phá hoại website 2.1.2 Cách công Local Attack - Để thực công Local Attack, tùy theo cách thức hacker mà có cách Local khác Thông thường hacker thường sử dụng đoạn lệnh để công vào database 2.1.2.1 Chuẩn bị - Trước tiên phải có PHP/ASP/CGI backdoor server Backdoor có nhiều loại khác phổ biến phpRemoteView (thường gọi remview) R57Shell, CGITelnet,C99,…Tiến hành upload công cụ lên, thường shell R57,C99,… - Upload công cụ lên host (Thường sử dụng shell R57,C99, mạnh dễ sử dụng) - Để có host có nhiều cách: Trang + Mua host(cách hacker sử dụng nhiều lý lý tốn tiền mà up shell lên bị admin server phát bị del host, Với cách sau Local xong nên xóa shell + Hack trang bị lỗi upload shell lên (thường hacker sử dụng SQL Injection để hack trang web chiếm tài khoản admin trang web upload shell lên)hoặc khai thác lỗi inclusion + Search backdoor (Vào google.com search keyword: , r57Shell ) Vói cách hầu hết shell hacker sử dụng chưa bị xóa, nên upload cho shell khác 2.1.2.2.Tiến hành Attack - Sau chuản bị xong, tức upload shell lên server Chúng ta bắt đầu tìm website server mà bạn up shell lên, thông thường hacker thường sử dụng Reverse Ip domain mà hacker upload shell để xem website server - Sau tìm danh sách website ,lần lượt check xem site bị lỗi local sang - Các lệnh thường dùng shell để Local Attack Xem tên domain host ls -la /etc/valiases cd /etc/vdomainaliases;ls –lia - Trường hợp đặc biệt xem user nằm host ta thêm && vào cd /etc/vdomainaliases && ls –lia - Muốn biết tên user dùng lệnh : cat /etc/passwd/ Hoặc less /etc/passwd + local sang victim, tức local sang site khác ví dụ shell : /home/abcd/public_html/ local sang sau : dir home/tên user cần local/public_html - Muốn biết tên user cần local sang sử dụng Reverse Ip để lấy danh sách user server.Muốn biết user có tồn hay không mở trình duyệt web lên đánh đoạn : Ip server/~ tên user (Ví dụ : 203.166.222.121/~doanchuyennganh) Nếu trình duyệt lên trang index website tức user tồn Trang +Xem nội dung file cat /home/tên user cần local/public_html/index.php Hoặc Chúng ta muốn xem config forum dùng ln -s /home/tên user cần local/public_html/forum/includes/config.php doanchuyennganh.txt Với doanchuyennganh.txt file tạo host để xem file người khác ! Nếu không sử dụng lệnh tức server disable chức Thêm số lệnh shell linux : - pwd: đưa hình thư mục hoạt động (ví dụ: /etc/ssh) - cd: thay đổi thư mục (ví dụ: cd – cấp thư mục tại; cd vidu – vào thư mục /vidu) - ls: đưa danh sách nội dung thư mục - mkdir: tạo thư mục (mkdir tên_thumuc) - touch: tạo file (touch ten_file) - rmdir: bỏ thư mục (rmdir ten_thumuc) - cp: copy file thư mục (cp file_nguồn file_đích) - mv: di chuyển file thư mục; dùng để đặt lại tên file thư mục (mv vị_trí_cũ vị_trí_mới mv tên_cũ tên_mới) - rm: loại bỏ file (rm tên_file) - Để tìm kiếm file, bạn dùng: - find : dùng cho tên file - grep : để tìm nội dung file Để xem file, bạn dùng: - more : hiển thị file theo trang - cat : hiển thị tất file - Nếu muốn kết nối tới host từ xa, sử dụng lệnh ssh Cú pháp ssh Quản lý hệ thống: - ps: hiển thị chương trình thời chạy (rất hữu ích: ps nhìn toàn tất chương trình) - Trong danh sách đưa thực lệnh ps, bạn thấy có số PID (Process identification - nhân dạng tiến trình) Con số hỏi đến muốn ngừng dịch vụ hay ứng dụng, dùng lệnh kill - top: hoạt động giống Task Manager Windows Nó đưa thông tin tất tài nguyên hệ thống, tiến trình chạy, tốc độ load trung bình… Lệnh top -d thiết lập khoảng thời gian làm tươi lại hệ thống Bạn đặt giá trị nào, từ (tức 10 mili giây) tới 100 (tức 100 giây) chí lớn - uptime: thể thời gian hệ thống tốc độ load trung bình khoảng thời gian đó, trước phút 15 phút Trang Thông thường tốc độ load trung bình tính toán theo phần trăm tài nguyên hệ thống (vi xử lý, RAM, ổ cứng vào/ra, tốc độ load mạng) dùng thời điểm Nếu tốc độ tính toán 0.37, tức có 37% tài nguyên sử dụng Giá trị lớn 2.35 nghĩa hệ thống phải đợi số liệu, tính toán nhanh 235% mà không gặp phải vấn đề Nhưng phân phối khác chút - free: hiển thị thông tin nhớ hệ thống - ifconfig : để xem thông tin chi tiết giao diện mạng; thông thường giao diện mạng ethernet có tên eth() Bạn cài đặt thiết lập mạng địa IP cách dùng lệnh (xem man ifconfig) Nếu có điều chưa xác, bạn stop start (tức ngừng khởi_động) giao diện cách dùng lệnh ifconfig up/down - passwd: cho phép bạn thay đổi mật (passwd người_dùng_sở_hữu_mật_khẩu tên người dùng khác bạn đăng nhập hệ thống với vai trò root) - useradd: cho phép bạn thêm người dùng (xem man useradd) Dù phân phối nào, bạn dùng phím TAB để tự động hoàn chỉnh lệnh tên file Điều hữu ích bạn quen với lệnh Bạn sử dụng phím lên, xuống để cuộn xem lệnh nhập Bạn dùng lệnh đa dòng dòng Ví dụ như, muốn tạo ba thư mục dòng, cú pháp là: mkdir thư_mục_1 ; mkdir thư_mục_2 ; mkdir thư_mục_3 Một điều thú vị khác lệnh dạng pipe Bạn xuất lệnh thông qua lệnh khác Ví dụ: man mkdir | tail đưa thông tin dòng cuối trang xem "thủ công" lệnh mkdir Nếu lúc yêu cầu phải đăng nhập với tài khoản gốc (tức "siêu" admin hệ thống), bạn đăng nhập tạm thời cách dùng lệnh su Tham số -1 (su-1) dùng để thay đổi thư mục chủ cho lệnh dùng Chú ý bạn nhắc mật Để thoát hay đóng : gõ exit logout 2.1.3 Cách bảo mật cho Local Attack Để hạn chế Local Attack, nên Chmod filemanager ,di chuyển file config.php sửa đổi file htaccess thường xuyên backup liệu -Chmod File Manager: Trang + CHMOD thư mục Public_html thành 710 thay 750 mặc định việc giúp bạn bảo vệ cấu trúc Website + CHMOD tiếp thư mục (diendan (http://diendan.doanchuyennganh.com), CHMOD thư mục diendan (http://diendan.doanchuyennganh.com) thành 701, CHMOD tiếp thư mục thư mục diendan (http://diendan.doanchuyennganh.com) thành 701 + CHMOD toàn file thành 404 Với CHMOD chắn run shell thông báo lỗi: Not Acceptable An appropriate representation of the requested resource /test.php could not be found on this server Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request Attacker không view - Ngoài , số site bạn truy cập subdomain mà không dạng doanchuyenganh.com/diendan (http://diendan.doanchuyennganh.com), có nhiều ý nghĩa, bảo mật khác + CHMOD thư mục 701 cố gắng đừng CHMOD 777, có số folder ko quan trọng, bạn CHMOD 755 để thị đầy đủ số nội dung Folder Chú ý này, số Server hỗ trợ CHMOD thư mục 101, Server bạn hỗ trợ sử dụng nó, biện pháp CHMOD an toàn, đến Owner ko thể xem cấu trúc Folder vào FTP Hiện có Server Eshockhost.net hỗ trợ + CHMOD File 604 đừng để 666 có việc cần 666 CHMOD tạm để sử dụng lúc đó, sau CHMOD lại Đối với Server hỗ trợ CHMOD file 404 CHMOD vậy, ví dụ Server Eshockhost.net - Thay đổi cấu trúc, tên file mặc định có chứa thông tin quan trọng Nếu thay đổi cấu trúc CSDL bạn làm -Chống local cách bật safe-mode (dành cho root): Như biết, webshell - PHP, PHP Configuration có option để hạn chế tính (đặc biệt r57 - tự động by pass) nên công việc root account phải cập nhật phiên PHP config lại php.ini : [i]PHP safe mode phương pháp để giải vấn đề bảo mật cho nơi server chia sẻ hosting cho nhiều accounts (shared-server) Nó thiết kế cách sai lạc cấp PHP Hiện nay, nhiều người chọn phương pháp bật safemode để bảo mật, đặc biệt ISP - Các hướng dẫn cấu hình Security and Safe Mode : Trang 10 Thử dùng dấu nháy đôi (") dấu nháy đơn (') không làm việc Dưới số extended stored procedure mà hacker thường hay sử dụng để thực thi câu lệnh xem nội dung thông tin máy nạn nhân: Xp_availablemedia: Hiển thị ổ đĩa hành máy Xp_dirtree: Hiển thị tất thư mục kể thư mục Xp_loginconfig: Lấy thông tin chế độ bảo mật server Xp_makecab: Cho phép người sử dụng tạo tập tin lưu trữ Server (hay tập tin mà server truy xuất Xp_ntsec_enumdomain: liệt kê domain mà server truy vấn Xp_terminate_process: chấm dứt tiến trình với tham số PID iiiii Tấn công SQL Injection nâng cao • Chuỗi kí tự dấu nháy đơn: - Những nhà lập trình bảo vệ ứng dụng họ cách loại bỏ tất dấu nháy, thông thường loại bỏ dấu nháy cách thay dấu nháy thành dấu nháy Ví dụ a.1 : function escape( input ) input = replace(input, "'", "''") escape = input Rõ ràng là, ngăn chặn tất kiểu công Tuy nhiên muốn end function tạo chuỗi giá trị mà không dùng dấu nháy, dùng hàm “char()” ví dụ sau: Ví dụ a.2: INSERT into User VALUES(666, char(0x63) +char(0x68) +char(0x72) char(0x69) +char(0x73) ,char(0x63) +char(0x68) Ví dụ a.2 câu truy vấn dấu nháy đơn có +char(0x72) +char(0x73),0xffff) thể insert chuỗi vào+char(0x69) bảng, tương đương với: INSERT into User VALUES( 666,’chris’,’chris’,255) Hacker chọn username , password sốđể tránh dấu nháy ví dụ sau: Ví dụ a.3: INSERT into User VALUES( 667,123,123,0xffff) Trang 37 SQL server tự động chuyển từ số sang chuỗi • Tấn công tầng: - Mặc dù ứng dụng thay dấu nháy đơn khả bị chèn đoạn mã SQL Ví dụ b.1: Để đăng kí account ứng dụng, nhập username sau: Username: admin'— Password: passofadmin - Ứng dụng thay dấu nháy, kết câu insert sau: INSERT into User VALUES(123, 'admin'' ', 'password',0xffff) (nhưng sở liệu lưu “admin’ “) - Giả sử ứng dụng cho phép người dùng thay đổi mật Các đoạn mã ASP thiết kế đảm bảo người sử dụng phải nhập mật cũ trước nhập mật Đoạn mã sau: username = escape( Request.form("username") ); oldpassword = escape( Request.form("oldpassword") ); newpassword = escape( Request.form("newpassword") ); var rso = Server.CreateObject("ADODB.Recordset"); var sql = "select * from users where username = '" + username + "' and password = '" + oldpassword + "'"; rso.open( sql, cn ); if (rso.EOF) - Câu truy vấn thiết lập mật sau: sql {… = "update users set password = '" + newpassword + "' where username= '" + rso("username") + "'" rso(“username”) giá trị username có câu truy vấn login admin’-Câu truy vấn lúc sau: update users set password = 'password' where username = 'admin' ' - Nhờ hacker thay đổi mật admin giá trị Đây trường hợp tồn hầu hết ứng dụng lớn ngày có sử dụng chế loại bỏ liệu Giải pháp tốt loại bỏ giá trị lỗi chỉnh sửa lại Nhưng có vấn đề có số ô nhập liệu (như ô nhập tên) cho phép kí tự Ví dụ: O’Brien - Cách tốt để giải vấn đề không cho phép nhập dấu nháy đơn Nếu điều thựchiện , loại bỏ thay Trong trường hợp này, cách tốt đảm bảo tất liệu đưa vào câu truy vấn SQL (kể giá trị sở liệu) phải kiểm soát cách chặt chẽ Trang 38 Một số ứng dụng phòng chống việc thêm câu truy vấn từ người dùng cách giới hạn chiều dài ô nhập Tuy nhiên, với giới hạn số kiểu công thực có chỗ hở để hacker lợi dụng Ví dụ b.2: Giả sử username password bị giớihạn tối đa 16 kí tự.Nhập: Username: aaaaaaaaaaaaaaa’ Password :‘; shutdown-Ứng dụng thay dấu nháy đơn hai dấu nháy đơn chiều dài chuỗi bị giới hạn 16 kí tự nên dấu nháy đơn vừa thêm bị xoá Câu lệnh SQL sau: Select * from users where username=’aaaaaaaaaaaaaaa’’ and password=’’’; shutdown—‘ kết username câu lệnh có giá trị là: aaaaaaaaaaaaaaa’ and password=’ iiiii.3 Tránh kiểm soát: - SQL server có giao thức kiểm soát chặt chẽ họ hàm sp_traceXXX, cho phép ghi nhân nhiều kiện xảy sở liệu Đặc biệt kiện T-SQL, ghi nhận lại tất câu lệnh SQL thực Server Nếu chế độ kiểm soát bật tất câu truy vấn SQL hacker bị ghi nhận nhờ mà người quản trị kiểm soát xảy nhanh chóng tìm giải pháp Nhưng có cách để chống lại điều này, cách thêm dòng “sp_password” vào câu lệnh T-SQL, gặp chuỗi việc kiểm tra ghi nhậnnhư sau: ‘sp_password’ was found in the text of this event The text has benn replaced with this comment for security reasons “sp_password” xuất phần thích Vì để dấu tất câu truy vấn công, cần đơn giản thêm sp_password vào sau ‘ ’ sau: 2.3.2.Cách Phòng Tránh SQL Injection - Như vậy, thấy lỗi SQL injection khai thác bất cẩn lập trình viên phát triển ứng dụng web xử lí liệu nhập vào để xây dựng câu lệnh SQL Tác hại từ lỗi SQL injection tùy thuộc vào môi trường cách cấu hình hệ thống Nếu ứng dụng sử dụng quyền dbo (quyền người sở hữu sở liệu owner) thao tác liệu, xóa toàn bảng liệu, tạo bảng liệu mới, … Nếu ứng dụng sử dụng quyền sa (quyền quản trị hệ thống), điều Trang 39 khiển toàn hệ quản trị sở liệu với quyền hạn rộng lớn tạo tài khoản người dùng bất hợp pháp để điều khiển hệ thống bạn • Trong hầu hết trình duyệt, kí tự nên mã hoá địa URL trước sử dụng • Việc công theo SQL Injection dựa vào câu thông báo lỗi việc phòng chống hay không cho hiển thị thông điệp lỗi cho người dùng cách thay lỗi thông báo trang người phát triển thiết kế lỗi xảy ứng dụng • Kiểm tra kĩ giá trị nhập vào người dùng, thay kí tự ‘ ; v v Hãy loại bỏ kí tự meta “',",/,\,;“ kí tự extend NULL, CR, LF, string nhận từ: o liệu nhập người dùng đệ trình o tham số từ URL o giá trị từ cookie • Đối với giá trị numeric, chuyển sang integer trước thực câu truy vấnSQL, dùng ISNUMERIC để chắn số integer • Dùng thuật toán để mã hoá liệu i Kiểm tra liệu - Kiểm tra tính đắn liệu vấn đề phức tạp thường chưa quan tâm mức ứng dụng Khuynh hướng việc kiểm tra tính đắn liệu cần thêm số chức vào ứng dụng, mà phải kiểm tra cách tổng quát nhanh chóng để đạt mục đích - Những tóm tắt sau bàn việc kiểm tra tính đắn liệu, với ví dụ mẫu để minh hoạ cho vấn đề Có ba giải pháp tiếp cận vấn đề này: 1) Cố gắng kiểm tra chỉnh sửa để làm cho liệu hợp lệ 2) Loại bỏ liệu bất hợp lệ 3) Chỉ chấp nhận liệu hợp lệ • Giải pháp 1: khó thực - Thứ nhất, người lập trình không cần thiết phải biết tất liệu bất hợp lệ, dạng liệu bất hợplệ đa dạng - Thứ hai, vấn đề trường hợp bị công tầng (second-oder SQL injection) việc lấy liệu từ hệ thống • Giải pháp 2: bị vô hiệu trường hợp giải pháp : - Dữ liệu bất hợp lệ luôn thay đổi với việc phát triển kiểu công • Giải pháp 3: tốt hai giải pháp kia, gặp số hạn chế cài đặt - Cách bảo mật tốt kết hợp giải pháp Một ví dụ cho cần thiết kết hợp 2-3 dấu nối họ tên “Quentin Bassington-Bassington” phải cho phép Trang 40 dấu gạch ngang định nghĩa liệu hợp lệ, chuỗi kí tự “ “ chuỗi kí tự đặc biệt SQL server - Ví dụ có lọc để : + Lọc bỏ liệu bất hợp lệ ‘ ‘,’select’ ‘union’ + Một hàm kiểm soát để loại bỏ dấu nháy đơn đối phó sau uni’on se’lect @@version-‘- Một số cách cài đặt chức kiểm tra liệu • Cách 1: Từ chối liệu bất hợp lệ function validate_string( input ) known_bad = array("select","insert", "update", "delete", "drop"," ", "'" ) validate_string = true for i = lbound( known_bad ) to ubound( known_bad ) if ( instr( 1, input, known_bad(i), vbtextcompare ) ) then validate_string = false exit function • Cách 2: Thay dấu nháy đơn: end if functionnext escape( input ) input = replace(input, "'", "''") end function escape = input • Cách 3: Chỉ chấp nhận liệu hợp lệ end function function validatepassword( input ) good_password_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123 456789" validatepassword = true for i = to len( input ) c = mid( input, i, ) if ( InStr( good_password_chars, c ) = ) then validatepassword = false exit function end if next Trang 41 ii Khoá chặt SQL Server (SQL Server Lockdown) Đây danh sách công việc cần làm để bảo vệ SQL server: • Xác định phương pháp kết nối đến server: o Dùng tiện ích Network Utility để kiểm tra có thư viện mạng dùng hoat động • Kiểm tra tất tài khoản có SQL Server o Chỉ tạo tài khoản có quyền thấp cho ứng dụng o Loại bỏ tài khoản không cần thiết o Đảm bảo tất tài khoản có mật hợp lệ, … • Kiểm tra đối tượng tồn o Nhiều extended stored procedure xoá bỏ cách an toàn Nếu điều thực hiện, nên xem xét việc loại bỏ tập tin dll chứa mã extended stored procedure o Xoá bỏ tất sở liệu mẫu “northwind” “pubs” o Xóa stored procedure không dùng như: master xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask • Kiểm tra tài khoản truy xuất đến đối tượng o Đối với tài khoản ứng dụng dùng để truy xuất sở liệu cấp quyền hạn cần thiết tối thiểu để truy xuất đến đối tượng cần dùng Kiểm tra lớp sửa chữa server o Có số cách công “buffer overflow”, “format string” thường ý đến lớp bảo vệ • Kiểm tra phiên làm việc server • Thay đổi "Startup chạy SQL Server" mức người dùng quyền hạn thấp SQL Server Security - Nhận xét: + Qua phần tìm hiểu SQL Injection,càng thấy việc kiểm tra liệu trước xử lý cần thiết + Ứng dụng việckiểm tra tính đắn liệu, cần mã hóa liệu bên sở liệu không cho xuất trang Web lỗi, báo nội dung lỗi cú pháp SQL để hacker thu thập thông tin sở liệu Trang 42 - Song song công việc người quản trị mạng iii Thiết lập cấu hình an toàn cho hệ quản trị sở liệu - Cần có chế kiểm soát chặt chẽ giới hạn quyền xử lí liệu đến tài khoản người dùng mà ứng dụng web sử dụng Các ứng dụng thông thường nên tránh dùng đến quyền dbo hay sa Quyền bị hạn chế, thiệt hại Ngoài để tránh nguy từ SQL Injection attack, nên ý loại bỏ thông tin kĩ thuật chứa thông điệp chuyển xuống cho người dùng ứng dụng có lỗi Các thông báo lỗi thông thường tiết lộ chi tiết kĩ thuật cho phép kẻ công biết điểm yếu hệ thống 2.4 Cross Site Scripting (XSS) 2.4.1 Tấn công XSS - Cross-Site Scripting (XSS) kĩ thuật công phổ biến hiên nay, đồng thời vấn đề bảo mật quan trọng nhà phát triển web người sử dụng web Bất kì website cho phép người sử dụng đăng thông tin mà kiểm tra chặt chẽ đoạn mã nguy hiểm tiềm ẩn lỗi XSS - Cross-Site Scripting hay gọi tắt XSS (thay gọi tắt CSS để tránh nhầm lẫn với CSS-Cascading Style Sheet HTML) kĩ thuật công cách chèn vào website động (ASP, PHP, CGI, JSP ) thẻ HTML hay đoạn mã script nguy hiểm gây nguy hại cho người sử dụng khác Trong đó, đoạn mã nguy hiểm đựơc chèn vào hầu hết viết Client-Site Script JavaScript, JScript, DHTML thẻ HTML.Kĩ thuật công XSS nhanh chóng trở thành lỗi phổ biến Web Applications mối đe doạ chúng người sử dụng ngày lớn Người chiến thắng thi eWeek OpenHack 2002 người tìm XSS Phải mối nguy hiểm từ XSS ngày người ý 2.4.1.1 Hoạt động XSS: - Về XSS SQL Injection hay Source Injection, yêu cầu (request) gửi từ máy client tới server nhằm chèn vào thông tin vượt tầm kiểm soát server Nó request gửi từ form liệu URL Trang 43 http://www.example.com/search.cgi?query=alert('XSS was found !'); - Và trình duyệt bạn lên thông báo "XSS was found !" Các đoạn mã thẻ script không bị giới hạn chúng hoàn toàn thay file nguồn server khác thông qua thuộc tính src thẻ script Cũng lẽ mà chưa thể lường hết độ nguy hiểm lỗi XSS - Nhưng kĩ thuật công khác làm thay đổi liệu nguồn web server (mã nguồn, cấu trúc, sở liệu) XSS gây tổn hại website phía client mà nạn nhân trực tiếp người khách duyệt site Tất nhiên hacker sử dụng kĩ thuật đề deface website công vào bề mặt website Thật vậy, XSS Client-Side Script, đoạn mã chạy trình duyệt phía client XSS không làm ảnh hưởng đến hệ thống website nằm server Mục tiêu công XSS không khác người sử dụng khác website, họ vô tình vào trang có chứa đoạn mã nguy hiểm hacker để lại họ bị chuyển tới website khác, đặt lại homepage, hay nặng mật khẩu, cookie chí máy tính bạn bị cài loại virus, backdoor, worm 2.4.1.2 Cách công i Scan lỗ hỗng XSS cua ứng dụng web - Cách 1: Sử dụng nhiều chương trình dò quét lỗi ứng dụng web, ví dụ chương trình Web Vulnerability Scanner để dò quét lỗi XSS - Cách 2: Thực bước: • Bước 1: Mở website cần kiểm tra • Bước 2: Xác định chỗ (phần) cần kiểm tra XSS Site có phần: Search, error message, web form Chủ yếu lỗi XSS nằm phần này, nói chung XSS xảy chỗ mà người dùng nhập liệu vào sau nhận Ví dụ nhập vào chuỗi ‘XSS’ • Bước 3: Xác minh khả site có bị lỗi XSS hay không cách xem thông tin trả Ví dụ thấy này: ‘Không tìm thấy XSS…’ , ‘Tài khoản XSS không xác’, ‘Đăng nhập với XSS không thành công’… khả chỗ bị dính XSS cao • Bước 4: Khi xác định chỗ có khả bị dính lỗi XSS chèn đoạn code vào để thử tiếp, ví dụ sau: Trang 44 Chèn đoạn code này: < script>alert('XSS')< /script> vào ô bị lỗi nhấn nút Login, nhận popup có chữ ‘XSS’ 100% bị dính XSS Nhưng xin ý , có trường hợp website bị dính XSS không xuất popup buộc lòng bạn phải VIEW SOURCES (mổ bụng) để xem Khi view sources nhớ kiếm dòng < script>alert('XSS)< /script> , có hết chạy , XSS Gọi http://doannguyennganh.com/index.php site bị dính lỗi XSS ta tìm nơi bị lỗi : http://doannguyennganh.com/index.php?page==5 nên dễ dàng khai thác lỗi thông qua information_shema.tables mà không cần phải đoán table Hình 13 Thông tin table lấy - Bỏ qua table không liên quan ta lấy table sau: khuyenmai, lienhe, loaispcon, online, sanpham, tbl_gioithieu, tbl_lienhe, tbl_lienket, tbl_tintuc, thanhtoan, tintuc, user - Sau tiến hành lấy thông tin column data kết hình 14 Trang 47 Hình 14 Dữ liệu ta khai thác dạng mã hóa - Theo hình 14 liệu lấy dạng mã hóa Việc khai thác SQL Injection đến bước tìm đường dẫn đăng nhập quản trị mật nằm dạng mã hóa ta cần phải tiến hành giải mã 3.2 Kết luận 3.2.1 Các vấn đề đạt - Theo yêu cầu đặt ban đầu thời điểm tại, đồ án đạt nội dung sau: • Tìm hiểu kĩ thuật công ứng dụng Web bao gồm kĩ thuật o Chèn mã lệnh thực thi trình khách Cross-site Scripting o Chèn câu truy vấn SQL Tấn công SQL Injection nâng cao o Tấn công Local Acttack o Từ chối dịch vụ • Các biện pháp bảo mật từ kết hợp nhà quản trị mạng, nhà thiết kế ứng dụng Web người dùng o Kiểm tra trang Web có khả bị công kĩ thuật chèn câu lệnh SQL, thay đổi tham số hay không o Có thể phòng chống lỗi công thông dụng nay, vấn đề tìm hiểu Trang 48 3.2.2 Hạn chế Trong trình làm đồ án có nhiều tài liệu tìm kiếm có mục đích giống song lại có phương pháp khác hoàn toàn.Tôi cố gắng tìm hiểu thêm chúng không khỏi có nhiều sai sót 3.2.3 Hướng phát triển đề tài Trong phạm vi đồ án chuyên ngành, đạt yêu cầu đặt Bản thân cá nhân em xin đề xuất hướng phát triển đồ án mở rộng cố gắng phát triển thêm nội dung sau: • Tìm hiểu thêm kĩ thuật công để đưa phương pháp bảo mật ứng dụng Web mức độ sâu • Tìm hiểu vấn đề bảo mật sâu hơn, không dừng mức độ ứng dụng Web mà phát triển vần đề bảo mật hệ thống mạng dịch vụ • Khai triển chương trình phát lỗ hổng tốt hơn, nhiều phương diện kĩ thuật TÀI LIỆU THAM KHẢO A Tài liệu Tiếng Việt: [1] Tấn công từ chối dịch vụ Dos,Ddos,DRDos Tác giả Ng.Ng.Thanh Nghị-HVA [2] Bài giảng An Ninh Mạng.Tác giả GV.Nguyễn Anh Tuấn-Trung tâm TH-NN Trí Đức [3] Lỗi bảo mật ứng dụng web cách khắc phục.Tác giả Đặng Hải Sơn-Trung tâm ứng cứu khẩn cấp máy tính Việt Nam [4] Tấn công kiểu SQL Injection-Tác hại phòng tránh Tác giả Lê Đình Duy-Khoa CNTT-Trường ĐH Khoa Học Tự Nhiên TP.HCM Trang 49 [5] Web Application Attack & Defense Tác giả Võ Đỗ Thắng-Trung tâm An ninh mạng Athena [6] XSS Tác giả Mask-NBTA B Tài liệu Tiếng Anh: [7] SQL Injection-Are you web Applications vulnerable Author Kevin Spett [8] An Introduction to SQL Injection Attacks For Oracle Developers.Author Stephen Kost [9] How to Attack and fix Local File Disclosure Author Sangteamtham C Tài liệu internet: [10]http://thuvienkhoahoc.com/wiki/K%C4%A9_thu%E1%BA%ADt_t%E1%BA %A5n_c%C3%B4ng_CROSS-SITE_SCRIPTING » [11]http://vi.wikipedia.org/w/index.php?title=Th%E1%BB%83_lo%E1%BA%A1i:T %E1%BA%A5n_c%C3%B4ng_t%E1%BB%AB_ch%E1%BB%91i_d%E1%BB %8Bch_v%E1%BB%A5&action=edit&redlink=1 [12]http://www.hvaonline.net/hvaonline/posts/list/6720.hva;jsessionid=38F900726E07 641F712734A3B2A6F2EC [13]http://www.ddcntt.vn/forum/showthread.php?t=14 [14]http://ttgtc.com/forum/showthread.php?1385-T%C3%ACm-hi%E1%BB%83u-v %E1%BB%81-t%E1%BA%A5n-c%C3%B4ng-t%E1%BB%AB-ch%E1%BB%91i-d %E1%BB%8Bch-v%E1%BB%A5-DoS&s=c580b874a6ea05d220258132c9cef9e3 NHẬN XÉT HƯỚNG DẪN Trang 50 NHẬN XÉT PHẢN BIỆN Trang 51 [...]... là gì? - Khi triển khai các ứng dụng web trên Internet, nhiều người vẫn nghĩ rằng việc đảm bảo an toàn, bảo mật nhằm giảm thiểu tối đa khả năng bị tấn công từ các tin tặc chỉ đơn thuần tập trung vào các vấn đề như chọn hệ điều hành, hệ quản trị cơ sở dữ liệu, webserver sẽ chạy ứng dụng, mà quên mất ằng ngay cả bản thân ứng dụng chạy trên đó cũng tiềm ẩn một lỗ hổng bảo mật rất lớn Một trong số các... hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS và đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người dùng đăng nhập hợp lệ ii Dạng tấn công sử dụng câu lệnh SELECT - Dạng tấn công này phức tạp hơn Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công. .. Service): đây là cách thức tấn công rất nguy hiểm Hacker xâm nhập vào các hệ thống máy tính, cài đặt các chương trình điều kiển từ xa và sẽ kích hoạt đồng thời các chương trình này vào cùng một thời điểm để đồng loạt tấn công vào một mục tiêu Cách thức này có thể huy động tới hàng trăm thậm chí hàng ngàn máy tính cùng tham gia tấn công một lúc (tùy vào sự chuẩn bị trước đó của hacher) và có thể ngốn... ngốn hết băng thông của mục tiêu trong nháy mắt -Sử dụng các nguồn tài nguyên khác: Kẻ tấn công lợi dụng các nguồn tài nguyên mà nạn nhân cần đến để tấn công Những kẻ tấn công có thể thay đổi dữ liệu và tự sao chép dữ liệu mà nạn nhân cần lên nhiều lần làm CPU bị quá tải và các quá trình xử lý dữ liệu bị đình trệ - Tấn công kiểu Smurf Attack: kiểu tấn công này cần một hệ thống rất quan trọng, đó là mạng... liệu nhập trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm vào" (inject) và thi hành các câu lệnh SQL bất hợp pháp (không được người phát triển ứng dụng lường trước) Hậu quả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy... hoạt động điều chỉnh attacknetword chuyển hướng tấn công về phía mục tiêu - Yếu tố thời điểm sẽ quyết định mức độ thiệt hại và tốc độ đáp ứng của mục tiêu đối với cuộc tấn công iii Phát động tấn công và xóa dấu vết: - Đúng thời điểm đã định, hacker phát động tấn công từ máy của mình, lệnh tấn công này có thể đi qua nhiều cấp mói đến host thực sự tấn công Toàn bộ attack-network (có thể lên đến hàng ngàn... trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web Xét một ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ... các công cụ tìm lỗi.Hoặc các công cụ tìm kiếm như Google .Và dùng các Dork tìm kiếm như : inurl : product.php?id= Hình 11 Một tools tìm site lỗi Online Trang 32 - Để biết website nào dính lỗi SQL Injection ta thêm dấu “ ’ ” vào sau thanh địa chỉ Ví dụ : http://www.doanchuyenganh.com/product.php?id=123’ Hình 12 Một site bị lỗi SQL Injection i Dạng tấn công vượt qua kiểm tra đăng nhập - Với dạng tấn công. .. Các cách thức tấn công: + Phá hoại dựa trên tính giới hạn hoặc không thể phục hồi của tài nguyên mạng - Thông qua kết nối: Tấn công kiểu SYN flood: FPRIVATE "TYPE=PICT;ALT=" Lợi dụng các thức hoạt động của kết nối TCP/IP, hacker bắt đầu quá trình thiết lập một kết nối TPC/IP với mục tiêu muốn tấn công nhưng sẽ phá vỡ kết nối ngay sau khi quá trình SYN và SYN ACK hoàn tất, khiến cho mục tiêu rơi vào... Of Service (DDoS) là kỹ thuật tấn công làm các ISP lo âu, giới hacker chính thống thì không công nhận DdoS là kỹ thuật tấn công chính thống Thế nhưng Black hat đang có rất nhiều ưu thế khi triển khai tấn công bằng kỹ thuật DdoS Việc phòng ngừa và ngăn chặn DdoS vẫn còn đang thực hiện ở mức độ khắc phục hậu quả và truy tìm thủ phạm 2.2.2.1 Các giai đoạn của một cuộc tấn công kiểu DdoS: Bao gồm 3 giai ... dung sau: • Tìm hiểu thêm kĩ thuật công để đưa phương pháp bảo mật ứng dụng Web mức độ sâu • Tìm hiểu vấn đề bảo mật sâu hơn, không dừng mức độ ứng dụng Web mà phát triển vần đề bảo mật hệ thống... CÁC LOẠI TẤN CÔNG VÀ BẢO MẬT ỨNG DỤNG WEB PHỔ BIẾN 2.1 LOCAL ATTACK 2.1.1 Tìm hiểu Local Attack 2.1.2 Cách công Local Attack 2.1.3 Cách bảo mật cho Local... 2.4.1.2 Cách công i Scan lỗ hỗng XSS cua ứng dụng web - Cách 1: Sử dụng nhiều chương trình dò quét lỗi ứng dụng web, ví dụ chương trình Web Vulnerability Scanner để dò quét lỗi XSS - Cách 2: