The Search functionality is susceptible to a SQL Injection attack due to usage of user input without sanitation.
In particular, at line 98 of ‘includes/nsp_search.php’.
Utilising a specially crafted SQL query, we can trigger disclosure of user hashes through an IMG tag as the data channel.
|Proof of Concept
The following URL will trigger an SQLI attack, which in turn injects an element into the page, which allows for transmission of the retrieved user hashes to an attacker-controlled URL. In the PoC below, it will output an IMG element pointing to http://attacker/?creds=CREDS, where CREDS is replaced with a concatenated list of usernames and password hashes.
As the strings in the call are encoded with the MySQL function ‘hex’, there is no need to use any quotes. This is to bypass the quote escaping implemented by WordPress. Should an Administrative user be tricked into visiting the URL, all of the usernames and password hashes will be transmitted (so long as there are no restrictive CSP headers implemented).