Two critical vulnerabilities have been discovered in D-Link DIR-X4860 routers which were associated with Authentication bypass due to HNAP port and remote code execution.
Moreover, exploiting these vulnerabilities together could lead to a complete compromise of the vulnerable device.
However, even after reporting this vulnerability to the vendor, there seems to be no update or response from them.
Researchers have publicly disclosed this vulnerability due to no response in the past 30 days.
Free Webinar on Live API Attack Simulation: Book Your Seat | Start protecting your APIs from hackers
Authentication Bypass Due To Incorrect Implementation
This flaw exists due to the handling of HNAP login requests, which does not have proper implementation of authentication algorithms.
Successful exploitation of this flaw results in an escalation of privileges and also provides access to execute code under the router’s context.
To provide more details on this flaw, the login request to the router uses the HNAP protocol, which has an XML request embedded with a username and password.
The response to this login request contains three main parameters: Challenge, Cookie, and PublicKey.
The Cookie header is used for all the subsequent requests whereas the Challenge and PublicKey headers are used to encrypt the password and generate a HNAP_AUTH authentication in the HTTP header.
However, if the username and password parameters in the XML request are modified to “Admin”, the PublicKey is generated from the value of the “Admin”.
This means that during the login request, a threat actor can use “Admin” as the username and password, which allows the threat actor to bypass the authentication.
This flaw exists due to the /bin/prog.cgi file which handles the login request with a function.
To add more details, there is a LoginResult XML parameter, which responds with Success for successful authentication and failed for failed authentication.Â
LocalIPAddress Command Injection
This flaw exists in the same prog.cgi which handles the HNAP requests that are made to the lighttpd web server.
This web server listens on ports 80 and 443. Moreover, this flaw results from a lack of validation in a user-supplied string before using it to execute a system call.Â
Further, successfully exploiting this vulnerability executes code under the context of “root”.
The prog.cgi file present in the /bin/ directory contains a function that handles SetVirtualServerSettings.
The LocalIPAddress parameter uses a user-supplied input to call the FCGI_popen function.Â
By providing malicious input, the attacker can call the FCGI_popen function and execute malicious commands.
Furthermore, a proof of concept has been published by SSD researchers, which provides detailed information.
On-Demand Webinar to Secure the Top 3 SME Attack Vectors: Watch for Free