Тема: Task #3
Показать сообщение отдельно

  #7  
Старый 07.03.2019, 12:04
dooble
Участник форума
Регистрация: 30.12.2016
Сообщений: 218
С нами: 4931606

Репутация: 138
По умолчанию

Поскольку мы занимаемся этичным хакингом, то должны уметь не только найти уязвимость, но и пропатчить ее.

Какие можно дать рекомендации по настройке сервера.

1) Отменить привилегию на создание временных таблиц

2) Запретить использование load data local infile

3) Использовать версию PhpMyAdmin >=4.8.5

4) Не использовать PhpMyAdmin вообще, или ограничить доступ по ИП (ну или добавить бейсик-авторизацию )

На втором пункте остановимся подробнее.

Глобальная переменная local_infileопределяет такую возможность, и по дефолту она включена.

Чтобы запретить локальное чтение в my.ini (my.cnf) в раделы [mysqld] и [mysql] надо добавить

local-infile = 0

Но нужно помнить следующие вещи:

При наличии прав Superuser настройку можно переопределить командой (прямо в ПМА)

SET GLOBAL local_infile=1;

Кроме того в php есть бага реализации mysqli_real_connect, которая игнорирует (перезаписывает) состояние переменной local-infile, если перед вызовом функции в опциях указать свое значение local_infile, например

Код:
$mysqli = mysqli_init();
$mysqli->options(MYSQLI_OPT_LOCAL_INFILE, true);
$mysqli->real_connect($host, $username, $password, $database);
Еще есть одна засада, (просто для полноты описания проблемы) команда mysqlimport с опцией --local, проигнорирует настройки и отработает аналогично разрешенной load data local infile.
 
Ответить с цитированием