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
- Website cho phép upload image or zip
- Nén file a.txt thành a.zip sau đó upload, server sẽ giải nén và sau khi truy cập sẽ chuyển tới url
- Sau khi giải nén sẽ lấy luôn tên file bên trong và gán content bằng file_put_content() mà không hề filter file name
Từ những dữ kiện trên ta có thể zip 1 file có tên file chứa ../ để chuyển file ra document_root và có nội dung là code php để sau khi server giải nén có thể ta có thể execute file -> Có thể RCE
- Tạo file hello.php
- Sử dụng tool evilarc để nén tên file ../../hello.php thành hello.zip, nếu không sử dụng tool thì khó có thể nén được file kèm theo ../ phía trước
- Gọi đến file thành công, cần chuyển file ra document root vì có thể trong folder upload đã bị cấm thực thi các file php, nhưng đây là website biết bằng php nên chắc chắn không thể tất cả các folder đều bị cấm thực thi code php -> Điều đó là vô lí.