Karena saya dapat mengompres file pada mac saya, saya berasumsi ini adalah file zip nyata dan bukan hanya sesuatu seperti file php berganti nama.
Meskipun Anda mungkin benar dalam kasus ini, asumsi Anda mungkin tidak selalu berlaku. Arsip ZIP tetap valid bahkan jika Anda menambahkan data acak ke dalamnya , jadi sangat mungkin untuk membuat file yang secara bersamaan merupakan arsip ZIP yang valid yang berisi data tidak bersalah dan juga skrip PHP berbahaya. Bahkan tidak terlalu sulit; hanya menyatukan kode PHP dan file ZIP, dan pastikan (misalnya menggunakan __halt_compiler()
) bahwa PHP tidak akan mencoba menguraikan data arsip ZIP yang ditambahkan.
Trik ini secara sah digunakan untuk membuat file ZIP yang diekstraksi sendiri, tetapi sangat mungkin untuk menambahkan data tersembunyi lainnya atau kode yang dapat dieksekusi ke dalam file ZIP dengan cara yang sama. Beberapa program mungkin menolak untuk membuka file ZIP yang dimodifikasi tersebut (tetapi jika demikian, mereka secara teknis melanggar spesifikasi format ZIP), atau mereka mungkin mengidentifikasi file tersebut sebagai sesuatu selain file ZIP secara default, tetapi umumnya, jika Anda memberi makan file ke dalam kode yang mengharapkan file ZIP, itu mungkin akan diterima sebagai satu.
Penggunaan trik semacam itu yang lebih umum adalah untuk menyamarkan kode eksploit dalam wadah berbasis ZIP (mis. File JAR) sebagai sesuatu yang tidak berbahaya (seperti gambar GIF, seperti pada eksploit GIFAR ), tetapi tidak ada alasan mengapa hal itu tidak dapat dilakukan. digunakan di arah lain juga, misalnya untuk memotong filter upload file naif yang melarang mengunggah skrip PHP tetapi memungkinkan file ZIP, tanpa memeriksa apakah file yang diunggah mungkin keduanya pada saat yang sama.