Trước khi viết một loạt các bài viết về Tấn công và bảo mật website HY xin có một số ý kiến
1. Hy không phải là coder nên phần code có thể không nắm rõ thuật ngữ hay cơ chế hoạt động bên trong của 1 hệ thống một cách kỹ càng
2. Kiến thức là đi học hay tìm hiểu mà có, nên có thể là kiến thức đã cũ hay trùng lặp đâu đó
3. Các bạn tuyệt đối không sử dụng để đi tấn công bất kỳ một hệ thống nào mà GÂY HẠI đến nó
Chúng ta có thể bắt đầu
Bài 1 : Thao tác trên tham số truyền Get hoặc post
Một số Code lập trình có tham số victim.com/admin.php?username=ABC&newpass=xxxx cho phép user đổi pass mới mà không check các tham số session, Oldpass hay authentication, ta có thể mò được tham số truyền này để đổi password của admin hay user bằng cách gõ victim.com/admin.php?usename=ABC&newpass=123456 với 123456 là password mới cần đổi
Ví dụ điển hình :
1. Snitz forum 3.0.4 cho phép change password bất kỳ ID nào thông qua 1 form change pass do forum cung cấp qua email của attacker đăng ký bằng 1 nick bình thường
2. Hệ thống Yahoo
Yahoo domain đã có 1 sơ hở trên add_access_results.php cho phép ta có thể add quyền quản lý domain của bất kỳ domain nào trên Yahoo sang ID của ta bằng tham số truyền
https://bill.sbs.yahoo.com/add_access_results.php?d=domain.com&...
Ví dụ domain http://www.spendingspending.com
….
Cách khắc phục :
- Ứng dụng cơ chế bảng băm (hash table), tức là mỗi 1 username sẽ được kèm 1 theo 1 biến hash lưu trong data, mỗi khi người dùng đăng nhập sẽ có 1 hash đi kèm và sẽ so sánh trên csdl để đảm bảo username này là hợp lệ, và sẽ tránh được các request thực thi khi không có hash.