Mục Tiêu
- Chiếm quyền điều khiển server và đọc một tập tin bí mật ở thư mục gốc (đường dẫn /)
Attack
- Ban đầu cần create a account
- Có thể upload file
- Tên file không hề được filter nhưng sau khi lưu sẽ được đổi thành avarta.jpg
File sẽ tồn tại ở folder document_root/upload/name/avatar.jpg
Ta thấy có 1 đoạn code load game bằng include với biến $game là untrusted data không hề được sàng lọc
- Thay đổi biến game gây ra lỗi server để tìm ra document_root
- Include statement sẽ thực thi code php trong file nếu có, sau đó return result
Từ những dữ kiện trên ta có thể upload file bất kì nhưng có nội dung là đoạn code php lên server sau đó lợi dụng việc load game để thay đổi biến $game kết hợp với path traversal để thực thi file vừa upload do include statement thực hiện
- Upload file bất kì
- Sử dụng path traversal để gọi tới file vừa upload