1. Trang chủ
  2. » Công Nghệ Thông Tin

Tấn công SQL Injection

36 61 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Cấu trúc

  • LỜI MỞ ĐẦU

  • CHƯƠNG 1. TỔNG QUAN VỀ BẢO MẬT VÀ ỨNG DỤNG WEB

    • 1.1 TỔNG QUAN VỀ WEB

      • 1.1.1 Khái niệm về ứng dụng web (website widget hay web application)

    • 1.2 Cấu trúc, chức năng, giao diện & nguyên tắc hoạt động cơ bản của ứng dụng web

      • 1.2.1 Cấu trúc cơ bản của một ứng dụng

      • 1.2.2 Giao diện của một ứng dụng web

      • 1.2.3 Chức năng cơ bản của các ứng dụng web

      • 1.2.4 Nguyên tắc hoạt động của một ứng dụng web

      • 1.2.5 Vấn đề bảo mật ứng dụng web

    • 1.3 Các khái niệm thuật ngữ liên quan

      • 1.3.1 Các khái niệm chung về ứng dụng web

      • 1.3.2 Thuật ngữ , khái niệm về các công cụ liên quan đến ứng dụng web

    • 1.4 Các khái niệm và thuật ngữ liên quan đến tấn công và bảo mật ứng dụng web

      • 1.4.1 Khái niệm hacker

      • 1.4.2 Giao thức HTTP và HTTPS

      • 1.4.3 Session

      • 1.4.4 Cookie

      • 1.4.5 Proxy

      • 1.4.6 Firewall

  • CHƯƠNG 2. CÁC HÌNH THỨC TẤN CÔNG VÀ GIẢI PHÁP BẢO MẬT WEBSITE

    • 2.1 MỘT SỐ KỸ THUẬT TẤN CÔNG CỦA HACKER VÀO LỖ HỔNG TRÊN TRANG WEB VÀ BIỆN PHÁP PHÒNG CHỐNG

      • 2.1.1 Kiểm soát truy cập ( Web Access Control )

      • 2.1.2 Ấn định phiên làm việc ( Session Fixation )

      • 2.1.3 Đánh cắp phiên làm việc

      • 2.1.4 Lợi dụng thiếu sót trong việc kiểm tra dữ liệu hợp lệ ( Input validation )

      • 2.1.5 Kiểm tra tính đúng đắn của dữ liệu bằng ngôn ngữ phía trình duyệt

      • 2.1.6 Tràn bộ đệm ( Buffer OverFlow )

      • 2.1.7 Mã hóa URL ( URL Encoding )

      • 2.1.8 Kí tự Meta ( Meta – characters sử dụng những ký tự đặc biệt )

      • 2.1.9 Vượt qua đường dẫn ( Path Traversal )

      • 2.1.10 Chèn mã lệnh thực thi trên trình duyệt nạn nhân ( Cross – Site Scripting)

      • 2.1.11 Thêm câu lệnh hệ thống ( OS Command Injection )

      • 2.1.12 Kí tự rỗng ( Null Characters )

      • 2.1.13 Chèn câu truy vấn SQL ( SQL Injection )

      • 2.1.14 Ngôn ngữ phía máy chủ ( Server side includes )

      • 2.1.15 Thao tác trên tham số truyền ( Parameter manipulation )

      • 2.1.16 Từ chối dịch vụ ( DOS )

    • 2.2 Các cách triển khai tấn công ứng dụng Web

      • 2.2.1 Thao tác trên tham số

      • 2.2.2 Thao tác trên URL

    • 2.3 Thao tác trên biến ẩn form

      • 2.3.1 Khái niệm

      • 2.3.2 Một số biện pháp khắc phục

    • 2.4 Kỹ thuật tấn công SQL Injection

      • 2.4.1 SQL Injection là gì?

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

      • 2.4.3 Cách phòng tránh

    • 2.5 Chèn mã lệnh thực thi trên trình duyệt Cross-Site Scripting

      • 2.5.1 Tấn công Cross-Site Scripting

      • 2.5.2 Phương pháp tấn công XSS truyền thống

      • 2.5.3 Cách phòng chống

  • CHƯƠNG 3. XÂY DỰNG DEMO TẤN CÔNG SQL INJECTION

  • 3.MỤC TIÊU DEMO

    • 3.1 Demo tấn công Sql Injection

      • 3.1.1 Các bước tấn công

    • 3.2 Phòng chống Sql Injection

      • 3.2.1 Thực hiện phòng chống

  • KẾT LUẬN

  • TÀI LIỆU THAM KHẢO

Nội dung

MỤC LỤC LỜI MỞ ĐẦU Trong thời đại ngày internet trở nên quen thuộc cơng cụ hữu ích để đất nước giới thiệu hình ảnh hay đơn giản trang web cá nhân giới thiệu Tất kéo theo phát triển khơng ngừng ứng dụng web Và khái niệm ứng dụng web trở nên phổ biến Khi mà internet ,ứng dụng web trở lên phổ biến ,ứng dụng cách rộng rãi công ứng dụng web phát triển phức tạp Điều đặt vấn đề cấp thiết cần làm để bào đảm an tồn thơng tin cho ứng dụng web, thơng tin người sử dụng Các khái niệm chuyên môn ứng dụng web công ứng dụng web dần trở nên phổ biến tài liệu chuyên ngành Các cơng cụ hỗ trợ người lập trình web, người quản trị mạng xuất giúp tìm kiếm lỗ hổng ứng dụng web khơng theo kịp phát triển nhanh đến mức chóng mặt theo xu hướng nhanh đẹp ứng dụng web, tất nhiên khơng thể ngăn chặn hồn tồn cơng ứng dụng web, mà công ngày đa dạng khai thác triệt để lỗi ứng dụng web, người quản trị, hay người lập trình ứng dụng web Thống kê cho thấy 75% công internet cơng ứng dụng web,nó gây thiệt hại vơ to lớn, việc tìm hiểu công ứng dụng web cần thiết nhằm có cách phịng chống cơng bảo mật ứng dụng web hiệu trở thành yêu cầu cấp thiết… Do xu tất yếu thời, nên việc tìm hiểu nghiên cứu ứng dụng web giúp ích nhiều cho nhà lập trình web mới, hay quản trị viên cịn kinh nghiệm việc quản trị hệ thống mạng mình, phịng tránh , hay khắc phục lỗi ứng dụng web Bài tập lớn thực nhằm mục đích giới thiệu rõ ứng dụng web nhằm tránh nhầm lẫn đồng thời tìm hiểu cơng ứng dụng web phổ dụng nhằm có cách phịng chống ,bảo mật cho ứng dụng web hợp lý CHƯƠNG TỔNG QUAN VỀ BẢO MẬT VÀ ỨNG DỤNG WEB 1.1 TỔNG QUAN VỀ WEB 1.1.1 Khái niệm ứng dụng web (website widget hay web application) Ứng dụng Web ứng dụng chủ, khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác Mang tính kỹ thuật nhiều giải thích ứng dụng Web truy vấn máy chủ chứa nội dung (chủ yếu sở liệu lưu trữ nội dung) tạo tài liệu Web động để phục vụ yêu cầu máy khách (chính người dùng website) Tài liệu tạo kiểu định dạng tiêu chuẩn hỗ trợ tất trình duyệt (như HTML, XHTML) JavaScript dạng script client-side cho phép yếu tố động có trang (như thay đổi ảnh lần người dùng di chuột tới) Trình duyệt Web chìa khóa Nó dịch chạy tất script, lệnh… hiển thị trang web nội dung yêu cầu Dưới góc độ chức năng, ứng dụng Web chương trình máy tính cho phép người dùng website đăng nhập, truy vấn vào liệu qua mạng Internet trình duyệt Web u thích họ Dữ liệu gửi tới người dùng trình duyệt theo kiểu thông tin động (trong định dạng cụ thể, với HTML dùng CSS) từ ứng dụng Web qua Web Server Để hiểu nghĩa khái niệm sâu vào tìm hiểu tiếp mơ hình cấu trúc chức nhiệm vụ ứng dụng web 1.2 Cấu trúc, chức năng, giao diện & nguyên tắc hoạt động ứng dụng web 1.2.1 Cấu trúc ứng dụng Mơ hình ứng dụng web đơn giản mơ hìnhMVC (Model - View Controller) Tầng Model: chứa code connect tới database,truy vấn thêm xóa sửa liệu Tầng View: chứa code tạo giao diện tương tác với người dùng, liệu vẽ nhu Tầng Controller: chứa code điều khiển dòng liệu (flow control), gắn kết tầng Mode tầng View lại với Ứng dụng chia thành layer tăng tính reuse dễ dàng mở rộng Chẳng hạn muốn ứng dụng truy xuất di dộng, cần tạo tầng view riêng cho di động, tầng model controller không thay dổi Hay muốn thay đổi database, việc dễ dàng hơn, cần ta tạo tầng model mới, phần view controller không bị ảnh hưởng Mơ hình thể quan hệ ba lớp ứng dụng web: Hình 1: Mơ hình tầng ứng dụng web Cịn mơ hình dịch vụ ứng dụng web: Hình Mơ hình dịch vụ ứng dụng web đơn giản 1.2.2 Giao diện ứng dụng web Giao diện web đặt giới hạn khả người dùng Thông qua Java, JavaScript, DHTML, Flash công nghệ khác, phương pháp ứng dụng có vẽ hình, chơi nhạc, dùng bàn phím chuột tất thực Những kỹ thuật thông thường kéo thả hỗ trợ công nghệ 1.2.3 Chức ứng dụng web Ứng dụng web phổ biến nhờ vào có mặt vào nơi đâu chương trình Khả cập nhật bảo trì ứng dụng Web mà khơng phải phân phối cài đặt phần mềm hàng ngàn máy tính lý cho phổ biến Ứng dụng web dùng để thực Webmail, bán hàng trực tuyến, đấu giá trực tuyến, wiki, diễn đàn thảo luận, Weblog, MMORPG, Hệ quản trị quan hệ khách hàng nhiều chức khác Tất liệu cần phải đóng gói, lưu trữ, xử lý truyền vận theo cách đó, sử dụng vào ngày sau Các ứng dụng Web, lĩnh vực đăng ký, đệ trình, truy vấn, đăng nhập, bán hàng hệ thống quản lý nội dung website widget cho phép thực tất công việc mong muốn Web là yếu tố giúp doanh nghiệp tăng cường hình ảnh trực tuyến giới mạng, tạo trì nhiều mối quan hệ đem lại lợi nhuận lâu dài với khách hàng tiềm khách hàng Website ngày khác xa so với kiểu đồ họa văn tĩnh kỷ mười chín hay thời kỳ trước Các trang Web đại cho phép người dùng lấy xuống nội dung động cá nhân hóa theo thiết lập tham chiếu riêng Hơn chúng chạy script máy khách, “thay đổi” trình duyệt Internet thành giao diện cho ứng dụng thư điện tử, phần mềm ánh xạ tương tác (Yahoo Mail, Google Maps) Quan trọng website đại cho phép đóng gói, xử lý, lưu trữ truyền tải liệu khách hàng nhạy cảm (như thông tin cá nhân, mã số thẻ tín dụng, thơng tin bảo mật xã hội …) dùng dùng định kỳ sau Và, điều thực qua ứng dụng Web Đó thành phần webmail (thư điện tử), trang đăng nhập, chương trình hỗ trợ mẫu yêu cầu sản phẩm hay hoạt động mua bán, hệ thống quản lý nội dung, phát triển website đại, cung cấp cho doanh nghiệp phương tiện cần thiết để liên lạc với khách hàng tương lai khách hàng 1.2.4 Nguyên tắc hoạt động ứng dụng web Trong dạng tính tốn chủ-khách trước đây, ứng dụng có chương trình khách riêng phục vụ giao diện người dùng phải cài đặt riêng rẽ máy tính cá nhân người dùng Sự nâng cấp phần máy chủ ứng dụng cần nâng cấp tất máy khách cài máy trạm người dùng, thêm vào chi phí hỗ trợ giảm suất Ứng dụng web linh hoạt tạo loạt tài liệu Web định dạng chuẩn hỗ trợ trình duyệt phổ biến HTML/XHTML Ngơn ngữ kịch phía người dùng dạng ngơn ngữ chuẩn JavaScript thường thêm vào để có thêm yếu tố động giao diện người dùng Nói chung, trang Web đơn lẻ gửi tới người dùng tài liệu ổn định, thứ tự trang cung cấp cảm giác trực quan, người dùng nhập vào trả thông qua thành phần mẫu Web nhúng vào đánh dấu trang Trong trình giao dịch đó, trình duyệt Web thơng dịch hiển thị trang, hoạt động người dùng chung cho ứng dụng Web Theo mơ hình MVC (Model - View - Controller) : Hình Mơ tả hoạt động ứng dụng web Các bước hoạt động ứng dụng web đơn giản: Bước 1: Browser tạo HTTP Request gửi tới ứng dụng web Bước 2: Controller Struts class ActionServlet bắt request này, phân tích URL nó, dựa vào file struts-config.xml để gửi request tới Action class tương ứng Bước 3: Action class class Struts Framework Ứng dụng thường extends từ class viết code để sử lý business tương ứng Chẳng hạn ta có LoginAction để xử lý việc user login, logout Bước 4: Action class truy xuất, cập nhật database cần thiết Bước 5: Khi Action class thực việc xử lý business xong, gửi yêu cầu forward/redirect, với liệu (nếu có) controller Bước 6: Controller chuyển control đến trang JSP tương ứng tầng view Nếu trang JSP có sử dụng liệu, controller cung cấp cho (đây liệu mà action tạo đua cho controller Bước 7: Sau trang JSP chuẩn bị xong, Controller tạo HTTP Response gửi cho browser, để browser hiển thị hình 1.2.5 Vấn đề bảo mật ứng dụng web Khi mà ứng dụng web phát triển nhanh mặt, khả ứng dụng cách rộng rãi vấn đề bảo mật cho ứng dụng web trọng Mặc dù phủ nhận cải tiến nâng cao đáng kể nay, vấn đề bảo mật ứng dụng Web khơng ngừng tăng lên Ngun nhân xuất phát từ đoạn mã không phù hợp Nhiều điểm yếu nghiêm trọng hay lỗ hổng cho phép hacker xâm nhập thẳng truy cập vào sở liệu tách lấy liệu nhạy cảm Nhiều sở liệu chứa thông tin giá trị (như chi tiết cá nhân, thơng tin tài chính) khiến chúng trở thành đích nhắm thường xuyên hầu hết hacker Mặc dù hoạt động công phá hoại website doanh nghiệp diễn thường xuyên, tin tặc thích tăng cường khả truy cập liệu nhạy cảm nằm trình chủ chứa database lợi nhuận khổng lồ từ vụ mua bán liệu đem lại Hình 4: Mơ hình hoạt động ứng dụng web Trong khung hoạt động mô tả trên, bạn thấy thật dễ dàng cho hacker truy cập nhanh chóng thơng tin nằm sở liệu với chút sáng tạo Nếu may mắn chúng gặp lỗ hổng xuất phát từ cẩu thả hay lỗi người dùng ứng dụng Web Như nói, website phụ thuộc vào sở liệu để phân phối thông tin yêu cầu cho người dùng Nếu ứng dụng Web khơng an tồn (như có lỗ hổng, gặp phải kiểu kỹ thuật hacking đó), tồn sở liệu chứa thông tin nhạy cảm gặp nguy hiểm nghiệm trọng Một số hacker chèn mã độc hại vào ứng dụng Web có lỗ hổng để lừa đảo người dùng dẫn họ tới website phishing Kỹ thuật gọi Cross-site Scripting, dùng thân Web Server nơi chứa sở liệu khơng có lỗ hổng Một nghiên cứu gần 75% công mạng thực mức ứng dụng Web.Website ứng dụng Web liên quan phải sẵn sàng 24/7 để cung cấp dịch vụ theo yêu cầu khách hàng, yêu cầu từ phía nhân viên, nhà cung cấp nhiều người liên quan khác ZF Tường lửa, SSL bảo vệ ứng dụng Web trước hoạt động hacking, đơn giản truy cập vào website phải để chế độ public để ghé thăm website Tất hệ thống sở liệu đại (như Microsoft SQL Server, Oracle, MySQL) truy cập qua số cổng cụ thể (như cổng 80, 443) Nếu muốn, người kết nối trực tiếp tới sở liệu cách hiệu vượt qua chế bảo mật hệ điều hành Các cổng để mở nhằm cho phép liên lạc với hoạt động giao thông mạng hợp pháp, hình thành nên lỗ hổng lớn nguy hiểm Các ứng dụng Web thường truy cập liệu cuối sở liệu khách hàng, điều khiển liệu có giá trị khó để tuyệt đối an tồn Lúc truy cập liệu thường khơng kèm script cho phép đóng gói truyền tải liệu Nếu hacker nhận điểm yếu script, dễ dàng mở lại lưu lượng sang khu vực khác chia lẻ bất hợp pháp chi tiết cá nhân người dùng, dù không chủ tâm làm điều Hầu hết ứng dụng Web tự tạo, có kiểm tra trình độ so với phần mềm loại Do ứng dụng tùy biến thường dễ bị cơng Có thể nói ứng dụng Web cổng vào (gateway) sở liệu, ứng dụng tùy biến Chúng không phát triển với mức bảo mật tốt qua kiểm tra bảo mật thông thường Nói chung, bạn cần trả lời câu hỏi: “Phần website nghĩ an toàn lại mở cửa cho công?” “Dữ liệu đem vào ứng dụng khiến thực số điều khơng nên làm?”.Đó cơng việc phần mềm rà soát lỗ hổng Web Hiện , hacker có nhiều cách cơng ứng dụng web từ kĩ thuật kĩ thuật địi hỏi kĩ thuật cơng nghệ cao cao Các công cụ(tool) hỗ trợ đời ngày nhiều , hỗ trợ nhiều cho người quản trị mạng , tìm lỗ hổng để có vá lỗi kịp thời đồng thời dao hai lưỡi Hacker dùng tool để phát lỗ hổng ứng dụng web từ có cách công tương ứng vào lỗ hổng gây nhiều tổn thất 1.3 Các khái niệm thuật ngữ liên quan 1.3.1 Các khái niệm chung ứng dụng web Web browser (trình duyệt web) ứng dụng phần mềm cho phép người dùng truy vấn liệu tương tác với nội dung nằm trang Web bên website Trang Web tĩnh; người dùng gửi yêu cầu tài nguyên đó, server trả tài ngun Các trang Web khơng có văn định dạng phân tán Đối với trình duyệt, trang Web tĩnh vấn đề khó khăn, trang Web lúc đầu để thơng tin kiện, địa chỉ, hay lịch làm việc qua Internet mà thơi, chưa có tương tác qua trang Web Web "ĐỘNG" thuật ngữ dùng để website hỗ trợ phần mềm sở web, nói chương trình chạy với giao thức http Thực chất, website động có nghĩa website tĩnh "ghép" với phần mềm web (các modules ứng dụng cho Web) Với chương trình phần mềm này, người chủ website thực có quyền điều hành nó, chỉnh sửa cập nhật thơng tin website mà khơng cần phải nhờ đến người chuyên nghiệp Tên miền (Domain name) định danh website Internet Tên miền thường gắn kèm với tên công ty thương hiệu doanh nghiệp Tên miền cấp phát cho chủ thể đăng ký trước -Tên miền có hai loại: + Tên miền quốc tế dạng: www.tencongty.com (.net, biz org, info ) + Tên miền quốc gia dạng: www.tencongty.com.vn (hoặc net.vn, biz.vn org.vn, gov.vn ) + Web hosting nơi không gian máy chủ có cài dịch vụ Internet ftp,www, nơi bạn chứa nội dung trang web hay liệu khơng gian Lý bạn phải th Web Hosting để chứa nội dung trang web, dịch vụ mail, ftp, máy tính ln có địa cố định kết nối vào Internet (đó địa IP) , bạn truy cập vào internet thông thường thông qua IPS (Internet Service Provider - Nhà cung cấp dịch vụ Internet) địa IP máy bạn ln bị thay đổi, liệu máy bạn truy cập từ máy khác Internet 1.3.2 Thuật ngữ , khái niệm công cụ liên quan đến ứng dụng web CGI: Giải pháp để làm trang Web động Common Gateway Interface (CGI) CGI cho phép tạo chương trình chạy người dùng gửi yêu cầu Giả sử cần hiển thị các mục để bán Web site – với CGI script ta truy nhập sở liệu sản phẩm hiển thị kết Sử dụng form HTML đơn giản CGI script, tạo “cửa hàng” ảo cho phép bán sản phẩm cho khách hàng qua trình duyệt CGI script viết số ngôn ngữ từ Perl Visual Basic Applet:Tháng 5/1995, John Gage hãng Sun Andressen (nay thuộc Netscape Communications Corporation) công bố ngôn ngữ lập trình có tên Java Netscape Navigator hỗ trợ ngôn ngữ này, đường cho trang Web động mở ra, kỷ nguyên applet bắt đầu Applet cho phép nhà phát triển viết ứng dụng nhỏ nhúng vào trang Web Khi người dùng sử dụng trình duyệt hỗ trợ Java, họ chạy applet trình duyệt máy ảo Java Virtual Machine (JVM) Dù applet làm nhiều điều song có số nhược điểm: thường bị chặn việc đọc ghi file hệ thống, tải thư viện, thực thi phía client Bù lại hạn chế trên, applet chạy mơ hình bảo mật kiểu sandbox bảo vệ người dùng khỏi đoạn mã nguy hiểm Có lúc applet sử dụng nhiều, có vấn đề nảy sinh: phụ thuộc vào máy ảo Java JVM, applet thực thi có mơi trường thích hợp cài đặt phía client, tốc độ applet tươngđối chậm applet khơng phải giải pháp tối ưu cho Web động JavaScript:Cùng thời gian này, Netscape tạo ngôn ngữ kịch gọi JavaScript JavaScript thiết kế để việc phát triển dễ dàng cho nhà thiết kế Web lập trình viên khơng thành thạo Java (Microsoft có ngơn ngữ kịch gọi VBScript) JavaScript trở thành phương pháp hiệu để tạo trang Web động Việc người ta coi trang đối tượng làm nảy sinh khái niệm gọi Document Object Model (DOM) Lúc đầu JavaScript DOM có kết hợp chặt chẽ sau chúng phân tách DOM hoàn toàn cách biểu diễn hướng đối tượng trang Web sửa đổi với ngôn ngữ kịch JavaScript hay VBScript Tổ chức World Wide Web Consortium (W3C) chuẩn hóa DOM, European Computer Manufacturers Association (ECMA) phê duyệt JavaScript dạng đặc tả ECMAScript JSP/Servlet, ASP PHP:Cùng với Java, Sun đồng thời đưa công nghệ gọi servlet Các đoạn mã Java khơng chạy phía client với applet; chúng chạy ứng dụng phía server Servlet đồng thời phục vụ CGI script Servlet bước tiến lớn, đưa thư viện hàm API Java thư viện hoàn chỉnh để thao tác giao thức HTTP JavaServer Page (JSP) cơng nghệ lập trình Web Sun, với cơng nghệ khác Microsoft - Active Server Pages (ASP), JSP cơng nghệ địi hỏi trình chủ hiểu Java Microsoft nghiên cứu nhược điểm servlet tạo ASP dễ dàng để thiết kế trang web động Microsoft thêm công cụ mạnh tích hợp hồn hảo với Web server JSP ASP có nét tương đương chúng thiết kế để phân tách qua trình xử lí khỏi q trình biểu diễn Có khác biệt kỹ thuật, song hai cho phép nhà thiết kế Web tập trung vào cách bố trí (layout) nhà phát triển phần mềm tập trung vào kỹ thuật lập trình logic Set objRS = Nothing %> Thì chắn bị lỗi SQL injection, 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, xem bạn yêu cầu thực thêm câu lệnh là: SELECT TOP FieldName FROM TableName f) Dạng công sử dụng Stored-Procedures Stored Procedure sử dụng lập trình Web với mục đích giảm phức tạp ứng dụng tránh công kĩ thuật SQL Injection Tuy nhiên hacker lợi dụng Stored Procedure để công vào hệ thống Ví dụ : Stored procedure sp_login gồm hai tham số username password Nếu nhập: Username: nhimmap Password: ‘;shutdown-Lệnh gọi stored procedure sau: exec sp_login ‘nhimmap’,‘’;shutdown ’ Lệnh shutdown thực dừng SQL Server g) Dạng công sử dụng Blind SQL Injection Một số ứng dụng Web thiết kế xử lý lỗi tốt kẻ công thấy thông báo lỗi chứa thông tin nhạy cảm Do việc công cách sử dụng từ khố UNION hay cơng dựa vào thông báo lỗi thực Trong trường hợp kẻ cơng sử dụng kỹ thuật Blind SQL Injection Có hai dạng Blind SQL Injection:  Normal Blind: Không thấy phản hồi từ trang Web kẻ cơng thấy kết thông qua mã trạng thái HTTP kết câu truy vấn Cách công Normal Blind thường thực cách sử dụng câu điều kiện If công vào mệnh đề Where  Totally Blind: Hồn tồn khơng thấy phản hồi từ trang Web Khi kẻ cơng sử dụng số hàm hệ thống phân tích trả lời từ trang Web để tìm lỗ hổng Ví dụ: Kẻ cơng sử dụng câu truy vấn sau: ProductID = 1;waitfor delay ‘0:0:10’— Nếu thời gian phản hồi từ trang web trể bình thường 10 giây có nghĩa trang web có lỗ hổng Mặc dù SQL chuẩn ANSI ISO đưa ra, nhiên, có nhiều phiên khác ngôn ngữ SQL Và phần lớn chương trình sở liệu có phần mở rộng thêm vào riêng họ, so với chuẩn SQL Do đó, cơng sở liệu khác website viết ngôn ngữ lập trình khác nhau, phải sử dụng nhiều phương pháp công khác Tuy nhiên, câu lệnh chương trình sở liệu phần lớn phải theo chuẩn đưa ra.Chính dạng công nêu hacker sử dụng phổ biến hiệu hầu hết sở liệu 2.4.3 Cách phòng tránh Trong hầu hết trình duyệt, kí tự nên mã hóa đị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ĩ liệu nhập vào thay kí tự : Đối với giá trị numeric, chuyển sang Interger trước thực câu truy vấn SQL, dùng ISNUMERIC để chắn Interger • Dùng thuật tốn mã hóa liệu • 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 tồ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 khiển tồ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 Để phịng tránh, ta thực hai mức: • a) Kiểm sốt chặt chẽ liệu nhập vào Để phòng tránh nguy xảy ra, bảo vệ câu truy vấn SQL cách kiểm soát chặt chẽ tất liệu nhập nhận từ đối tượng Request (Request, Request QueryString, Request.Form, Request Cookies, Request.Server Variables) Trong trường hợp liệu nhập vào chuỗi, ví dụ 1, lỗi xuất phát từ việc có dấu nháy đơn liệu Để tránh điều này, thay dấu nháy đơn hàm Replace để thay dấu nháy đơn: p_strUsername = Replace(Request.Form(“txtUsername”), “‘“, “‘’”) p_strPassword = Replace(Request.Form(“txtPassword”), “‘“, “‘’”) Trong trường hợp liệu nhập vào số, ví dụ 2, lỗi xuất phát từ việc thay giá trị tiên đoán liệu số chuỗi chứa câu lệnh SQL bất hợp pháp Để tránh điều này, đơn giản kiểm tra liệu có kiểu hay không: p_lngID = CLng(Request(“ID”)) Như vậy, người dùng truyền vào chuỗi, hàm trả lỗi Ngoài để tránh nguy từ công SQL Injection, nên ý loại bỏ thơng tin kĩ thuật chứa thông điệp chuyển tới 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 b) Thiết lập cấu hình an tồn cho hệ quản trị sở liệu Cần có chế kiểm số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 dang 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 Ngồ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 Xác định phương pháp kết nối server :  Dùng tiện ích Network Utility để kiểm tra có thư viện mạng        hoạt động Kiểm tra tất tài khoản SQL server Chỉ tạo tài khoản có quyền thấp cho ứng dụng Loại bỏ tài khoản không cần thiết Đảm bảo tất tài khoản co mật hợp lệ Kiểm tra đối tượng tồn Nhiều extended stored procedure xóa bỏ cách an tồn Nếu điều thực hiện, xem xét việc loại bỏ tập tin Dll chứa mã extended stored procedure Xóa bỏ tất liệu mẫu “northwind” “pubs”  Xóa stored procedure khơng dùng như: master…xp_cmdsell, xp_startmail, xp_makewebtask  Kiểm tra tài khoản truy xuất đến đối tượng  Đố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 c) Thiết lập đối tượng giả làm mồi nhử Chiến thuật đưa nhằm cảnh báo cho quản trị viên nguy cơng cố tình tìm cách khai thác liệu nhạy cảm password Phương pháp nên phối hợp với việc đặt tên đối tượng khó đốn Để thực phương pháp này, ta sinh bảng chứa cột có tính nhạy cảm mà dễ đốn, ví dụ password, credit_no, liệu bảng liệu giả, thông tin truy cập, có thơng báo gửi cho quản trị viên 2.5 Chèn mã lệnh thực thi trình duyệt Cross-Site Scripting 2.5.1 Tấn công Cross-Site Scripting Cross-Site Scripting (XSS) kỹ thuật cơng phổ biến, 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 Hacker lợi dụng kiểm tra lỏng lẻo từ ứng dụng hiểu biết hạn chế người dùng biết đánh vào tò mò họ dẫn đến người dùng bị thông tin cách dễ dàng Hacker thực công XSS cách chèn vào Website động (ASP, PHP, CGI, JSP, ) thẻ HTML hay đoạn mã script nguy hiểm gây hại cho người sử dụng khác Thông thường hacker lợi dụng địa URL để đưa liên kết tác nhân kích hoạt đoạn chương trình nguy hiểm chèn vào, hầu hết viết ClientSite Script JavaScript, Jscript thẻ HTML,… thực thi trình duyệt nạn nhân Ví dụ 1: Hacker thường gắn thêm đoạn mã độc vào URL Website gởi đến nạn nhân, nạn nhân truy cập URL bị dính mã độc http://example.com/search.cgi?query=alert(document.cookie); Lợi dụng cách truyền tham số URL mà hacker dễ dàng thêm vào đoạn mã đánh cắp cookie Điều xảy ta không ý điều kiện lọc input từ URL Website Ví dụ 2: Trường hợp mở thư mà không cảnh giác với XSS Chỉ cần với đoạn mã HTML gửi thư hồn tồn bị cookie mình: Khi nhận thư, vơ tình người dùng đưa chuột qua ảnh gửi kèm có nghĩa bị lấy cookie Và với cookie lấy được, hacker dễ dàng login hòm thư người sử dụng Nhưng thực có nhiều cách để thêm đoạn mã JavaScript với mục đích cơng kiểu XSS Hacker dễ dàng lợi dụng Document Object Model (DOM) để thay đổi ngữ cảnh nội dụng Web ứng dụng Một vài loại thẻ chèn đoạn mã: [code] [code] Phần in đậm phần đặt đoạn mã đánh cắp thông tin Nếu 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 Đơi hacker sử dụng kỹ thuật đề phá hoại Website cơng vào bề mặt Website 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 mật khẩu, cookie, hay bị cài loại virus, backdoor, worm,… 2.5.2 Phương pháp công XSS truyền thống Như biết, cookie phần thơng tin mà ứng dụng lưu đĩa cứng người sử dụng Nhưng ứng dụng thiết lập cookie đọc Do người dùng phiên làm việc ứng dụng hacker có hội đánh cắp cookie Công việc hacker tìm trang đích để dụ người dùng đăng nhập sau tìm lỗ hổng ứng dụng File ghi thơng tin đánh cắp Ứng dụng web Đoạn mã phân phối qua email hay trang web Người dùng Thông tin người dùng lấy 2.5.3 Cách phòng chống Như biết, công XSS thực gửi trang Web cho trình duyệt Web nạn nhân có kèm theo mã script độc kẻ cơng Vì nhà phát triển bảo vệ ứng dụng Web khỏi bị lợi dụng thông qua công XSS này, đảm bảo trang phát sinh động không chứa tag script cách lọc xác nhận hợp lý liệu đầu vào từ phía người dùng mã hóa (endcoding) lọc giá trị xuất cho người dùng  Lọc, xác nhận tính hợp lý Ln ln lọc liệu nhập từ phía người dùng cách lọc ký tự đặc biệt, dấu nháy đơn kép, ký tự Null,… định nghĩa đặc tả HTML Mỗi trường nhập liệu bao gồm tham số liên kết kiểm tra để phát thẻ script Hiện có nhiều lọc để ta lựa chọn (như thư viện viết PHP cho phép filter HTML để ngăn chặn kẻ xấu post mã độc XSS thơng qua Website, HTML Purifier Website: http://htmlpurifier.org)  Mã hóa Lỗi XSS tránh máy chủ Web đảm bảo trang phát sinh mã hóa thích hợp để ngăn việc chạy script khơng mong muốn Mã hóa phía máy chủ tiến trình mà tất nội dung phát sinh động qua hàm mã hóa nơi mà thẻ script thay thể mã Việc mã hóa khuyến khích sử dụng khơng u cầu phải đưa định kí tự hợp lệ khơng hợp lệ Tuy nhiên việc mã hóa tất liệu tốn tài nguyên ảnh hưởng đến khả thực thi máy chủ  Người dùng Người sử dụng cần cấu hình lại trình duyệt để nhắc nhở có cho thực thi ngơn ngữ kịch máy họ hay không? Tùy vào mức độ tin cậy mà người dùng định Kỹ thuật XSS phổ biến dễ dàng áp dụng, nhiên mức độ thiệt hại dừng lại mức độ cơng máy nạn nhân Vì thế, ngồi việc ứng dụng kiểm tra tính đắn liệu việc cần người dùng nên cảnh giác trước bước vào trang Web Có thể nói, nhờ vào cảnh giác người dùng 90% đạt bảo mật kỹ thuật CHƯƠNG XÂY DỰNG DEMO TẤN CÔNG SQL INJECTION 3.MỤC TIÊU DEMO Trang web “Quản lý sinh viên” Nhiệm vụ trang web giúp sinh viên xem thông báo, tra cứu điểm 3.1 Demo công Sql Injection 3.1.1 Các bước công Em sử dụng add-ons hackbar firefox để thực công Đây giao diện trang web Bước 1: Kiểm tra trang web có bị dính lỗi sql injection hay khơng _ Lỗi xảy thêm kí tự đặc biệt ‘,”,*,-,… mà kết trả rỗng (empty,null) trả trang báo lỗi có nghĩa trang dính lỗi sql injection lúc thực truy vấn _ Để kiểm tra lỗi em thực thêm dấu ‘ vào giá trị đầu vào website, chẳng hạn sau: http://localhost/ttcn/demo/flat/client/link.php?id=12' Sau em thêm ký tự ‘ trang web trả dịng thơng báo lỗi hình bên cho thấy website bị dính lỗi sql injection Bước 2: Đếm column (số cột) tồn table mà website sử dụng: thực bước để em đếm số cột (column) tồn table sử dụng em thực truy vấn đếm số cột sau: Order by number http://localhost/ttcn/demo/flat/client/link.php?id=12 order by => bình thường (có tồn cột 6) Nhưng em đếm sang cột thứ http://localhost/ttcn/demo/flat/client/link.php?id=12 order by 7— => bị lỗi trả kết bên Bước 3: Tìm cột lỗi tiến hành khai thác để tìm cột bị lỗi, em dùng truy vấn Union select number http://localhost/ttcn/demo/flat/client/link.php?id=-12 union select 1,2,3,4,5,6-Lưu ý : “khi union phải phủ định giá trị id để cột sử dụng” http://localhost/ttcn/demo/flat/client/link.php?id=-12 (ở em thêm dấu trừ vào đằng trước 12 ) Sau execute giao diện web số 1-2-3-4-5-6 column bị lỗi Em sử dụng column 1để khai thác database sql mà server sử dụng http://localhost/ttcn/demo/flat/client/link.php?id=-12 union select database(),2,3,4,5,6-=> tên database “empty” Bước 4: Khai thác bảng có database website, em dùng hàm truy vấn unhex,hex,group_concat Em sử dụng column để khai khác database “empty” : http://localhost/ttcn/demo/flat/client/link.php?id=-12 union select database(),unhex(hex(group_concat(table_name))),3,4,5,6 from information_schema.tables where table_schema=database() => Sau thực truy vấn trả kết column bảng có database : accounts,chuyen_nganh,diem_thanh_phan,khoa,lop_hoc,mon_hoc,notifications,sinh_vie n => Hồn thành cơng sql injection 3.2 Phòng chống Sql Injection 3.2.1 Thực phòng chống KẾT LUẬN Ứng dụng web phát triển với tốc độ chóng mặt kĩ thuật cơng bảo mật ứng dụng web phát triển với trình độ cao Tấn công bảo mật ứng dụng web đề tài rộng đòi hỏi am hiểu phải có kĩ thuật chun mơn cao Do thời gian làm báo cáo thực tập chuyên ngành kĩ thuật em cịn có hạn nên phần em trình bày báo cáo kiến thức nhiều hạn chế Nhưng giúp đỡ tận tình thầy Phạm Hồng Việt Em hiểu rõ kĩ thuật công ứng dụng tảng cho phương phát công đại đồng thời em biết số phương pháp phòng tránh công bảo mật ứng dụng web Những kiến thức giúp ích nhiều cho em sau Những kiến thức giúp em có tảng vững kĩ thuật chuyên môn liên quan đến kĩ thuật bảo mật ứng dụng web Sau thực xong báo cáo chuyên ngành em sử dụng kiến thức tìm hiểu cố gắng học thêm, tìm hiểu thêm nhũng kiến thúc chuyên môn liên quan nhằm xây dựng mộ công cụ hay phương pháp bảo mật ứng dụng web hiệu trước công TÀI LIỆU THAM KHẢO Trong báo cáo thực tập chuyên ngành em tham khảo nhiều viết tác giả , internet sau thông tin tài liệu https://freetuts.net/ky-thuat-tan-cong-sql-injection-va-cach-phong-chong-trong-php107.html https://quantrimang.com/tan-cong-kieu-sql-injection-va-cac-phong-chong-trong-asp-net34905 https://quantrimang.com/tim-hieu-ve-sql-injection-41 http://securitybox.vn/2899/tong-quan-ve-tan-cong-mang/ https://anonyviet.com/category/security/sql-injection/ http://www.hocviendaotao.com/2015/04/huong-dan-khai-thac-sql-injection-oi.html https://www.kynhan.com/tan-cong-sql-injection-va-cach-khac-phuc.html https://congdd.wordpress.com/2013/05/01/sniffer-phuong-thuc-hoat-dong-cac-kieu-tancong-va-phong-chong/ https://congdd.wordpress.com/2013/05/01/sniffer-phuong-thuc-hoat-dong-cac-kieu-tancong-va-phong-chong/ https://www.owasp.org/index.php/SQL_Injection https://thudinh.blogspot.com/2017/06/how-to-attack-sql-injection-website.html https://stackoverflow.com/questions/6533239/how-do-protect-yourself-against-sqlinjection-when-using-prepared-statements-sto http://dongpolice.com/web7-sql-injection-cac-cach-phong-chong-va-ket-luan/ http://thuthuatlaptrinhphp.blogspot.com/2016/08/ham-chong-sql-injection.html http://sinhvienit.net/forum/ham-chong-sql-injection.66455.html ... hỏi am hiểu phải có kĩ thuật chuyên môn cao Do thời gian làm báo cáo thực tập chuyên ngành kĩ thuật em có hạn nên phần em trình bày báo cáo kiến thức nhiều hạn chế Nhưng giúp đỡ tận tình thầy Phạm... 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... (empty,null) trả trang báo lỗi có nghĩa trang dính lỗi sql injection lúc thực truy vấn _ Để kiểm tra lỗi em thực thêm dấu ‘ vào giá trị đầu vào website, chẳng hạn sau: http://localhost /ttcn/ demo/flat/client/link.php?id=12'

Ngày đăng: 17/08/2021, 09:48

TỪ KHÓA LIÊN QUAN

w