Seguramente por deformación profesional, uno de mis pasatiempos preferidos cuando descubro una nueva web, es mirar sus vulnerabilidades.
Hasta ahora me entretenía con Inyección SQL y XSS, pero poco a poco han ido perdiendo su gracia, y es que debido a un mayor cuidado de los desarrolladores, pero sobre todo a los mecanismos de control que proveen los frameworks, y servidores web es cada vez más difícil encontrar vulnerabilidades de estos tipos.
Afortunadamente, una nueva prueba me vino a la mente, y es la que ahora más me entretiene. Se trata de probar los uploads que se hacen desde campos HTML de tipo input file, para subir un script que soporte el servidor, ya sea PHP, ASP.NET, ASP, Perl, …
No quiero dar demasiadas pistas, pero es bastante sencillo saber cuál soporta cada uno. Una vez subido, lo más probable es que ese archivo se guarde en alguna carpeta del servidor web. Tipicamente se utiliza para subir imágenes que son visibles en la web, por lo que al final, queda accesible, y probablemente puede ser ejecutado.
Así que como consejo, aseguraros de que antes de hacer un move_uploaded_file o equivalente, que le de visibilidad, hayáis comprobado que el tipo de archivo es el que debe ser, y que no va a acabar siendo ejecutado por el servidor web.