[PHP] Khai thác lỗ hổng của chức năng download file
Lời nói đầu Mình viết bài này chỉ để nêu ra lỗ hổng khi code chứ không mang mục đích hướng dẫn hacking, do đó Nếu có gà thì mong đừng gạch đá, tội nghiệp. Nếu có hack thì vui lòng đừng mang mình ra làm bia đỡ đạn nếu bị bắt. :( Có thể "chiêu trò" này nhiều người cũng đã biết rồi. :) ...
Lời nói đầu
Mình viết bài này chỉ để nêu ra lỗ hổng khi code chứ không mang mục đích hướng dẫn hacking, do đó
- Nếu có gà thì mong đừng gạch đá, tội nghiệp.
- Nếu có hack thì vui lòng đừng mang mình ra làm bia đỡ đạn nếu bị bắt. :(
Có thể "chiêu trò" này nhiều người cũng đã biết rồi. :)
Mổ tả sơ lược về lỗi
Hiện nay, vẫn còn một số trang web vẫn cho download dạng http://example.com/download.php?file=path/to/file/to/download.ext. Đồng thời, không hề kiểm tra định dạng file cho download. Nên hacker có thể download được cả những file php, nhất là những file cấu hình.
Không khó để kiếm ra được những trang có lỗi như vậy, các bạn chỉ cần lên Google tìm kiếm từ khóa như sau inurl:download.php?file= site:vn là sẽ ra rất nhiều trang. site:vn là tìm trong các trang có tên miền là .vn, còn inurl dùng dể tìm trong đường dẫn của web. Lý do mình thêm site:vn là rất nhiều trang ở Việt Nam đang dính lỗi này.
Các bước khai thác lỗi
Lấy file index.php:
Xem link download, dự đoán đường dẫn các file cần lấy. Ví dụ link download là http://example.com/download.php?file=hinhanh.jpg, các bạn có thể thay thế file hinhanh.jpg bằng index.php hoặc dự đoán thêm các kiểu đường dẫn tương đối (../index.php, ../../index.php)để có được file index.php.
Lấy file cấu hình
Sau khi lấy được file index.php, thông thường sẽ có được 1 trong 2 loại sau:
- Thông tin của Framework/CMS trang web đang sử dụng. Nếu chưa biết về Framework/CMS đó thì nên download source hoặc tìm cách nào đó biết được thư mục config.
- Nếu là tự code thì sẽ có những file được gọi vào thông qua include, include_once, require, requireonce,..._
Có thể lấy càng nhiều file thì càng có nhiều thông tin.
Tấn công vào database
Sau khi lấy được các file cấu hình, thì thông thường nhất sẽ có cấu hình của database. Đối với những website nằm trên shared host thì thông thường là có phpmyadmin. Còn đối với những website tự host, thì có thể họ chỉ cho kết nối thông qua Client tool như Navicat, MySQL Workbench,...
Khi kết nối vào database, các bạn có thể xem các thông tin khác trong database đó hoặc có thể xem web mã hóa mật khẩu như thế nào mà có thể thử tạo tài khoản trang quản lý mà đăng nhập vào, tiếp tục khai thác.
Kết
Hồi trước đến giờ, mình từ hack được một trang. Lý do mà hack một trang là như sau: tò mò nghiên cứu --> hack thử --> thành công --> xong thì chẳng biết khai thác cái gì, thấy cũng không vui lắm --> nghỉ khỏe.
Trên mạng thì có rất nhiều trang có thể hack được bằng phương pháp này, mong rằng khi các bạn làm theo bài viết này, có thành công thì nên báo cho chủ website biết và đừng chôm gì của họ.
Cuối cùng như ban đầu nói, có gì đừng lôi mình ra nha. :(