Tìm hiểu các vấn đề bảo mật trong PHP

15 784 0
Tìm hiểu các vấn đề bảo mật trong PHP

Đ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ùng với sự phát triển của công nghệ thông tin, công nghệ mạng máy tính và sự phát triển của mạng internet ngày càng phát triển đa dạng và phong phú. Các dịch vụ trên mạng đã thâm nhập vào hầu hết các lĩnh vực trong đời sống xã hội. Các thông tin trên Internet cũng đa dạng về nội dung và hình thức, trong đó có rất nhiều thông tin cần đuợc bảo mật cao hơn bởi tính kinh tế, tính chính xác và tính tin cậy của nó. Bên cạnh đó, các hình thức phá hoại mạng cũng trở nên tinh vi và phức tạp hơn. Do đó đối với mỗi hệ thống, nhiệm vụ bảo mật đuợc đặt ra cho nguời quản trị mạng là hết sức quan trọng và cần thiết. Xuất phát từ những thực tế đó, chúng ta sẽ tim hiểu về các cách tấn công phổ biến nhất hiện nay và các phòng chống các loại tấn công này. Chính vì vậy, thông qua việc nghiên cứu một số phuơng pháp tấn công và cách bảo mật các lọa tấn công này, chúng em mong muốn góp một phần nhỏ vào việc nghiên cứu và tìm hiểu về các vấn đề an ninh mạng giúp cho việc học tập và nghiên cứu. Trong nội dung của bài này, chúng em sẽ trình bày những tìm hiểu về: • SQL Injection (SQLi) • Crosssite Scripting (XSS) • Các phương pháp tấn công khác Trong phần Demo, chúng em sẽ demo về tấn công SQL Injection trên thực tế có Video chứng minh cụ thể.

TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP TĂNG CƯỜNG MÔN PHÁT TRIỂN ỨNG DỤNG WEB TÌM HIỂU CÁC VẤN ĐỀ BẢO MẬT TRONG PHP (CÓ DEMO) Người hướng dẫn: ThS VŨ ĐÌNH HỒNG Người thực hiện: Lưu Đức Thông – 51303407 Trần Ngọc Quốc Phong - 51303365 Lớp : 13050303 Khóa : 17 THÀNH PHỐ HỒ CHÍ MINH, NĂM 2016 LỜI CẢM ƠN Chúng em xin gửi lời cảm ơn chân thành đến ThS Vũ Đình Hồng, giảng viên môn Phát triển Ứng dụng Web – trường Đại học Tôn Đức Thắng, người tận tình hướng dẫn, bảo em suốt trình làm tập Chúng em xin chân thành cảm ơn thầy cô giáo trường Đại học Tôn Đức Thắng nói chung, thầy cô Bộ môn Mạng máy tính nói riêng dạy dỗ cho chúng em kiến thức môn đại cương môn chuyên ngành, giúp chúng em em có sở lý thuyết vững vàng tạo điều kiện giúp đỡ chúng em suốt trình học tập Cuối cùng, chúng em xin chân thành cảm ơn gia đình bạn bè, tạo điều kiện, quan tâm, giúp đỡ, động viên chúng em suốt trình học tập hoàn thành tập Thành phố Hồ Chí Minh, ngày 29 tháng 04 năm 2016 Sinh Viên Thực Hiện Trần Ngọc Quốc Phong Lưu Đức Thông ĐỒ ÁN ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG Tôi xin cam đoan sản phẩm đồ án riêng / hướng dẫn ThS Vũ Đình Hồng Các nội dung nghiên cứu, kết đề tài trung thực chưa công bố hình thức trước Những số liệu bảng biểu phục vụ cho việc phân tích, nhận xét, đánh giá tác giả thu thập từ nguồn khác có ghi rõ phần tài liệu tham khảo Ngoài ra, đồ án sử dụng số nhận xét, đánh số liệu tác giả khác, quan tổ chức khác có trích dẫn thích nguồn gốc Nếu phát có gian lận xin hoàn toàn chịu trách nhiệm nội dung đồ án Trường đại học Tôn Đức Thắng không liên quan đến vi phạm tác quyền, quyền gây trình thực (nếu có) TP Hồ Chí Minh, ngày 29 tháng 04 năm 2016 Tác giả (ký tên ghi rõ họ tên) Trần Ngọc Quốc Phong Lưu Đức Thông PHẦN XÁC NHẬN VÀ ĐÁNH GIÁ CỦA GIẢNG VIÊN Phần xác nhận GV hướng dẫn _ _ _ _ _ _ _ Tp Hồ Chí Minh, ngày tháng năm (kí ghi họ tên) Phần đánh giá GV chấm _ _ _ _ _ _ _ Tp Hồ Chí Minh, ngày tháng năm (kí ghi họ tên) TÓM TẮT 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 đuợc 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 đuợc đặt cho nguời quản trị mạng quan trọng cần thiết Xuất phát từ thực tế đó, tim 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ố phuơng pháp công cách bảo mật lọa công này, chúng em 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 Trong nội dung này, chúng em trình bày tìm hiểu về: • SQL Injection (SQLi) • Cross-site Scripting (XSS) • Các phương pháp công khác Trong phần Demo, chúng em demo công SQL Injection thực tế có Video chứng minh cụ thể Mục lục CHƯƠNG 1: SQL INJECTION 1.1 Giới thiệu SQL Injection kiểu công phổ biến Bằng cách chèn mã lệnh SQL vào cổng trước website, bạn đăng nhập mà không cần username password Từ điều khiển từ xa, dump liệu lấy root SQL server Công cụ dùng để công trình duyệt web Ví dụ, Internet Explore, Netscape, Lynx, Moxilla Firefox,Safari… SQL injection kỹ thuật cho phép kẻ công lợi dụng lỗ hổng việc kiểm tra liệu đầu vào ứng dụng web thông báo lỗi hệ quản trị sở liệu trả để inject (tiêm vào) thi hành câu lệnh SQL bất hợp pháp SQL injection cho phép kẻ công thực thao tác, delete, insert, update,… sở liệu ứng dụng, chí server mà ứng dụng chạy, lỗi thường xảy ứng dụng web có liệu quản lý hệ quản trị sở liệu SQL Server, MySQL, Oracle, DB2, Sysbase 1.2 Một số mệnh đề chung 1.2.1 Mệnh đề SQL Hầu hết kiểu công SQL Injection sử dụng mệnh đề SQL Attacker kiểm tra SQL mệnh đề WHERE kết hợp WHERE với mệnh đề UNION, INTERSECT, MINUS Qúa trình chứng thực đăng nhập website thường sử dụng câu lệnh: Lợi dụng câu lệnh trên, Attacker sử dụng mệnh đề sau:username = ‘bob’ and SELECT * FROM users WHERE PASSWORD = ‘mypassword’ Attacker lợi dụng lệnh UNION để thực thi mệnh đề SQL hàng bảng khác Ứng dụng web sử dụng truy vấn sau để trả danh sách mục có: SELECT * FROM users WHERE username = ‘bob’ and Attacker biến đổi truy vấn thành: SELECT all_products WHERE PASSWORD product_name = ‘mypassword’FROM or ‘a’ = ‘a’ Bạn áp dụng cách tương tự để thực thi cho nhiều ứng dụng khác product_name like ‘%Chairs%’ SELECT product_name product_name like FROM all_products ‘%Chairs%’ UNION WHERE SELECT username FROM dba_users WHERE username like ‘%’ 1.2.2 Mã Injection Tấn công mã Injection thực cách thêm mệnh đề lệnh SQL vào đối tượng SQL tồn Loại công áp dụng SQL Server Mệnh đề EXECUTE thường sử dụng cho kiểu công Nhiều ngôn ngữ lập trình cho phép mệnh đề SQL thực Như PL/SQL Java, ta thực khối nặc danh PL/SQL Ví dụ sau sứ dụng khối PL/SQL ứng dụng Web: Attacker ứng dụng câu lệnh sau: BEGIN ENCRYPT_PASSWORD(‘bob’, BEGIN DELETE ENCRYPT_PASSWORD(‘bob’, FROM users WHERE ‘mypassword’); mypassword’) ; upper(username) = upper(‘admin’); END; 1.2.3 Gọi hàm Injection Phương pháp gọi hàm Injection thường áp dụng sở liệu Oracle Một số hàm thường chứa mệnh đề có điểm yếu cao Nó gọi để sử dụng lời gọi hệ thống mệnh đề liệu Các hàm thực phần mệnh đề SELECT, tự thay đổi sở liệu trừ có hàm “PRAGMA TRANSACTION" sử dụng Ngoài ra, để kiểm tra liệu, bạn sử dụng mệnh đề INSERT, UPDATE DELETE Ví dụ: SELECT TRANSLATE (‘user inout’, Mệnh đề SQL điểm yếu để dẫn tới kiểu công ‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’, Injection khác, dễ dàng thực thông qua kiểu công gọi ‘0123456789’) FROM dual; hàm Injection Attacker biến đổi mệnh đề SQL thành: SELECT TRANSLATE (‘’|| UTL_HTTP.REQUEST(‘http://192.168.1.1/’) || ‘’,‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’,‘01234 56789’) FROM dual; Mệnh đề SQL thay đổi, yêu cầu website từ Web Server, Attacker thực URL hàm khác để tìm thông tin từ server sở liệu Ví dụ,một ứng dụng có tên MYAPPADMIN, gọi hàm “PRAGMA TRANSACTION" để ghi thông tin vào sở liệu mệnh đề SELECT SELECT TRANSLATE (‘’ || myappadmin Thực mệnh đề SQL trên,Attacker tạo ứng dụng người adduser(‘admin’, ‘newpass’) || ‘’, dùng ‘0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ’, 1.3 Phương pháp phòng tránh 1.3.1 Kết buộc biến ‘0123456789’) FROM dual; Cách tốt để loại bỏ SQL Injection sử dụng kết buộc biến, thực việc lập trình ứng dụng Mã ứng dụng chuẩn yêu cầu kết buộc tất biến mệnh đề SQL Không sử dụng mệnh đề SQL mà tạo việc ghép nối chuỗi tham số Kết buộc biến sử dụng cho mệnh đề SQL nơi mệnh đề SQL gọi Một công SQL Injection phức tạp khai thác ứng dụng việc lưu trữ chuỗi công sở liệu mà thực sau mệnh đề SQL động 1.3.2 Thông qua cổng đăng nhập Tại cổng đăng nhập, lập trình viên phải tạo bẫy lỗi để ngăn chặn đăng nhập không hợp lệ Loại bỏ trích dẫn đơn Các biến phải kết buộc chặt chẽ 1.3.3 Hàm bảo mật Các hàm sở liệu chuẩn bị lợi dụng để công SQL Injection Oracle có nhiều hàm chuẩn, cung cấp mặc định thư viện PUBLIC, ứng dụng thêm vào hàm để thay đổi password tạo users phục vụ cho hình thức xâm nhập công Ngoài ra, tất chức không cần thiết phải hạn chế ứng dụng 1.3.4 Các thông điệp báo lỗi Nếu Attacker không xem mã nguồn ứng dụng thông báo lỗi trở nên nguy hiểm tạo hội cho Attacker công hệ thống Chính hầu hết ứng dụng Java không đưa chi tiết thông báo lỗi 1.3.5 Lọc ký tự đặc biệt Sử dụng hàm sau để lọc ký tự đặc biệt để xử lý đầu vào Function RemoveBad(strTemp){ strTemp= strTemp.replace (/\|\"|\'|\%|\;|\(|\)|\&|\ +|\-/g,""); return strTemp; 1.3.6 Ngăn chặn MySQL Injection PHP Đặc biệt MySQL PHP, xây dựng hàm riêng để truyền an toàn câu truy vấn SQL Lưu ý: File đính kèm thư mục SourceCode/sqlsafe.php [...]... Cross-Site Scripting (XSS) là một trong những kĩ thuật tấn công phổ biến nhất hiện nay (theo thống kê OWASP TOP 10 2013), đồng thời nó cũng là một trong những vấn đề bảo mật quan trọng đối với các nhà phát triển web và cả những nguời sử dụng web Bất kì một website nào cho phép nguời sử dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các đoạn mã nguy hiểm thì đều có thể tiềm ẩn các lỗi XSS Mã Cross – Site...1.3.6 Ngăn chặn MySQL Injection trong PHP Đặc biệt đối với MySQL và PHP, chúng ta có thể xây dựng một hàm riêng để truyền an toàn hơn các câu truy vấn SQL Lưu ý: File này đã được đính kèm trong thư mục SourceCode/sqlsafe .php < ?php function sql_safe($value,$allow_wildcards = true, $detect_numeric = true) { $return_value = clone $value;... cách chèn vào Website động (ASP, PHP, CGI, JSP…) các thẻ HTML hay những đoạn mã script nguy hiểm có thể gậy hại cho người sử dụng khác Trong đó, những đoạn mã nguy hiểm được viết bằng các ngôn ngữ như: JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML XSS cho phép Attacker chèn các đoạn mã vào liên kết của đường dẫn, để thực thi trên trình duyệt của người dùng, dẫn đến việc mất cookie, mật. .. mã và chạy nó 8 Nếu đoạn mã này bảo trình duyệt gửi những thông tin lưu trong Cookie của người dùng đến máy tính của hacker thì nó cũng thực hiện một cách nhanh chóng 9 Sau cùng,thông tin về Cookie của nạn nhân sẽ được xsecurity sở hữu 2.3 Phương pháp phòng tránh − Bạn phải luôn xác nhận tính hợp lệ của tất cả các headers, cookies, các chuỗi truy vấn ,các trường form, các trường ẩn Tuyệt đối không duyệt... thông báo nào nếu không biết rõ nguồn gốc − Áp dụng các chính sách bảo mật nghiêm ngặt − Lọc các Scripts ở đầu ra hay ngăn chặn trực tiếp các XSS truyền tải đến người dùng CHƯƠNG 3: CÁC HÌNH THỨC TẤN CÔNG KHÁC 3.1 Khai thác Cookie 3.1.1 Giới thiệu Khi Cookie bị nhiễm một đoạn mã nguy hiểm hay một chương trình gián điệp nào đó thì Attacker có thể khai thác các thông tin được gửi về và sử dụng những thông... duyệt các thư mục và tập tin hơn mức truy cập ứng dụng thông thường Tấn công sẽ để lộ ra cấu trúc thư mục của ứng dụng và thường xảy ra ở Web Server và hệ điều hành Attacker có thể thống kê nội dung truy cập các trang nhạy cảm và lấy những thông tin bảo mật, xác định mã nguồn, chỉnh sửa nội dung Website,… 3.2.2 Phương pháp phòng tránh − Định nghĩa các nguồn truy cập để các vùng trên Website được bảo. .. tránh − Định nghĩa các nguồn truy cập để các vùng trên Website được bảo vệ − Nhanh chóng vá các lỗi Unicode về duyệt thư mục − Web Server luôn phải cập nhật kịp thời để vá các lỗi mới được phát hiện TÀI LIỆU THAM KHẢO 1 Từng bước khám phá an ninh mạng (2) – Vũ Đình Cường – trang 121 2 Cách thức tấn công và bảo mật website 3 XSS Cơ Bản – Mark - NBTA ... session hay fishing lừa đảo hay chèn virus,… Xuất hiện khi Attacker sử dụng ứng dụng Web để gửi các mã nguy hiểm, phương thức thường được sử dụng là JavaScript Các cuộc tấn công được bắt nguồn ở những nơi mà các đoạn mã được chèn vào, ví dụ như: Cơ sở dữ liệu của Server mục tiêu hay thông điệp mail Từ việc thu thập các thông tin ở Cookie của người dùng, Attacker có thể sẽ lấy được thông tin tài khoản hay... tâm (sử dụng mồi nhử bằng cách gửi thư rác) 3 Một URL từ xsecurity có thể như sau: 4 Khi người dùng nhấp vào liên kết này Website sẽ rất thân thiện chào đón, xxx.xsecurity.com/default .php? nhưng thay vì hiển thị thông tin, Website hiển thị thông báo “Chào mừng name=evilScript() bạn quay lại!” 5 Chuyện gì đã xảy ra với tên của bạn? Bằng cách nhấp vào liên kết trong mail, bạn đã nói cho... được Trojan gửi về từ những người dùng bị theo dõi Attacker sẽ sửa đổi nội dung của các tập tin này và sử dụng cho mục đích xâm nhập Kiểu tấn công này thường nhằm vào: Web Server, Server ứng dụng và các ứng dụng Web 2.2 Phân tích một kịch bản (scenario) tấn công XSS 1 Hacker nhận thấy Website xsecurity nào đó đang chứa các lỗi về mã cross – site 2 Hacker gửi một email và yêu cầu người dùng nhấp vào

Ngày đăng: 17/05/2016, 21:33

Từ khóa liên quan

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

Tài liệu liên quan