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
Host is up: El host está activo.
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
SSH (Puerto 22): Permite acceso remoto seguro a sistemas para administración o transferencia de archivos.
HTTP (Puerto 80): Protocolo utilizado para la carga de páginas web, no seguro.
HTTPS (Puerto 443): Versión segura de HTTP que cifra la comunicación con SSL/TLS.
MySQL (Puerto 3306): Sistema de gestión de bases de datos utilizado para almacenar y administrar datos.
Apache Tomcat (Puerto 8080): Servidor de aplicaciones Java para ejecutar aplicaciones web basadas en Java.
FTP (Puerto 21): Protocolo para transferir archivos entre sistemas (no seguro).
SMTP (Puerto 25): Protocolo para el envío de correos electrónicos.
DNS (Puerto 53): Traduce nombres de dominio a direcciones IP para acceder a sitios web.
EXPLOTANDO EL SERVICIO 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.

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:
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:

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.
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.

Al hacer la búsqueda se encontró:


Directorios principales de WordPress:
/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.
/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.
/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
/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.
/.htaccess
Archivo de configuración en servidores Apache.
A veces es accesible si no está configurado correctamente, lo que expone reglas sensibles.
/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.
/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)
/backup
o/backups
A veces configurados manualmente por administradores.
Puede contener copias de seguridad descargables, si no están protegidas.
/old
o/test
Directorios temporales creados durante pruebas o migraciones.
Suelen ser olvidados y pueden contener una copia completa del sitio.
/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

Las credenciales son las que se encontraron en el FTP en uno de esos archivos.

Ahora como se comporta una pagina web configurada correctamente:


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

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:

Ahora insetando comandos para verificar si todo funciona
Comando
whoami

whoami
: www- data (quien soy yo )hostaname
: ip del equipoip a show
: ver las interfaces que tiene el equipols
: listar los archivosls -ls /home
: los usuarios se encuentran en este directorio

ls -la /home/admin
:

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

c
at /home/admin/backup
: para ver que contiene el archivo

Llave privada:

En este punto copiamos la llave privada de SSH.
Creamos una carpeta
mkdir
y adentro contouch
creamos un archivo que contenga esa llave la pegamos y despues.

Tenemos que darle permisos al archivo con
chmod 600 llave

Una vez comprometida la maquina verificamos lo siguiente:

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:
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.
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.
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.
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.
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:

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