Advisory:

Vulnerability in WP-Ban allows visitors to bypass the IP blacklist in some configurations

Vulnerability

Last revised:

This plugin allows blacklisting users based on their IP address, however it takes the IP address from the X-Forwarded-For header if available.

Not all Web server configurations will strip or replace X-Forwarded-For headers – in which case the IP ban can be bypassed by sending this header. This plugin therefore only works in certain configurations, but does not warn admins of this fact.

Current state: Fixed

CVSS Summary

CVSS base scores for this vulnerability
Score 5 Medium
Vector Network
Complexity Low
Authentication None
Confidentiality Partial
Integrity None
Availability None
You can read more about CVSS base scores on Wikipedia or in the CVSS specification.

Proof of concept

  • Visit http://localhost/wp-admin/admin.php?page=wp-ban/ban-options.php
  • Set “Banned IPs” to “127.0.0.1”
  • Execute “curl http://localhost/" and see the “You Are Banned” message
  • Execute “curl http://localhost/ -H 'X-Forwarded-For: 999.999.999.999'" and see that it displays the page

Note that this will not work if your Web server sets or strips X-Forwarded-For headers.

(To remove the IP blacklist run this SQL: “delete from wp_options where option_name='banned_ips';")

Advisory timeline

  • 2014-08-27: Discovered
  • 2014-09-04: Reported to vendor by email
  • 2014-09-04: Requested CVE
  • 2014-09-04: Vendor responded
  • 2014-09-17: Vendor reported a fixed version released
  • 2014-09-17: Published

Mitigation/further actions

Upgrade to version 1.6.4 or later.

If a reverse-proxy is used, check the “I am using a reverse proxy” box in the plugin settings, and ensure that X-Forwarded-For headers are being set even if the request already contains an X-Forwarded-For header.