Hướng dẫn tấn công website
Một số kỹ thuật tấn công web mà hacker hay sử dụng để lấy cắp thông tin, phá hỏng dữ liệu trên hệ thống đó là:
I. Cách thực hiện1. XSSCho phép kẻ tấn công nhúng mã đọc Javacsript, VBScript, ActiveX, HTML, hoặc Flash vào một trang năng động, dễ bị đánh lừa người sử dụng, thực hiện kịch bản trên máy tính của mình để thu thập dữ liệu. Kỹ thuật này không tấn công vào CSDL hệ thống như SQL injection mà chúng tấn công trực tiếp từ phía người dùng bằng cách xâm nhập hệ thống bằng các đoạn mã đơn giản để lấy cắp cookies và session từ đó chúng có thể thao túng người dùng cướp quyền truy cập tài khoản mà không cần tới mật khẩu.
Từ những điều này có thể thấy Stored XSS nguy hiểm hơn Reflected XSS rất nhiều, đối tượng bị ảnh hưởng có thế là tất cả nhưng người sử dụng ứng dụng web đó. Và nếu nạn nhân có vai trò quản trị thì còn có nguy cơ bị chiếm quyền điều khiển web. 2. CSRFTấn công sử dụng kỹ thuật này dành cho người am hiểu về hệ thống, có thể đã từng phát triển hệ thống đó, hoặc một mã nguồn mở, hoặc một mã nguồn nào đó đã được công khai code. Hacker thực hiện gửi tin nhắn dến Admin, khi admin đọc tin nhắn này trình duyệt sẽ request đến link đó và lấy cookie của trình duyệt và tiến hành active. Trường hợp không gửi được mail, giả sử ta biết rằng admin đang login hacker có thể send 1 trang web mà hacher lập ra, trong đó có đoạn code độc hại rồi send qua yahoo hay gì gì đó, khi đó admin viếng thăm vào và thực hiện các thao tác trên. Như vậy hacker thực hiện một truy vấn trái phép dựa vào chính người dùng 3. SQl InjectionChắc hẳn các bạn đã biết mô hình hoạt động của website rồi nhỉ? Khi một request được gửi từ client thì ngôn ngữ SERVER như PHP sẽ lấy các thông tin từ request đó. Nhưng bản thân nó không hề phát hiện ra những thông tin đó có chứa những câu SQL độc, vì thế công việc này ta phải đổ trách nhiệm tới kinh nghiệm của lập trình viên. - Giả sử tôi có một trang đăng nhập với hai thông tin là tên đăng nhập và mật khẩu. Và đoạn code xử lý tấn công sql injection của tôi có dạng như sau: Nếu nhập ” ‘ OR 1=1″ vào ô text user và pass thì câu lệnh SQL sẽ có dạng: `SELECT * FROM T_USERS WHERE username=” OR 1=1 and password=” OR 1=1;` Chạy câu truy vấn này lên thì kết quả nó trả về là danh sách user nên nếu code cùi cùi thì login được luôn.Trên đây là một ví dụ điển hình thôi, chứ thực tế thì hacker còn rất nhiều mưu mẹo khác. Tuy nhiên chung quy lại với kỹ thuật tấn công SQL Injection ta vẫn có thể không chế được nó. II. Cách phòng chống:1. XSSCách phòng chống tốt nhất XSS là theo nguyên tắc filter input và escape output. Để làm việc này thì hiện tại có khá nhiều bộ lọc để chúng ta lựa chọn. Dựa vào cách khắc phục đó bạn có thể dùng một thư viện viết bằng PHP cho phép filter HTML để ngăn chặn kẻ xấu post mã độc XSS thông qua website của bạn. Thư viện có sẵn đó là HTML Purifier. Đây là bộ thư viện rất mạnh dùng triển kahi trong code của mình để chống XSS. Được xây dựng theo mô hình ÔP nên sử dụng rất dễ, sau thao tác include file thư viện, chỉ cần tạo instance của đối tượng HTML Purifier và gọi phương thức purify() là có thể filter được dữ liệu đầu vào 2. CSRFThông thường để tránh tấn công ta sẽ chia làm hai đối tượng, một là đối tượng coder và hai là đối tượng người dùng cuối (user). - Với đối tượng người dùng cuối thì: - Hạn chế sử dụng login vào hệ thống khi nói chuyện tiếp xúc với những người lạ qua các kênh khác nhau, những email không rõ nguồn gốc. Khi không dùng hệ thống thì lập tức logout. - Nên login vào một máy riêng và không cho người thứ 2 tiếp xúc với máy đó. - Thay đổi mật khẩu liên tục, và chọn những mật khẩu khó đoán, có kỹ tự đặc biệt. Vì hiện nay có rất nhiều phần mềm dò pass. - Với đối tượng coder: - Thực hiện tạo những token auto và random với từng máy, từng trình duyệt và thiết lập thời gian sống cho token đó. - Không sử dụng phương thức GET với những request mà có ảnh hưởng đến CSDL. - Khi lấy dữ liệu từ người dùng thì kiểm tra chặt chẽ. - URL trong admin càng khó nhớ càng bí hiểm càng tốt. 3. SQL Injection
Trên đây là 3 cách mà hacker thường dùng để có thể xâm nhập vào hệ thống. Vì vậy Coder thì nên biết để phòng tránh và Tester nên biết để tìm ra các lỗi này để hacker khó có thể xâm nhập được vào hệ thống. |