Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 12 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
12
Dung lượng
318,89 KB
Nội dung
Ketnooi.com TẤN CÔNG VÀ PHÒNG CHỐNG WEBSITE Lớp MV0701 Sinh Viên Thực Hiện: Phan Tấn Vũ (0711091) TP.HCM, 11/2010 Tấn công Web SQL Injection NỘI DUNG ĐỀ TÀI Giới thiệu SQL Injection Các dạng công SQL INJECTION Phòng chống công SQL INJECTION Một số công cụ quét kiễm tra lỗi SQL Injection hiệu Tài liệu tham khảo Tấn công Web SQL Injection SQL INJECTION Giới thiệu : - Khi bạn triển khai ứng dụng Website mạng Internet, theo bạn việc bảo mật website cần phải có ? Chắc hẳn bạn nghĩ việc đảm bảo an toàn, bảo mật nhằm giảm thiểu tối đa khả bị công từ tin tặc đơn việc bạn tập trung vào việc chọn hệ điều hành,thiết bị phần cứng , hệ quản trị sở liệu, công cụ hỗ trợ ứng dụng webstie cho bạn … bạn mà có nhiều người nghĩ , mà quên thân ứng dụng tiềm ẩn lỗ hỏng bảo mật phần mềm tuyệt đối Và ngày hôm xin giới thiệu bạn , 50% hacker công website thông qua lỗi SQL Injection - Tại Việt Nam, quản trị website hay gọi Webmaster – họ lơ việc quét virus webserver , cập nhập vá lỗi cho phần mềm hệ thống hay ứng dụng , lý vừa qua có nhiều website Việt Nam bị công hầu hết lỗi SQL Injection - Vậy SQL Injection ? Định nghĩa: - Bạn đơn giản này: SQL Injection kỹ thuật cho phép kẻ công lợi dụng vào lổ hỏng việc kiểm tra liệu ứng dụng website thông báo lỗi hệ quản trị sở liệu để "tiêm vào" (inject) thi hành câu lệnh SQL bất hợp pháp (do người viết phần mềm ứng dụng họ không lường trước ) Hậu tai hại cho phép kẻ công thực thao tác xóa, hiệu chỉnh, … trực tiếp ứng dụng người quản trị, có toàn quyền sở liệu ứng dụng, chí server mà ứng dụng chạy Tấn công Web SQL Injection - Lỗi thường xảy ứng dụng website có liệu quản lí hệ quản trị sở liệu SQL Server, MySQL, Oracle, DB2, Sysbase Tấn công Web SQL Injection CÁC DẠNG TẤN CÔNG SQL INJECTION - Có dạng thông thường bao gồm: o Vượt qua kiểm tra lúc đăng nhập (Authorization Bypass) o Sử dụng câu lện SELECT o Sử dụng câu lệnh INSERT o Sử dụng Stored-Procedures Dạng 1: Tấn công vượt qua kiểm tra đăng nhập - Tấn công vượt qua kiểm tra đăng nhập – với hình thức công kẻ công dễ dàng thông qua lỗi nhờ vào việc sử dụng câu lệnh SQL thao tác trực tiếp sở liệu ứng dụng website Ví dụ: - Khi người dùng truy cập vào trang website bảo mật hệ thống có trang đăng nhập nhằm mục đích yêu cầu người dùng nhập thông tin Username Passowrd Sau người dùng nhập đầy đủ thông tin vào hệ thống kiễm tra tên Username Password, Username Password hợp lệ cho phép người dùng sử dụng người dùng bị từ chối Username Password không - Trong trường hợp này, người ta dùng hai trang, trang HTML để hiển thị form nhập liệu trang ASP dùng để xử lí thông tin nhập từ phía người dùng Trang login.htm Username: Tấn công Web SQL Injection Password: Trang execlogin.asp - Thoạt nhìn, đoạn mã trang execlogin.asp dường không chứa lỗ hổng an toàn Người dùng đăng nhập mà tên đăng nhập mật hợp lệ Tuy nhiên, đoạn mã thực không an toàn tiền đề cho lỗi SQL injection Đặc biệt, chỗ sơ hở nằm chỗ liệu nhập vào từ người dùng dùng để xây dựng trực tiếp câu lệnh SQL Chính điều cho phép kẻ công điều khiển câu truy vấn thực Nếu người dùng nhập chuỗi sau vào ô nhập liệu username/password trang login.htm là: ' OR ' ' = ' ' Lúc này, câu truy vấn gọi thực là: SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and USR_PASSWORD= '' OR ''='' Câu truy vấn hợp lệ trả tất ghi T_USERS đoạn mã xử lí người dùng đăng nhập bất hợp pháp người dùng đăng nhập hợp lệ Dạng 2: Tấn công sử dụng câu lệnh SELECT - Dạng công phức tạp Để thực kiểu công này, kẻ công phải có khả hiểu lợi dụng sơ hở thông báo lỗi từ hệ thống để dò tìm điểm yếu khởi đầu cho việc công Xét ví dụ thường gặp website tin tức Thông thường, có trang nhận ID tin cần hiển thị sau truy vấn nội dung tin có ID Tấn công Web SQL Injection Ví dụ: http://www.myhost.com/shownews.asp?ID=123 Mã nguồn cho chức thường viết đơn giản theo dạng - Trong tình thông thường, đoạn mã hiển thị nội dung tin có ID trùng với ID định không thấy có lỗi Tuy nhiên, giống ví dụ đăng nhập trước, đoạn mã để lộ sơ hở cho lỗi SQL injection khác Kẻ công thay ID hợp lệ cách gán ID cho giá trị khác, từ đó, khởi đầu cho công bất hợp pháp, ví dụ như: OR 1=1 (nghĩa là, http://www.myhost.com/shownews.asp?ID=0 or 1=1) Câu truy vấn SQL lúc trả tất article từ bảng liệu thực câu lệnh: SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1 - Một trường hợp khác, ví dụ trang tìm kiếm Trang cho phép người dùng nhập vào thông tin tìm kiếm Họ, Tên, … Đoạn mã thường gặp là: - Tương tự trên, tin tặc lợi dụng sơ hở câu truy vấn SQL để nhập vào trường tên tác giả chuỗi giá trị: Tấn công Web SQL Injection ' UNION SELECT ALL SELECT OtherField FROM OtherTable WHERE ' '=' - (*) Lúc này, câu truy vấn đầu không thành công, chương trình thực thêm lệnh sau từ khóa UNION Tất nhiên ví dụ nói trên, dường nguy hiểm, thử tưởng tượng kẻ công xóa toàn sở liệu cách chèn vào đoạn lệnh nguy hiểm lệnh DROP TABLE Ví dụ: - ' DROP TABLE T_AUTHORS Chắc bạn thắc mắc biết ứng dụng web bị lỗi dạng Rất đơn giản, nhập vào chuỗi (*) trên, hệ thống báo lỗi cú pháp dạng: Invalid object name OtherTable”; ta biết hệ thống thực câu SELECT sau từ khóa UNION, trả lỗi mà ta cố tình tạo câu lệnh SELECT - Các bạn có thắc mắc làm biết tên bảng liệu mà thực thao tác phá hoại ứng dụng web bị lỗi SQL injection Cũng đơn giản, SQL Server, có hai đối tượng sysobjects syscolumns cho phép liệt kê tất tên bảng cột có hệ thống Ta cần chỉnh lại câu lệnh SELECT, ví dụ như: ' UNION SELECT name FROM sysobjects WHERE xtype = 'U' liệt kê tên tất bảng liệu Dạng 3: Tấn công sử dụng câu lệnh INSERT - Thông thường ứng dụng web cho phép người dùng đăng kí tài khoản để tham gia Chức thiếu sau đăng kí thành công, người dùng xem hiệu chỉnh thông tin SQL injection dùng hệ thống không kiểm tra tính hợp lệ thông tin nhập vào Ví dụ: Một câu lệnh INSERT có cú pháp dạng: INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value Three') Nếu đoạn mã xây dựng câu lệnh SQL có dạng : Chắc chắn bị lỗi SQL injection, ta nhập vào trường thứ ví dụ như: ' + (SELECT TOP FieldName FROM TableName) + ' Lúc câu truy vấn là: INSERT INTO TableName VALUES(' ' + (SELECT TOP FieldName FROM TableName) + ' ', 'abc', 'def') Khi đó, lúc thực lệnh xem thông tin, Tấn công Web SQL Injection xem bạn yêu cầu thực thêm lệnh là: SELECT TOP FieldName FROM TableName Dạng 4: Dạng công sử dụng stored-procedures : - Tấn công stored-procedures gây thiệt hại lớn ứng dụng thực thi với quyền quản trị hệ thống 'sa' Webmaster toàn sở liệu Server bị công thông qua dạng Ví dụ: Nếu ta thay đoạn mã tiêm vào dạng: ' ; EXEC xp_cmdshell ‘cmd.exe dir C: ' – câu lệnh cho phép kẻ công biết tất thư mục có ổ đĩa C Webserver Và hậu kiểu công phụ thuộc vào câu lệnh đằng sau cmd.exe (Command Line) Vậy để không bị công SQL Injection??? PHÒNG CHỐNG TẤN CÔNG SQL INJECTION - Các biện pháp phòng chống công SQL Injection cho website phụ thuộc nhiều vào tảng (platform) xây dựng web Ví dụ, website bạn xây dựng platform (Joomla, Wordpress hay DotNetNuke …) sử dụng ngôn ngữ lập trình (ASP, PHP, Net hay Java …) Website chạy Web Server (IIS, Apache…) nào, hệ quản trị CSDL website (Oracle, MySQL…)? Dưới số quy tắc chung việc phòng chống SQL Injection: - Đối với website (dành cho lập trình viên): Cần kiểm tra tính đắn tất liệu đầu vào Dữ liệu đầu vào không tham số, mà bao gồm cookie, user agent, referer … Việc kiểm tra tính đắn liệu dựa phương pháp sau: - Kiểm tra dựa vào kiểu liệu (số, ngày tháng …) - Kiểm tra, giới hạn độ dài đầu vào - Loại bỏ ký tự đặc biệt như: ‘ % ” ? # @ & … - Loại bỏ từ đặc biệt: select, drop, delete, information_schemal, insert, union, xp_ … Tấn công Web SQL Injection Đối với web server (dành cho quản trị mạng): Hầu hết máy chủ web (web server) có module hỗ trợ việc phòng chống SQL Injection, ví dụ, Apache có modsecurity, IIS có URLScan Bạn cần bật tính cấu hình cho phù hợp Nếu website bạn dạng trang tin tức phù hợp để triển khai Trong số trường hợp khác, module chặn nhầm, dẫn tới website hoạt động không xác Đối với database server (dành cho quản trị mạng): Bạn cần thực việc cấu hình phân quyền chặt chẽ tài khoản Khi đó, dù tồn lỗi SQL Injection, thiệt hại hạn chế Ngoài ra, bạn cần loại bỏ bảng, thành phần tài khoản không cần thiết hệ thống Một số lời khuyên khác: - Bạn cần tắt tất thông báo lỗi không cần thiết web server Hacker lợi dụng thông báo lỗi để khai thác thông tin hệ thống, phục vụ cho công SQL Injection - Bạn cần bật chế độ ghi log đầy đủ để phục vụ việc điều tra phát công giải cố - Bạn cần thường xuyên theo dõi cập nhật phiên cho platform website (hệ điều hành, web server, database server…) 10 Tấn công Web SQL Injection MỘT SỐ CÔNG CỤ QUÉT VÀ KIỄM TRA LỖI SQL INJECTION HIỆU QUẢ - Acunetix Web Vulnerability Scanner:Một phiên thương mại chương trình tìm kiếm lỗ hổng bảo mật ứng dụng Web Acunetix WVS tự động kiểm tra ứng dụng Web để tìm kiếm lỗ hổng bảo mật SQL Injection, hay Cross-Site Scripting, tìm kiếm sách mật đăng nhập phương thức xác thực vào Web Site Với giao diện đồ họa thân thiện, Report đầy đủ cho phép bạn kiểm tra vấn đề máy chủ ứng dụng Web Để tìm hiểu rỏ bạn truy cập vào http://www.acunetix.com/vulnerability-scanner/ - N-Stealth: Là phiên thương mại, ứng dụng cho việc tìm kiếm lỗ hổng bảo mật máy chủ Web Phần mềm tự động update thường xuyên phần mềm miễn phí Whisker/libwhisker hay Nikto, nhiều lỗi Web không phát kịp thời nhanh chóng Phần mềm bao gồm 30.000 lỗ hổng Scan khai thác trực tiếp, với hàng tá cập nhật hàng ngày Dễ dàng triển khai kết hợp với Scan lỗ hổng bảo mật như: SQL Injection, Nessus, ISS Internet Scanner, Retina, SAINT Sara, bao gồm tính khác N-sealth phiên dành riêng cho Windows download Source Trang chủ: http://www.nstalker.com/products/fre…d-free-edition Kết luận: Hy vọng thông qua trình bày giúp ích cho việc quản trị bạn sau Qua thấy tầm quan trọng việc cập nhập , vá lỗi cho phần mềm ứng dụng Đồng thời biết cách công phòng chống lỗi SQL INJECTION Các bạn tham khảo thêm số tài liệu bên nên tìm hiểu thêm tài liệu bảo mật bảo mật Admin CP, Mã hóa password , Shell , Dos… 11 Tấn công Web SQL Injection TÀI LIỆU THAM KHẢO - Danh sách website bị lỗi SQL injection: http://www.security.com.vn/ - SQL Injection FAQ: http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=2&tabid=3 - Advanced SQL Injection : http://www.nextgenss.com/papers/advanced_sql_injection.pdf - Preventing SQL Injection: http://www.owasp.org/asac/input_validation/sql.shtml - SQL Injection Attacks - Are You Safe? http://www.sitepoint.com/article/794 12 [...]... chúng ta cũng biết được cách tấn công và phòng chống lỗi SQL INJECTION Các bạn có thể tham khảo thêm 1 số tài liệu ở bên dưới và nên tìm hiểu thêm tài liệu về bảo mật như bảo mật Admin CP, Mã hóa password , Shell , Dos… 11 Tấn công Web bằng SQL Injection TÀI LIỆU THAM KHẢO - Danh sách các website bị lỗi SQL injection: http://www.security.com.vn/ - SQL Injection FAQ: http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=2&tabid=3.. .Tấn công Web bằng SQL Injection MỘT SỐ CÔNG CỤ QUÉT VÀ KIỄM TRA LỖI SQL INJECTION HIỆU QUẢ - Acunetix Web Vulnerability Scanner:Một phiên bản thương mại của chương trình tìm kiếm các lỗ hổng bảo mật trên các ứng dụng Web Acunetix WVS tự động kiểm tra các ứng dụng Web để tìm kiếm các lỗ hổng bảo mật như SQL Injection, hay Cross-Site Scripting, tìm kiếm những chính sách đối... http://www.security.com.vn/ - SQL Injection FAQ: http://www.sqlsecurity.com/DesktopDefault.aspx?tabindex=2&tabid=3 - Advanced SQL Injection : http://www.nextgenss.com/papers/advanced _sql_ injection. pdf - Preventing SQL Injection: http://www.owasp.org/asac/input_validation /sql. shtml - SQL Injection Attacks - Are You Safe? http://www.sitepoint.com/article/794 12 ... đối với mật khẩu đăng nhập cũng như các phương thức xác thực vào Web Site Với giao diện đồ họa thân thiện, những Report đầy đủ cho phép bạn kiểm tra những vấn đề trên máy chủ và ứng dụng Web Để tìm hiểu rỏ hơn các bạn có thể truy cập vào http://www.acunetix.com/vulnerability-scanner/ - N-Stealth: Là một phiên bản thương mại, ứng dụng cho việc tìm kiếm các lỗ hổng bảo mật trên máy chủ Web Phần mềm tự động... Web cũng không phát hiện kịp thời và nhanh chóng Phần mềm bao gồm hơn 30.000 lỗ hổng có thể Scan và khai thác trực tiếp, cùng với hàng tá những cập nhật hàng ngày Dễ dàng triển khai kết hợp với những Scan lỗ hổng bảo mật như: SQL Injection, Nessus, ISS Internet Scanner, Retina, SAINT và Sara, bao gồm các tính năng khác N-sealth là phiên bản chỉ dành riêng cho Windows và không thể download Source Trang