shell archivo.php.jpg se ejecuta sin problemas

Iniciado por Camarografo77, 12 Marzo 2014, 03:08 AM

0 Miembros y 1 Visitante están viendo este tema.

Camarografo77

Hola, iré al grano... subi una shell que renombre archivo.php.jpg a un upload de archivos pero no tuve que hacer nada para bypasearlo y obvio que subio porque aparentemente es un archivo de "imagen" válido por su extensión final, pero cuando fui a verlo por su url: http://hosting.com/imagenes/archivo.php.jpg me muestra la shell sin problemas.

La carpeta y la raiz del sitio NO tienen ningún archivo .htaccess que permita ejecutar otras extensiones como php, y no solo eso, he subido otro archivo con un phpinfo y lo renombre: algo.php.txt.pdf y también me muestra el phpinfo completo.

Estuve investigando y vi que esto se debe a una configuración por defecto del servidor apache
http://www.php.net/manual/es/install.unix.apache2.php (punto #8)
pero no llego a entender como evitar todo esto.

Así que fuí a ver el archivo /etc/httpd/conf.d/php.conf de la web que tengo la shell (solo con fines educativos, no pienso hacer ningún deface)  y tiene esta config:



#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps



Y al parecer esta todo en orden, se ejecuta php solo a la extensión necesaria, aunque este usuario dice lo contrario pero no llega a la solución: URL

Así que me preguntaba, como podría solucionar este problema? que debo modificar??... claro que no puedo fixear este hackedhost por permisos pero quiero saber la solucion por si si algún jefe me lo pregunta o por si en el futuro me toca un hosting con esta configuración.

PD: agradecería leer solo soluciones de configuración del servidor apache o similar, filtros de php con librerias gd las leí todas y las aplico a diario.

Saludos.


engel lex

usa gd para leer el archivo y abrirlo... el lo intentará abrir en memoria leyéndolo como una imagen, si falla, no es una imagen valida
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Camarografo77

#2
Cita de: engelx en 12 Marzo 2014, 03:14 AM
usa gd para leer el archivo y abrirlo... el lo intentará abrir en memoria leyéndolo como una imagen, si falla, no es una imagen valida

Creo que alguien no leyó la posdata del post inicial.  :¬¬

No busco crear un filtro con PHP porque eso ya lo sé, solo quiero saber por que el servidor ejecuta como php (archivo.php.jpg) cuando la extensión final del archivo es .jpg y como solucionarlo desde una configuración global desde el servidor (sin usar .htaccess por carpeta)

Saludos.

#!drvy

#3
En la url que has dejado a SOF (stackoverflow) mencionan otra url donde se proporciona un fix.

https://core.trac.wordpress.org/ticket/11122

El problema básicamente reside en...
Código (apache) [Seleccionar]
AddHandler application/x-httpd-php .php

Ya que eso indica que cualquier archivo que tenga .php (aunque no sea al final), debe ser ejecutado como PHP. Esto hace que archivos del tipo *.php.jpg o *.php.txt se ejecuten como PHP sin mas.

La solución que proponen es quitar ese handler y solo añadir un whitelist en el .htaccess principal (el que esta en el root).

Código (apache) [Seleccionar]

RemoveHandler php5-script .php
<FilesMatch "\.php$|\.php5$|\.php4$|\.php3$|\.phtml$|\.phpt$">
 SetHandler php5-script
</FilesMatch>


Creo que es una solución optima aunque lo suyo seria aplicarlo a nivel httpd.conf (en caso de poder).

PD: No sabia que existía tal bug .. buena info :P
PD2: Aunque viendo el año del bug (hace 4 años).. los del hosting donde estas deberían ir pensando en actualizarse ·_·

Edit: Al parecer los handlers de tu config eran diferentes así que he modificado el post.

Saludos

Camarografo77

#4
Muchas gracias, eso era lo que queria saber y entender, ahora si podré dormir tranquilo  :laugh:

PD: La versión de php del servidor que probe es: PHP 5.3.3 y Apache/2.2.15 (CentOS)

Saludos.