Tấn công kiểu sql injection tác hại và phòng chống

32 746 2
Tấn công kiểu sql injection tác hại và phòng chống

Đ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

1 BÁO CÁO Tấn công kiểu sql injection-tác hại và phòng chống 2 MỤC LỤC MỞ ĐẦU 3 1.Tính cấp thiết của đề tài 3 2.Mục đích nghiên cứu 5 3.Đối tượng và phạm vi nghiên cứu 5 4.Phương pháp nghiên cứu 5 5.Ý nghĩa khoa học và thực tiễn của đề tài 5 6.Bố cục của luận văn 6 CHƯƠNG 1: GIỚI THIỆU VỀ SQL INJECTION 7 1.1 Đặc trưng của ứng dụng sử dụng cơ sở dữ liệu 7 1.2 Tầm quan trọng của các câu lệnh sql đối với một hệ thống web 8 1.3.Khái niệm sql injection 8 CHƯƠNG 2: SQL INJECTION VÀ CÁC CÁCH TẤN CÔNG PHỔ BIẾN 11 2.1. Dạng tấn công vượt qua kiểm tra đăng nhập 11 2.2. Dạng tấn công sử dụng câu lệnh SELECT 13 2.3. Dạng tấn công sử dụng câu lệnh INSERT 15 2.4. Dạng tấn công sử dụng Stored-procedures 16 2.5. Dạng tấn công sử dụng Blind SQL Injection 16 CHƯƠNG 3: PHÒNG CHỐNG SQL INJECTION 18 3.1.Kiểm soát chặt chẽ dữ liệu đầu vào 18 3.2. Sử dụng các lớp giao tiếp trừu tượng 22 3.3. Thiết lập các đối tượng giả làm mồi nhử 23 3 3.4. Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu 23 KẾT LUẬN 24 KẾ HOẠCH DỰ KIẾN TRIỂN KHAI ĐỀ TÀI 28 TÀI LIỆU THAM KHẢO 29 MỞ ĐẦU 1.Tính cấp thiết của đề tài Sự phát triển vượt bậc của công nghệ web đã đem lại rất nhiều thuận lợi cho người sử dụng cũng như các nhà phát triển.Nhưng cùng với sự phát triển này thì các ứng dụng web cũng trở thành mục tiêu ưu thích của những kể tấn công.Các hình thức tấn công rất đa dạng như thay đổi nội dung của trang web,tấn công từ chối dịch vụ khiến cho việc truy cập trang web không thể thực hiện hoặc rất khó thực hiện,chiếm quyền điều khiển trang web… Mục tiêu của các hacker cũng rất khác nhau,có thể tấn công xuất phát từ thiện chí,nhằm tìm ra những điểm yếu và thông báo cho nhà quản trị hệ thống.Nghiêm trọng hơn là tấn công để phục vụ cho các mục đích xấu như tống tiền trang web,lấy cắp những dữ liệu nhạy cảm như thông tin về thể tín dụng,mua hàng thông qua tài khoản của người khác… Trong các hình thức tấn công thì tấn công bằng cách chèn mã lệnh (injection) là phổ biến. Tấn công website bằng kỹ thuật SQL injection từ lâu đã là mối quan tâm bảo mật hàng đầu của các nhà phát triển web và chủ sở hữu website. Giờ đây, các cuộc tấn công này ngày càng trở nên khó phát hiện và ngăn chặn hơn.Số lượng các vụ tấn công nhằm vào cơ sở dữ liệu (CSDL) web đã lên tới một con số kỹ lục. Tháng 7 năm 2006,theo số liệu thống kê của hãng bảo mật SecureWorks cho biết đã phát hiện tới 8.000 vụ tấn công lên các cơ sở dữ liệu mỗi ngày. Như vậy, con số này đã tăng thêm trung bình từ 100 đến 200 vụ tấn công một ngày so với con số của 3 tháng đầu năm 2006.Con số này được SecureWorks thống kê từ hệ thống các cơ sở dữ liệu của hơn 1.300 khách hàng đang sử dụng các giải pháp dịch vụ bảo mật của hãng này. 4 SecureWorks cho biết tin tặc - chủ yếu sử dụng các máy tính tại Nga, Trung Quốc, Brazill, Hungary và Hàn Quốc và đều dùng chung một phương pháp có tên SQL Injection trong những vụ tấn công vào các cơ sở dữ liệu.Một trong những vụ tấn công SQL Injection nổi tiếng nhất chính là vụ tấn công vào CardSystems Solutions - một hãng chuyên lưu trữ cơ sở dữ liệu thanh toán thẻ tín dụng. Tin tặc đã sử dụng giải pháp tấn công SQL Injection để chiếm quyền điều khiển hệ thống cơ sở dữ liệu của CardSystems và chuyển toàn bộ cơ sở dữ liệu ra ngoài. Đã có khoảng 40 triệu thẻ tín dụng rơi vào tay chúng gây ra thiệt hại hàng triệu USD. SQL Injection là kiểu tấn công có mục tiêu rất cụ thể và thường là mục tiêu đơn lẻ cho mỗi một vụ tấn công. Chính vì thế mà những vụ tấn công như thế này thường không gây được sự chú ý rộng rãi như virus hay sâu máy tính.Âm thầm như thế nhưng thiệt hại của những vụ tấn công này lại rất lớn. Nếu như một máy chủ cơ sở dữ liệu bị tin tặc chiếm quyền kiểm soát thì sẽ có một khối lượng rất lớn thông tin cá nhân tài chính của người dùng sẽ rơi vào tay chúng. Và nếu thành công thì có thể nói nguồn thông tin mà tin tặc thu được còn nhiều hơn rất nhiều so với tấn công phishing. Tin tặc không phải mất công giả mạo để lừa người sử dụng cung cấp thông tin cá nhân tài chính. Tỉ lệ thành công của các vụ tấn công SQL Injection thường rất cao. Mới đây nhất vào tháng 6 năm 2011,Công ty bảo mật web Armorize thông báo đã phát hiện một kiểu tấn công mới với cách thức SQL injection hàng loạt. Kiểu tấn công mới này lợi sử dụng hình thức đơn giản của mạng ngang hàng (peer-to-peer) để làm cho mạng bị tổn hại khó có thể gỡ xuống. Về mặt lịch sử, các cuộc tấn công web hàng loạt rất đơn giản: Mã được viết bằng ngôn ngữ truy vấn có cấu trúc (SQL) được gửi đến cơ sở dữ liệu web phụ trợ (back-end) nhờ sử dụng một lỗ hổng trong mã của website. Khi lỗ hổng bảo mật nằm trong một ứng dụng thông thường, cuộc tấn công có thể làm hại hàng ngàn website cùng một lúc.Trong phiên bản mới nhất của kiểu tấn công, thay vì chèn vào các website một đoạn mã lệnh tĩnh đơn nhất trỏ trình duyệt truy cập đến một số website tải về mã độc hại, những kẻ tấn công tạo ra một đoạn mã lệnh động dẫn khách truy cập tới máy chủ web đã bị xâm nhập từ trước. Kỹ thuật mới làm cho việc lập danh sách đen (blacklisting) khó khăn hơn nhiều. 5 Trên thực tế do sự phát triển mạnh mẽ từng giờ,từng ngày của công nghệ thông tin cho nên các kiểu tấn công của các hacker cũng ngày càng tinh vi,phức tạp và khó ngăn chặn.Xuất phát từ những lý do trên,tôi chọn đề tài “ tấn công kiểu SQL injection- tác hại và phòng chống” làm đề tài nghiên cứu. 2.Mục đích nghiên cứu  Giúp chúng ta có thể hiểu hơn về các ứng dụng website, các mối đe dọa về vấn đề an toàn thông tin khi chúng ta làm việc trên ứng dụng web hàng ngày, hiểu rõ hơn về các kỹ thuật tấn công và bảo mật web.  Xác định được nguyên nhân,nhận diện chính xác đối tượng động cơ,cách thức của kể tấn công xâm nhập vào cơ sở dữ liệu.Xác định mục tiêu,mối nguy hiểm thường trực về an ninh ứng dụng web của các tổ chức.  Hiểu rõ khái niệm sql injection và phương thức hoạt động của các hacker thông qua lỗ hổng này.  Biết sử dụng phương pháp và các công cụ cơ bản để kiểm tra an ninh bảo mật trên ứng dụng web nhằm có cách phòng chống hiệu quả. 3.Đối tượng và phạm vi nghiên cứu Tìm hiểu kỹ thuật tấn công phổ biến nhất hiện nay là sql injection.Cách bảo mật phòng thủ kiểu tấn công này một cách tổng quan nhất. 4.Phương pháp nghiên cứu  Tiếp cận ngôn ngữ truy vấn có cấu trúc SQL.  Nghiên cứu các kỹ thuật tấn công sql injection thông qua các lỗ hổng bảo mật từ đó đưa ra các giải pháp phòng chống có hiệu quả. 5.Ý nghĩa khoa học và thực tiễn của đề tài Theo tài liệu Hacking Exposed Web 2.0 đánh giá Mức độ phổ biến của phương pháp tấn công kiểu sql injection là rất cao( 8/10), bởi vì nó cũng khá đơn giản để thực 6 hiện( 8/10), là một trong những lỗi bảo mật phổ biến nhất,xác xuất gặp lỗi bảo mật này khá cao và các tác động của SQL Injection tới hệ thống là rất nguy hiểm( 9/10). Chính vì thế, nên tổng thể nguy cơ này được đánh giá 9/10. Đây thật sự là một lỗ hổng về bảo mật rất đáng được quan tâm đến. Dựa vào lỗi SQL Injection, hacker có thể làm được những việc sau:  Có thể lấy được rất nhiều thông tin quan trọng trong cơ sở dữ liệu của một hệ thống web như account và password của admin của một web site, hay các thông tin quan trọng về thẻ tín dụng của khách hàng trong một ngân hàng nào đó…  Có thể thêm, xóa, sửa cơ sở dữ liệu của đối tượng bị tấn công theo ý muốn  Có thể tạo một backdoor cho những lần tấn công sau  Có thể đánh sập hoàn toàn một hệ thống  Có thể dùng như một phương pháp tấn công DoS Các cuộc tấn công sql injection thường nhắm đến các cơ sở dữ liệu mang tính thương mại,các website của thành phố thậm chí là các website của chính phủ,hầu hết các website bị tấn công đều thuộc loại đáng tin cậy,hợp pháp và an toàn tuyệt đối trong mắt người dùng. Xuất phát từ thực tế trên việc nghiên cứu đề tài này là hoàn toàn cấp thiết. 6.Bố cục của luận văn Mở Đầu: Chương 1: Giới thiệu về SQL Injection Chương 2: SQL Injection và các cách tấn công phổ biến Chương 3: Phòng chống SQL Injection Kết Luận: Kế hoạch dự kiến triển khai đề tài Tài liệu tham khảo 7 CHƯƠNG 1: GIỚI THIỆU VỀ SQL INJECTION 1.1 Đặc trưng của ứng dụng sử dụng cơ sở dữ liệu Hiện nay những ứng dụng phổ biến nhất và chiếm thị phần cũng như doanh thu cao nhất đều là những ứng dụng hổ trợ tính năng quản lý.Dữ liệu là thứ sống còn trong mọi hoạt động nghiệp vụ hiện tại.Chính vì lý do đó, các ứng dụng nghiệp vụ hiện tại đều xây dựng trên những mô hình phát triển gắn liền với cơ sở dữ liệu. An toàn của dữ liệu được đặt nặng lên tính an toàn và bảo mật của ứng dụng Web kết nối tới cơ sở dữ liệu. Các mô hình phát triển ứng dụng Web hiện tại được sử dụng phổ biến nhất là 3-tier, ngoài ra còn có một số bản cải tiến, mở rộng mô hình này nhằm những mục đích riêng. Mô hình ứng dụng 3-tier Các mô hình trên luôn có một số điểm chung, đó là database server chỉ làm nhiệm vụ lưu trữ dữ liệu, database hồi đáp những truy vấn dữ liệu được xây dựng theo chuẩn (ví dụ như SQL). Mọi thao tác xử lý dữ liệu input, output của database server đều được ứng dụng web ở tầng Logic xử lý. Các vấn đề an ninh phát sinh đa phần sẽ nằm ở tầng này. 8 1.2 Tầm quan trọng của các câu lệnh sql đối với một hệ thống web Cơ sở dữ liệu(database) được coi như là "trái tim" của hầu hết các website. Nó chứa đựng những dữ liệu cần thiết để website có thể chạy và lưu trữ các thông tin phát sinh trong quá trình chạy. Nó cũng lưu trữ những thông tin cá nhân , thẻ tín dụng , mật khẩu của khách hàng , của user và thậm chí là cả của Administrator. Để lấy các thông tin cần thiết từ cơ sở dữ liệu thì các câu lệnh SQL sẽ đảm đương trách nhiệm thực hiện các yêu cầu truy vấn được đưa ra từ phía người sử dụng: khi người dùng đăng nhập vào hệ thống, lấy một thông tin nào đó trên web… đều cần sử dụng các câu lệnh SQL, hay nói cách khác, các câu lệnh SQL đóng một vai trò rất quan trọng đối với một hệ thống web. 1.3.Khái niệm sql injection SQL Injection là một kỹ thuật điền vào những đoạn mã SQL bất hợp pháp cho phép khai thác một lỗ hổng bảo mật tồn tại trong cơ sở dữ liệu của một ứng dụng. Lỗ hổng bảo mật này có thể xuất hiện khi ứng dụng không có đoạn mã kiểm tra chuỗi ký tự thoát nhúng trong câu truy vấn SQL hoặc do sự định kiểu đầu vào không rõ ràng hay do lỗi cú pháp SQL của lập trình viên khiến cho một đoạn mã ngoại lai có thể được xử lý ngoài ý muốn. Nó là một ví dụ của sự rủi ro khi một ngôn ngữ lập trình hay ngôn ngữ kịch bản được nhúng trong một ngôn ngữ khác. Tấn công SQL injection còn có thể hiểu là hình thức tấn công chèn bất hợp pháp các đoạn mã SQL. SQL Injection là một dạng tấn công dễ thực hiện, hầu hết mọi thao tác người tấn công cần được thực hiện với một trình duyệt web, có thể kèm theo một ứng dụng proxy server. Chính vì đơn giản như vậy cho nên bất cứ ai cũng có thể học cách tiến hành một cuộc tấn công. Lỗi bắt nguồn từ mã nguồn của ứng dụng web chứ không phải từ phía database, chính vì thế bất cứ thành phần nào của ứng dụng mà người dùng có thể tương tác được để điều khiển nội dung (ví dụ : các form, tham số URL, cookie, tham số referrer, user-agent, …) đều có thể được sử dụng để tiến hành chèn truy vấn có hại. Để hiểu rõ hơn về sql injection chúng ta cùng xem một ví dụ minh họa sau: 9 Khi người sử dụng truy cập vào một website tin tức và click vào một tin có mã số là 1 thì đường dẫn gửi tới máy chủ sẽ có nội dung như sau: Khi đó,để cung cấp nội dung tin số 1 trả về cho người sử dụng,website sẽ truy vấn tới cơ sở dữ liệu để lấy tin.Câu truy vấn SQL do người lập trình viết sẽ có cấu trúc như sau: SELECT* FROM News WHERE Newsld =”+N_ID+” Trong trường hợp này với yêu cầu lấy tin số 1 thì biến N_ID=1.Kết quả câu truy vấn SQL thật tới cơ sở dữ liệu sẽ là: SELECT* FROM News WHERE Newsld =1 Do sơ xuất của lập trình viên trong khi lập trình,không kiểm tra tính hợp lệ của N_ID trước khi thực thi câu truy vấn SQL,hacker có thể lợi dụng để chèn các câu truy vấn nguy hiểm tới cơ sở dữ liệu. Chúng ta có thể thấy phần bôi đậm trong hình minh họa trên là một câu truy vấn độc hại do hacker chèn vào.Câu truy vấn này cũng sẽ được thực thi cùng với câu truy vấn của người lập trình viết và sẽ khiến thông tin trong cơ sở dữ liệu bị xóa. SELECT * FROM News WHERE NewsId = 1; DELETE FROM NEWS WHERE NewsId=2 Dưới đây là các sơ đồ kết nối trong ví dụ trên: Minh họa cho một truy vấn thông thường tới website. 10 Minh họa cho hệ thống tồn tại lỗ hổng SQL Injection Minh họa cho hệ thống không tồn tại lỗ hổng SQL Injection Như vậy có thể thấy,lỗi SQL Injection xẩy ra khi website không được lập trình tốt,bản chất điểm yếu sql injection là xuất hiện từ trong quá trình xử lý dữ liệu input của người dùng bên trong mã nguồn, do chính thời gian bảo trì mã nguồn thường kéo dài nên các lỗi sql injection cũng chậm được khắc phục triệt để. [...]... dụng của cơ sở dữ liệu trong thiết kế Hiểu được kỹ thuật tấn công bằng sql web injection và mức độ - Nghiên cứu hình thức tấn nguy hiểm của kiểu công chèn mã lệnh và lỗ hổng tấn công này bảo mật sql injection 2 12/11/2011 đến 17/11/2011 Đưa ra những phương pháp phòng - Nghiên cứu về các hình thức chống dựa trên tấn công sql injection những kiểu tấn công tìm hiểu được 3 17/11/2011 đến 21/11/2011 Chỉnh sửa... được tấn công SQL Injection cần triển khai một số việc sau:  Không trả về những trang lỗi có thông tin nhạy cảm  Cải thiện dữ liệu nhập vào càng tốt càng có khả năng loại bỏ tấn công  Hạn chế tối đa quyền truy vấn  Thường xuyên kiểm tra, quét ứng dụng bằng những công cụ mới nhất  Dùng lá chắn tốt nhất có thể cho từng lớp tương tác 23 KẾT LUẬN Tấn công kiểu sql injection- tác hại và phòng chống ... vì thế các dạng tấn công nêu trên về cơ bản được các hacker sử dụng khá phổ biến và hiệu quả đối với hầu hết các cơ sở dữ liệu 17 CHƯƠNG 3: PHÒNG CHỐNG SQL INJECTION Như vậy, có thể thấy lỗi SQL injection khai thác những bất cẩn của các lập trình viên phát triển ứng dụng web khi xử lí các dữ 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 và cách cấu hình... SELECT TOP 1 FieldName FROM TableName 15 2.4 Dạng tấn công sử dụng Stored-procedures Stored Procedure được sử dụng trong lập trình web với mục đích nhằm giảm sự phức tạp trong ứng dụng và tránh sự tấn công trong kỹ thuật sql injection. Tuy nhiên những kẻ tấn công vấn có thể lợi dụng những stored procedure để tấn công vào hệ thống.Việc tấn công này sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền... nhạy cảm Do vậy việc tấn công bằng cách sử dụng từ khoá UNION hay tấn công dựa vào thông báo lỗi không thể thực hiện Trong trường hợp này thì kẻ tấn công sẽ 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 nhưng kẻ tấn công có thể thấy được kết quả thông qua mã trạng thái HTTP hoặc kết quả của câu truy vấn Cách tấn công Normal Blind... 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ệ 12 2.2 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. .. nhập sâu hơn vào trong mạng lưới của tổ chức sở hữu ứng dụng web đang tấn công. Chúng ta xét một số phương pháp tấn công thông thường nhằm phục vụ hai mục đích trên bao gồm: vượt qua kiểm tra lúc đăng nhập (authorization bypass), sử câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng các Stored-Procedures,sử dụng Blind SQL Injection 2.1 Dạng tấn công vượt qua kiểm tra đăng nhập Với dạng tấn công này, tin... sp_login gồm hai tham số là username và password, nếu kẻ tấn công nhập: Username : thanhcong Password : ‘ ; shutdown- Lệnh gọi stored procedure như sau: Exec sp_login ‘thanhcong’,‘’;shutdown- -’ Lệnh shutdown thực hiện dừng sql server ngay lập tức 2.5 Dạng tấn công sử dụng Blind SQL Injection Một số ứng dụng Web đã được thiết kế xử lý lỗi khá tốt và về cơ bản kẻ tấn công không thể thấy được các thông... đoạn hiện nay khi Việt Nam đang tiến hành các chính sách công nghiệp, hóa hiện đại hóa đất nước,đẩy mạnh công nghệ thông tin,đưa tin học vào cuộc sống,việc thiết lập website riêng,quản lý và bảo vệ chúng cho các công ty càng trở nên là nhu cầu thiết yếu Với tính nghiêm trọng của các cuộc tấn công, tính dễ thực hiện một cuộc tấn công đã khiến cho SQL Injection trở thành mối hiểm họa nghiêm trọng đối với...CHƯƠNG 2: SQL INJECTION VÀ CÁC CÁCH TẤN CÔNG PHỔ BIẾN Các cuộc tấn công nhắm tới lớp database của ứng dụng web xét theo mục đích được chia làm hai loại chính: thứ nhất là nhắm tới dữ liệu chứa trong database, thứ hai là nhắm tới chính bản thân database.Trường hợp thứ nhất thường là kẻ tấn công nhắm tới các thông tin có giá trị như thông tin cá nhân,thông tin tài chính… trường hợp thứ hai thì kẻ tấn công

Ngày đăng: 01/09/2015, 09:15

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan