El sitio web de la Superintendencia de Valores tenía dos vulnerabilidades críticas del tipo Source Code Disclosure, lo que nos permite obtener codigo fuente de scripts y Directory Traversal, que nos deja acceder a archivos de configuracion del servidor.
Este bug podria provocar el robo de información sensible de usuarios/clientes, datos importantes del servidor o incluso tomar control sobre el servidor.
El sitio de la superintendencia de valores, http://www.svs.gob.cl, era vulnerable a ataques de este tipo mediante el script «ver_archivo.php» ubicado en http://www.svs.gob.cl/sitio/mercados/ver_archivo.php, el cual mediante la variable $archivo podía ser utilizado para visualizar cualquier archivo dentro del servidor, incluso si está en otro directorio como /etc.
Analizando el script – «ver_archivo.php»
Lo que nos indica:
1.- Si existe $archivo crea un nuevo objeto «mostrarArchivo», lo pasa al metodo «getArchivo» y lo descarga ( clase: «require(‘../biblioteca/php/class_mostrarArchivo.php’);» ) .
2.- En caso contrario , redirige a «no_digitalizado2.php» .
Analizando el script – «../biblioteca/php/class_mostrarArchivo.php»
Nos centramos en el metodo getArchivo() de la clase :
1.-Ttoma el directorio del archivo a descargar.
2.- Setea los header de descarga.
3.- Fuerza el seteo de content-type
4.- Setea el mime y el attach del archivo ( por descarte sera pdf )
5.- Descarga archivo
En ningun momento se filtro el archivo a descargar, por lo tanto si ponemos la ruta relativa (retrocediendo con ../) de un cualquier archivo, debería abrirlo. En este caso, probamos con el archvo /etc/passwd:
La vulnerabilidad fue categorizada en Directory Traversal y Source Code Disclosure en Secureless:
– Directory Traversal: #2339
– Source Code Disclosure: #2340
El estado actual es fixed.
Y para poder obtener el archivo /etc/passwd, se puede saltar el filtro de la siguiente manera:
wget -O – -o /dev/null «http://www.svs.gob.cl/sitio/mercados/ver_archivo.php?archivo=../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../../etc/passwd»
😉
Impresionante el desglose de la vulnerabilidad, excelente!