There were news stories this week outlining how attackers are abusing the XML-PRC "pingback" feature of WordPress blog sites to launch DDoS attacks on other sites. This blog post will provide some analysis on this attack and additional information for websites to protect themselves.
Not A New Vulnerabilty
The vulnerability in WordPress's XML-RPC API is not new. Here is data from the WordPress bug tracker from 7 years ago.
While the vulnerability itself is not new, it has only been within the past couple years that attack code/tools have been made available. This has certainly helped increase attacks by ScriptKiddies and resulted in more actual DDoS attacks.
WordPress XML-RPC Pingback DDoS Attack Walkthrough
The XML-RPC pingback functionality has a legitimate purpose with regards to linking blog content from different authors. The issue is that this functionality can be abuse by attackers to use the XML-RPC pingback feature of a blog site to attack a 3rd party site.
WordPress XML-RPC Pingback DDoS attack
Here is an example attack command using curl -
The YELLOW highlighted data is a WordPress "Patsy Proxy" site while teh ORANGE highlighted data is the target/victim website. It is important to note for testing purposes that you must include the "Content-Type: text/xml" request header data otherwise the XML-RPC service will not treat the request as valid and will issue the following response:
With the previous request sent by the attacker, the Patsy Proxy WordPress site then initiates this HTTP request to the target/victim site -
Notice that the format of the HTTP request is only two lines:
• Host request header
• Host request header
This intelligence can be used by Web Application Firewalls (WAFs) that are protecting the victim sites to identify attack requests. Normal web browsers send many more request headers. While the pingback DDoS attack doesn't utilize any type of amplification as other more recent network protocol attacks (e.g. NTP), requests can cause more damage on the victim site if the URI is initiating a computationally expensive back-end query or process.
Protections Disable XML-RPC
It is possible to disable the XML-RPC process altogether if you do not want to use it. There are even plugins that will disable it.
Also there is a plugin for to make your wordpress faster and more secure: https://wordpress.org/plugins/wordfence/
Disable Pingback Requests
You may also disable the pingback feature by adding the following to your functions.php file: