Wordpress 6.2 FTP Anonimo

Objetivo: Identificar y mapear las posibles superficies de ataque.

PrivEsc id_rsa con permisos inadecuados

Este comando utiliza Nmap (Network Mapper) para escanear la dirección IP 44.214.248.132. Por defecto, realiza un escaneo básico.

nmap 44.214.248.132

Ejemplo básico de salida:

Starting Nmap 7.92 ( https://nmap.org ) at 2024-11-28 15:00 UTC
Nmap scan report for 44.214.248.132
Host is up (0.0012s latency).
Not shown: 996 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https
  1. Host is up: El host está activo.

  2. Puertos abiertos:

ESCANEOS CON PARAMETROS

El parámetro -sV en Nmap se utiliza para realizar un escaneo de detección de versiones de servicios. Esto significa que Nmap intenta identificar no solo qué puertos están abiertos, sino también qué servicios están corriendo en esos puertos y, en muchos casos, la versión exacta del software.

nmap 44.214.248.132 -sV

Salida:

Starting Nmap 7.92 ( https://nmap.org ) at 2024-11-28 16:00 UTC
Nmap scan report for 44.214.248.132
Host is up (0.0012s latency).

PORT     STATE SERVICE       VERSION
22/tcp   open  ssh           OpenSSH 8.4 (protocol 2.0)
80/tcp   open  http          Apache httpd 2.4.49
443/tcp  open  https         nginx 1.21.3
  • Verificar la versión para determinar si se trata de la más reciente o si ya han pasado varias actualizaciones.

El comando -sV - sC en nmap se utiliza para realizar un escaneo de un host específico (en este caso, la dirección IP 44.214.248.132) y obtener información detallada sobre los servicios que están corriendo en ese host.

nmap 44.214.248.132 -sV -sC

Salida:

Starting Nmap 7.93 ( https://nmap.org ) at 2024-11-28 12:34 UTC
Nmap scan report for 44.214.248.132
Host is up (0.054s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE     VERSION
22/tcp   open  ssh         OpenSSH 8.4 (Ubuntu 20.04)
80/tcp   open  http        Apache httpd 2.4.41 ((Ubuntu))
443/tcp  open  ssl/http    Apache httpd 2.4.41 ((Ubuntu))
3306/tcp open  mysql       MySQL 8.0.25
8080/tcp open  http        Apache Tomcat 9.0.38
|_http-title: Site doesn't have a title (text/html).
|_ssl-date: TLS randomness does not appear to be adequately random (Vulnerable OpenSSL).
|_mysql-info: ERROR: Script execution failed (use -d to debug)
|_ssh-hostkey: 2048 50:33:fa:55:7d:0c:ad:9d:e2:45:2d:9b:a9:af:17:fb (RSA)
|_ssh-hostkey: 256 44:9f:0d:3b:3e:de:38:b3:56:17:6d:15:8d:42:0e:87 (ECDSA)
|_ssh-hostkey: 256 9a:bb:2e:ba:56:14:bb:8d:9d:9a:17:bd:ea:b9:7d:02 (ED25519)
|_nmap-script: nmap --script http-vuln-cve2017-5638

Nmap done: 1 IP address (1 host up) scanned in 12.45 seconds
  1. SSH (Puerto 22): Permite acceso remoto seguro a sistemas para administración o transferencia de archivos.

  2. HTTP (Puerto 80): Protocolo utilizado para la carga de páginas web, no seguro.

  3. HTTPS (Puerto 443): Versión segura de HTTP que cifra la comunicación con SSL/TLS.

  4. MySQL (Puerto 3306): Sistema de gestión de bases de datos utilizado para almacenar y administrar datos.

  5. Apache Tomcat (Puerto 8080): Servidor de aplicaciones Java para ejecutar aplicaciones web basadas en Java.

  6. FTP (Puerto 21): Protocolo para transferir archivos entre sistemas (no seguro).

  7. SMTP (Puerto 25): Protocolo para el envío de correos electrónicos.

  8. DNS (Puerto 53): Traduce nombres de dominio a direcciones IP para acceder a sitios web.

EXPLOTANDO EL SERVICIO FTP

FTP
ftp 44.214.248.132

Cuando te conectes, el servidor pedirá un nombre de usuario y una contraseña. Algunos servidores permiten acceso anónimo usando:

Con el comando dir listamos el contenido del directorio actual.

FTP

En la imagen anterior, podemos observar los permisos asignados a cada archivo o directorio. Estos indican quién puede leer (r), escribir (w), o ejecutar (x) el archivo, y están organizados en tres grupos: propietario, grupo y otros usuarios.

Los permisos definen las acciones que pueden realizar tres categorías de usuarios sobre un archivo o directorio:

O puedes buscarlo aquí directamente pero es recomendable que tengas conocimientos de cada termino...
  • Propietario (owner): El usuario que creó el archivo. P_ _ _

  • Grupo (group): Otros usuarios que forman parte del grupo del archivo. _ G _ _

  • Otros (others): Todos los demás usuarios. _ _ O_

Cada categoría puede tener los siguientes permisos:

  • r (read): Permiso de lectura (puedes ver el contenido).

  • w (write): Permiso de escritura (puedes modificar el contenido).

  • x (execute): Permiso de ejecución (puedes ejecutar el archivo si es un programa o acceder al directorio).

Ejemplo:

- rwxr-xr-- 1 usuario grupo 1234 nov 28 12:00 archivo.txt

Esto indica:

  • Propietario (rwx): Puede leer, escribir y ejecutar.

  • Grupo (r-x): Puede leer y ejecutar, pero no escribir.

  • Otros (r--): Solo pueden leer.

Cómo agregar o quitar permisos (comando chmod)

Usando letras (r, w, x):

Para agregar permisos:

chmod u+r archivo.txt  # Agrega permiso de lectura al propietario
chmod g+w archivo.txt  # Agrega permiso de escritura al grupo
chmod o+x archivo.txt  # Agrega permiso de ejecución a otros

Para quitar permisos:

chmod u-w archivo.txt  # Quita permiso de escritura al propietario
chmod g-x archivo.txt  # Quita permiso de ejecución al grupo
chmod o-r archivo.txt  # Quita permiso de lectura a otros

Usando notación numérica (binarios):

  • Cada permiso tiene un valor asociado: r = 4, w = 2, x = 1.

  • Para cada categoría (propietario, grupo, otros), sumas los valores:

    • 7 (4+2+1) = Leer, escribir y ejecutar.

    • 6 (4+2) = Leer y escribir.

    • 5 (4+1) = Leer y ejecutar.

    • 4 (4) = Solo leer.

MUY BIEN AHORA APRENDAMOS A DESCARGAR ARCHIVOS CON FTP

Descarguemos Backup.json:

Se descargo el backup.json en tu maquina...

Ahora, al identificar esta vulnerabilidad, debemos evaluar su criticidad (alta, media o baja) utilizando la tríada de la seguridad informática: confidencialidad, integridad y disponibilidad.

El siguiente enlace nos ayuda a verificar ello

EXPLOTANDO EL SERVICIO HTTP

El servicio HTTP, al no ser seguro, puede ser explotado debido a la falta de cifrado en las comunicaciones. Esto permite que un atacante pueda interceptar, modificar o robar datos sensibles transmitidos entre el cliente y el servidor mediante técnicas como sniffing, ataques man-in-the-middle (MITM) o inyección de comandos. Es crucial evaluar posibles vulnerabilidades como configuraciones incorrectas, inyecciones SQL, rutas no autenticadas, o directorios accesibles sin control, ya que pueden abrir la puerta a compromisos mayores.

  • Escaneando nuevos directorios con dirb:

  • Al realizar una búsqueda de directorios con herramientas como dirb, se genera una cantidad significativa de tráfico hacia el servidor objetivo. Esto ocurre porque la herramienta envía múltiples solicitudes HTTP para probar rutas comunes y directorios. Este tráfico puede ser detectado por sistemas de monitoreo o IDS/IPS, y en algunos casos, puede incluso activar restricciones como bloqueos de IP si hay un sistema de protección configurado.

EL TRAFICO
  • Al hacer la búsqueda se encontró:

Directorio encontrado...
Entramos al nuevo directorio...

Directorios principales de WordPress:

  1. /wp-admin

    • Contiene los archivos del panel de administración de WordPress.

    • Acceso restringido, pero es un objetivo común para ataques como fuerza bruta.

  2. /wp-content

    • Almacena temas, plugins y archivos cargados por el usuario.

    • Subdirectorios comunes:

      • /wp-content/themes: Contiene los temas activos e instalados.

      • /wp-content/plugins: Contiene los plugins activos e instalados.

      • /wp-content/uploads: Carpeta donde se guardan imágenes, videos y otros archivos subidos.

  3. /wp-includes

    • Contiene archivos esenciales del núcleo de WordPress para funcionalidades generales.

    • Por lo general, no se modifica directamente, pero puede ser explotado si hay vulnerabilidades.

Directorios adicionales en servidores configurados

  1. /xmlrpc.php

    • No es un directorio, pero es un archivo accesible desde el exterior.

    • Usado para comunicaciones remotas (por ejemplo, publicar desde apps móviles).

    • Frecuentemente explotado para ataques de fuerza bruta o DoS.

  2. /.htaccess

    • Archivo de configuración en servidores Apache.

    • A veces es accesible si no está configurado correctamente, lo que expone reglas sensibles.

  3. /wp-json

    • Endpoint de la REST API de WordPress.

    • Permite a aplicaciones externas interactuar con el sitio (por ejemplo, recuperando publicaciones).

    • Si no está protegido, puede exponer datos sensibles como nombres de usuario.

  4. /wp-sitemap.xml

    • Generado automáticamente para los motores de búsqueda.

    • Puede revelar URLs interesantes para análisis.

Directorios obsoletos o no seguros (si están presentes)

  1. /backup o /backups

    • A veces configurados manualmente por administradores.

    • Puede contener copias de seguridad descargables, si no están protegidas.

  2. /old o /test

    • Directorios temporales creados durante pruebas o migraciones.

    • Suelen ser olvidados y pueden contener una copia completa del sitio.

  3. /cgi-bin

    • No es específico de WordPress, pero algunos servidores lo incluyen.

    • Si hay scripts mal configurados, puede ser un vector de ataque.

Comandos para enumerar directorios comunes:

Usando dirb:

dirb http://[URL]/ /usr/share/wordlists/dirb/wordlists/common.txt

Con gobuster y una lista optimizada para WordPress:

gobuster dir -u http://[URL]/ -w /usr/share/wordlists/dirb/wordpress.txt
Se encontro este diretorio..
  • Las credenciales son las que se encontraron en el FTP en uno de esos archivos.

PUM

Ahora como se comporta una pagina web configurada correctamente:

Entrando...
Redirección a un video de YouTube

Bueno siguiendo con la vulneración se pudo entrar al login:

Recomendación: utilizar las listas de directorios disponibles en el repositorio de SecLists en GitHub para mejorar la eficacia en la enumeración de directorios y archivos. Estas listas están optimizadas para escenarios específicos, incluyendo aplicaciones como WordPress, APIs, y más. Al usar herramientas como gobuster o dirb, puedes apuntar a rutas más relevantes y minimizar el ruido en los resultados.

git clone https://github.com/danielmiessler/SecLists.git
  • Sigamos

Una vez adentro trabajaremos con PHP porque WordPress trabaja con ello y agregaremos el código malicioso para subirlo.

Web shell

Bien ahora una vez subido ese codigo en el archivo Error404.php tenemos que entrar en ella:

Todo fue exitoso

Ahora insetando comandos para verificar si todo funciona

  • Comando whoami

nos saldra en pantalla : www-data
  • whoami: www- data (quien soy yo )

  • hostaname: ip del equipo

  • ip a show: ver las interfaces que tiene el equipo

  • ls: listar los archivos

  • ls -ls /home: los usuarios se encuentran en este directorio

ver los permisos que contie cada usuario
  • ls -la /home/admin:

La claves se encuentran en ssh pero no tenemos permisos ademas como informacion el punto en cada archivo es porque esta oculto.

Pero tenemos que darnos cuenta que ha simple vista el archivo backup tienen los permisos necesarios para entrar en ella:

id_rsa
  • cat /home/admin/backup : para ver que contiene el archivo

Cada vez que encontremos una id_rsa es una llave privada de SSH

Llave privada:

  • En este punto copiamos la llave privada de SSH.

  • Creamos una carpeta mkdir y adentro con touch creamos un archivo que contenga esa llave la pegamos y despues.

Con la llave privada podemos entrar por ssh el archivo que contiene la llave después verificamos el usuario y por ultimo la ip
  • Tenemos que darle permisos al archivo con chmod 600 llave

Bingo tenemos acceso

Una vez comprometida la maquina verificamos lo siguiente:

Lo siguente solo es sugerencias :

OTRA MANERA DE HACER ESTO CON curl:

  • Pero cumplen la misma función:

PIVOTING

Excelente. Ahora procederemos con la técnica de pivoting, aprovechando el acceso obtenido previamente para movernos lateralmente hacia otras subredes internas. Esto implicará la enumeración de nuevos objetivos, la identificación de servicios disponibles y, si es posible, el establecimiento de túneles seguros para garantizar una comunicación persistente dentro de la red comprometida.

Razones para realizar el escaneo de puertos en todas las interfaces:

  1. Exposición de servicios en diferentes redes: Un servidor comprometido puede tener múltiples interfaces de red, cada una conectada a redes diferentes (como redes internas, DMZ, o incluso redes externas). Cada interfaz podría estar exponiendo servicios a una red diferente, y estos servicios pueden estar configurados con distintos niveles de seguridad. Por ejemplo, un servidor podría estar exponiendo un puerto SSH en la interfaz de la red interna, pero no en la interfaz pública. Escanear todas las interfaces ayuda a descubrir servicios que pueden estar mal configurados o expuestos innecesariamente.

  2. Descubrimiento de vectores de ataque adicionales: Cada interfaz podría tener servicios distintos ejecutándose en puertos específicos. Algunos servicios podrían estar desactualizados o mal configurados, lo que los convierte en posibles vectores de ataque. Un escaneo de puertos en todas las interfaces garantiza que se cubren todas las posibles superficies de ataque y no se pasa por alto ningún servicio vulnerable.

  3. Servicios escuchando solo en interfaces internas: Algunos servicios críticos, como bases de datos, suelen configurarse para que escuchen solo en interfaces internas por razones de seguridad. Sin embargo, en un escenario de servidor comprometido, si un atacante puede acceder a estas interfaces internas, realizar un escaneo de puertos permitiría identificar estos servicios y, potencialmente, explotarlos para obtener acceso a información sensible o comprometer aún más la infraestructura.

  4. Enumeración de posibles caminos de escalación: Un escaneo de puertos completo en todas las interfaces puede revelar servicios que permitan escalar privilegios o realizar movimientos laterales dentro de la red. Por ejemplo, si se detecta un puerto expuesto en una red interna que proporciona acceso a un recurso compartido o a una herramienta de administración, esto puede ser explotado para obtener acceso a otros sistemas conectados a la red.

  5. Identificación de interfaces expuestas externamente: Es posible que algunas interfaces estén conectadas directamente a internet o a redes externas, lo que aumenta significativamente el riesgo de que un atacante explote servicios vulnerables desde fuera de la red. Al identificar todos los puertos abiertos en las interfaces públicas, un atacante o auditor de seguridad puede evaluar qué servicios están expuestos y podrían ser utilizados como puerta de entrada al sistema.

Gracias a la ejecución con LinPEAS.sh logramos identificar mucha información de valor para nuestra auditoria.

  • Entre toda esa información logramos identificar la existencia de una Subnet: 172.16.1.0/24.

  • Esta coincide con los objetivos proporcionados por la auditoria de seguridad.

Vamos a instalar nmap sobre este servidor comprometido:

Instalando nmap

Para realizar una enumeración sobre toda la red podemos ejecutar el siguiente comando:

Logramos identificar efectivamente la existencia de 9 servidores dentro de la red interna.

  • Teniendo las posibilidades dond moverse:

  • Redireccionamiento local:

Last updated