DLE 100% загрузка MySQL BENCHMARK'ами

[Удален]
1472

Хеллп :(

Уже неделю мучаюсь с DLE, проблема началась ни с того ни с сего, походу дела взлом, но ничего толком не нашел по этому запросу.

Сервак MySQL вешается от запросов:

Sorting result | SELECT * FROM dle_users ORDER BY (user_id*(BENCHMARK(99999999999999999999,BENCHMARK(999999999999999

Был двиг 8.5, обновил до 9.3, проблема осталась, поставил начистую, но базу импортировал с сайта, пол дня поработал и опять запросы посыпались, если перезагрузить MySQL он может сразу засыпаться запросами, а могут через какое то время.

ЗЫ: DLE лицензия. В ТП сказали что таких запросов быть не должно. Но откуда они если двиг чистый?

[Удален]
#1

Не должно быть таких запросов...

Скачайте FileSeek (программа для поиска текста в файлах) и пройдитесь по движку поиском по фразе "BENCHMARK"

[Удален]
#2

Нету ничего такого.

unixadm
На сайте с 24.09.2010
Offline
110
#3

Если в файлах нет ничего - ищите в базе. Необязательно сразу полную фразу, можно начать со слова select.

Host4Biz: NVMe Хостинг в Европе ( https://host4.biz/ru/hosting/shared-hosting ) | Windows/Linux NVMe VPS в Европе ( https://host4.biz/ru/vps ) | Выделенные серверы в Европе, США и Азии ( https://host4.biz/ru/servers/dedicated )
DZ
На сайте с 02.07.2011
Offline
2
#4

Положить во все php скрипты логгер всего поступающего в GET и POST запросах и потом поискать в логах BENCHMARK.

Сдаётся мне, что имеем дело с банальным SQL Injection.

На всякий случай код логгирующий все что летит в GET и POST запросах:

function GetPostToLogFile(){
$log_path='log_get_post.txt';
$filelg=@fopen($log_path, 'a');
if ($filelg){
$tmp="POST:\n";
foreach($_POST as $key => $value){$tmp=$tmp.$key.'='.$value."\n";}
$tmp="\nGET:\n";
foreach($_GET as $key => $value){$tmp=$tmp.$key.'='.$value."\n";}
@fwrite($filelg, "----------START--------------------------------------------------\nSERVER_DATE: ".date('d.m.Y, H:i:s')."\nUSER_IP: ".$_SERVER['REMOTE_ADDR']."\nUSER_IP_FORWARD: ".$_SERVER['HTTP_X_FORWARDED_FOR']."\nSCRIPT_NAME: ".$_SERVER['SCRIPT_NAME']."\n$tmp\n----------END----------------------------------------------------\n\n");
@fclose($filelg);
}
}

Естественно, что:

$log_path='log_get_post.txt';

надо бы прописать от корня, а не относительный, если конечно все скрипты не лежат в одной папке, а то логи раскидает.

И быть готовым к тому, что логи могут в секунды превратиться в огромные.

Включать в скрипты удобно сохранив в отдельный файл, например "log_get_post.php", в отдельной папке, например "log_script", а потом конструкцией:

require 'log_script/log_get_post.php';
GetPostToLogFile();

Отключить логгирование в любой момент не выдёргивая из всех файлов вызов можно дописав "return;" в начало функции:

function GetPostToLogFile(){
return; // выйдем из функции далее ничего не исполняя в этой функции
$log_path='log_get_post.txt';
Хортица
На сайте с 22.12.2006
Offline
289
#5
Dimazzan:
ЗЫ: DLE лицензия. В ТП сказали что таких запросов быть не должно.

Есть тут ярый защитник DLE - ник помоему dlepro com, напишите ему, чтобы он убедился что поддержка у скрипта говяная!!!

А если по теме, то в стандартном коде нет такого запроса, который бы содержал ORDER BY (user_id, а так как у Вас ДЛЕ чистая, то очень вероятно, что это проблема стороннего модуля.

На XBit.Money (https://xbit.money/?rid=111) меняю крипту на гривны. Лучшие курсы Обмен Вашего PayPal/ЯД/QIWI/WebMoney и куча плюшек! Рекомендую (https://exchangex.ru/index.php?who=26749)
N
На сайте с 06.05.2007
Offline
419
#6
Хортица:
А если по теме, то в стандартном коде нет такого запроса, который бы содержал ORDER BY (user_id, а так как у Вас ДЛЕ чистая, то очень вероятно, что это проблема стороннего модуля.

но в теории sql-иньекция позволяет вставлять куски такого кода в обычные запросы.

если, как он пишет, DLE чистая и без модулей, то это какая-то новая неизвестная уязвимость.

Кнопка вызова админа ()
[Удален]
#7
Если в файлах нет ничего - ищите в базе. Необязательно сразу полную фразу, можно начать со слова select.

В базе ничего нету.

require 'log_script/log_get_post.php';
GetPostToLogFile();

Куда примерно вставлять в скрипт?

PR
На сайте с 30.12.2007
Offline
140
#8

Dimazzan, киньте список модулей, что установлены на сайте.

Dimazzan:
Куда примерно вставлять

В index.php к примеру. Хотя достаточно взять лог с сервера за тот день, когда произошло зависание и изучить его.

[Удален]
#9

Как я писал выше, стоит чистеший движок 9.3 скачанный с dle-news.ru, на него перенеслась база и папки с шаблоном, uploads.

Раньше стоял дле форум 2.5

PR
На сайте с 30.12.2007
Offline
140
#10

Значит спасет только лог после зависания сервера.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий