Mediante Local File Disclosure podemos acceder a leer el codigo fuente de un fichero, incluso de ficheros programados en PHP, asi pudiendo analizar su contenido en busca de otro tipo de vulnerabilidades o obteniendo información importante. Un codigo vulnerable podria ser el mal uso de la función readfile() de PHP, cabe destacar que readfile() no es la única función que se puede presentar en un Local File Disclosure. Ejemplo de codigo vulnerable a LFD//readfile.php<?php $file = $_GET['file']; $readfile = readfile($file); ?> Si quisieramos ver el codigo fuente de un fichero PHP, le damos de parametro el fichero del siguiente modo: http://web.com/readfile.php?file=x7uk.php Ahora podemos ver el contenido PHP de x7uk.php tan solo consultando su codigo fuente. Obteniendo informacion importante//administracion.php<?php $usuario = $_GET['user']; $pass= $_GET['pass']; if($usuario == 'admin' && $pass == '1234'){ echo 'Bienvenido a la administración'; }Else{ echo 'Usuario/contraseña incorrectos'; } ?> http://web.com/readfile.php?file=administracion.php ¿Que mas se puede ver?Podria ser el fichero /etc/passwd y/o /etc/shadow (ficheros de contraseñas de Linux) ,sin embargo, no es todo lo que se puede ver, hay muchos ficheros interezantes que pueden ser de gran utilidad a un atacante, por ejemplo, el fichero /etc/hosts que es un archivo donde se especifica la ip de cierto domiño, es decir, si queremos entrar a cierta ip o domiño que este especificado en el host no necesitariamos consultar un DNS, lo hace directamente por el host.También tenemos todos los ficheros /proc/ donde podemos encontrar informacion sobre el kernel, hardware, los procesos en ejecucion, etc proporcionan informacion sobre el hardware del sistema: /proc/interrupts
/proc/meminfo
/proc/mounts
/proc/cpuinfo
/proc/partitions informacion de configuracion del sistema /proc/filesystems
/proc/kallsyms
/proc/cmdline
/proc/modules El directorio /proc/sys proporciona informacion pero tambien (siendo administrador) se pueden activar o desactivar caracteristicas del kernel: /proc/sys/fs
/proc/sys/dev/
/proc/sys/kernel/
/proc/sys/kernel/acct
/proc/sys/kernel/cap-bound
/proc/sys/kernel/domainname
/proc/sys/kernel/exec-shield
/proc/sys/kernel/exec-shield-randomize
/proc/sys/kernel/hostname
/proc/sys/kernel/hotplug
/proc/sys/kernel/modprobe
/proc/sys/kernel/version
/proc/sys/kernel/sysrq
/proc/sys/net/core/
/proc/sys/net/ipv4/
/proc/sys/vm/
/proc/sysvipc El directorio /proc/net muestra información sobre la configuracion de red del sistema: /proc/net/arp
/proc/net/atm
/proc/net/dev
/proc/net/dev_mcast
/proc/net/igmp
/proc/net/ip_conntrack
/proc/net/ip_tables_names
/proc/net/ip_mr_cache
/proc/net/ip_mr_vif
/proc/net/netstat
/proc/net/psched
/proc/net/raw
/proc/net/route
/proc/net/rt_cache
/proc/net/snmp
/proc/net/sockstat
/proc/net/tcp
/proc/net/tr_rif
/proc/net/udp
/proc/net/unix
/proc/net/wireless Informacion de los drivers que estan siendo utilizados /proc/driver Otros Paths interesantes: /dev/random
/proc/bus/
/proc/bus/usb/
/proc/bus/usb/devices
/proc/fs/nfsd/exports
/proc/tty/
/proc/tty/driver/serial
/proc/scsi/
/proc/ide/piix
/proc/ide/ /etc/passwd /etc/shadow /etc/group /etc/security/group /etc/security/passwd /etc/security/user /etc/security/environ /etc/security/limits /usr/lib/security/mkuser.default /apache/logs/error.log /apache/logs/access.log /apache/logs/error.log /apache/logs/access.log /apache/logs/error.log /apache/logs/access.log /etc/httpd/logs/acces_log /etc/httpd/logs/acces.log /etc/httpd/logs/error_log /etc/httpd/logs/error.log /var/www/logs/access_log /var/www/logs/access.log /usr/local/apache/logs/access_ log /usr/local/apache/logs/access. log /var/log/apache/access_log /var/log/apache2/access_log /var/log/apache/access.log /var/log/apache2/access.log /var/log/access_log /var/log/access.log /var/www/logs/error_log /var/www/logs/error.log /usr/local/apache/logs/error_l og /usr/local/apache/logs/error.l og /var/log/apache/error_log /var/log/apache2/error_log /var/log/apache/error.log /var/log/apache2/error.log /var/log/error_log /var/log/error.log También podemosver archivos de configuracion como el php.ini el httpd.conf entre otros. Como prevenir Local File Disclosure<?phpif ($_GET['page'] == "index"){ readfile("index.php"); } ?> Referenciashttp://www.milw0rm.comhttp://php.net |
Bugs y Exploits > Nivel Web >