Sé que los shells se pueden cargar a través de inyección de SQL, la inclusión remota de archivos y la explotación del propio mecanismo de carga de la aplicación web. ¿Hay otras formas de cargar un shell en un sitio web y poder ejecutar comandos?
No solo tiene que preocuparse por la capacidad del usuario para cargar un shell, sino también por la explotación de su código para lograr lo mismo. Hay muchos, muchos sitios web por ahí que utilizan comandos PHP como exec()
en los datos enviados por el usuario (desde $ _POST o $ _GET) sin hacer ningún tipo de validación en ellos. Estos problemas se pueden combatir mediante el escape adecuado de información no confiable antes de usarla en la línea de comandos, o refactorización para evitar tener que usar el shell del sistema (tal vez pueda habilitar el Modo seguro y deshabilitar funciones peligrosas como estas en producción).
Otro método además de los que mencionó en términos de carga archivada maliciosa real es el Solicitud HTTP PUT .
Lea otras preguntas en las etiquetas web-application file-upload