miércoles 12 de mayo de 2010

Backups & Full Source Code Disclosure

Después de no escribir un tiempo y estar de "vacaciones" gracias a un comentario de un colega, Carlos Ganoza, recordé un antiguo "bug" que se combina por configuración del servidor y editores de Texto.

Bueno... Empezemos...

Mientras Editamos Archivos en programas como GEDIT o el mismisimo OPEN-OFFICE se genera un archivo de backup...

ejemplo Open-Office:


Archivo:
TOK.ODT

Aechivo "backup":
.~lock.tok.odt#

Bueno... si nosotros abrimos el archivo de backup con un editor de textos podríamos apreciar algo como:

Camilo Dedalo White,PC-Dedalo/Camilo Dedalo,PC-Dedalo,12.05.2010 23:16,file:///C:/Users/Camilo%20Dedalo/AppData/Roaming/OpenOffice.org/3;


Es una especie de metadata que le da alguna referencia al sistema...

bueno miren lo que hemos visto en el archivo .odt es informacion importante... en un linux hubiese bastado con hacer un "nano" o el uso de algun editor para poder ver esta información... que como repito es importante... ahora... yo me pregunto... que sería si pusiera un archivo .html en ves de poner un .odt o para hacerlo mas drástico...

Un .PHP...

Usando un Editor de PHP del estilo GEDIT cuando hacemos copias de seguridad de archivos ya guardados se le agrega el Sufijo ~

Ejemplo:

Archivo:
TOK.PHP

Archivo "backup":
TOK.PHP~


Nuestro problema ahora recide no si es cualquier archivo PHP sino, el hecho es que si nuestro administrador no sabe configurar bien el Server y en si el APACHE puede ocurrir algo desastroso...

el problema con algunos otros editores inclusive que vienen por default en algunos servidores, dejan vivos los archivos del backup y si no están ocultos o sin permisos para que lo lea cualquier usuario si lo tenemos con un dominio o en un hosting que todos podamos ver (página web) entonces puede ocurrir algo como esto:


en:

http://www.website.com/ <-- c:/website/

si hacemos un ls podemos ver:

Index.php
CMD.php
home
tipo.php
Index.php~
CMD.php~
tipo.php~

¿por que?

porque el editor de textos tiene un mal funcionamiento o nosotros cometimos un error al usarlo o estamos editandolos... en ese momento...


entonces viene el Black Hat y entra a


http://website.com/Index.php y dice... asu que buena página a ver... veamos que pasa si le agrego ~ al archivo...

y como nosotros no sabemos configurar bien los web servers entonces el .php~ existe... que pasará?


nos lo muestra como texto plano...


Index.php~:

include("/2010/05/template/home.html");
$nombre = $_GET['name'];

bueno ahora estamos viendo el coe de index.php a ver si ya tenemos el code... ya podemos por lo menos ver que jalan una variable nombre... que no está filtrandose... entonces se deduce que por lo menos un xss podremos sacar...


Un Ejemplo real... que va contra mis principios éticos pero quiero que se diviertan... nada de andar defaceando o jugando con el xss:

http://www.ifarhu.gob.pa/verpag.php~

http://www.ifarhu.gob.pa/verpag.php?pag="><script>alert('SeguridadBlanca.Org')</script>

http://www.ifarhu.gob.pa/verpag.php?sec="><script>alert('SeguridadBlanca.Org')</script>


y bueno dense cuenta como hay errores tan pequeños pero tan peligrosos


Podemos ver también mala configuracion en el htaccess... vemos directorios y vemos versión del servidor...

http://www.ifarhu.gob.pa/transparencia/



Espero les haya gustado ;)