Необходимо проверить linux сервер на наличие уязвимоти выхода за пределы каталога по ../ (а так же mysql load_file). Какие есть стандартные файлы в linux системах, с высокой вероятностью доступные на чтение всем пользователям?
load_file проверяется наличием file_priv у текущего пользователя mysql Я обычно проверяю /etc/passwd и /etc/hosts Если первый палится WAF, то второй обычно даёт пощупать. Выход за пределы каталога при load_file обычно проверяю так - пишу любой файл в папку /tmp через into outfile, потом подгружаю его через Load_file. Если всё ок - начинаю искать корневую директорию сайта - а там у каждого своя стратегия.
mysql.user не доступна Выход за пределы каталога теоретически возможен через скрипт серевера, в load_file в этом нет нужды, ее нужно проверить на доступность. into outfile судя по всему не доступна, т.к. включены "магические кавычки". Но там, где в качестве параметра к запросу передается число, mysql injection доступна. не доступны...
Ну скорее всего тогда File_Priv=N Хотя с учётом того, что MQ On могу посоветовать load_file(0x2f6574632f706173737764) и load_file(0x2f6574632f686f737473) (/etc/passwd и /etc/hosts соответственно) А по поводу выхода за директорию - я понятия не имею что за скрипт, что он делает. Вариантов куча. Телепаты в отупске(с)
Да, первым делом попробовал получить доступ к /etc/passwd и /etc/hosts через load_file и выход за пределы каталога, но их получить не удается. Либо здесь возможности нет, либо они запрещены на чтение юзеру (и для всех юзеров, в случае load_file). Да я и сам толком не знаю, как оно работает, исходников нет. Возвращает кусок файла с сервера, с - по байт, указанные в запросе.
В MySQL есть служебные переменные, отображающие те места, куда точно должны быть права на чтение. 1. Обычно это логи и темповые папки, однако если сервер не ведет логов, этот ложный путь. @@tmpdir, @@slave_load_tmpdir - Путь к папке Temp, туда должны быть права на запись, но не всегда. @@slow_query_log_file - Путь к логу запросов. @@general_log_file - Ещё один лог Иногда удобно для закачки и выкачки больших бинарных файлов использовать встроенные функции hex и unhex. 2. @@datadir - Путь к папке с файлами бд, но файлы из этой папки с помощью load_file прочитать не удасться поскольку как я понял MySQL не дает это делать, но в папки таблиц уж точно должны быть права на запись(создание новых файлов), и их соответственно после создания можно читать, но нужен пропуск кавычек, но его то проверить очень легко. PHP: ./mysql: columns_priv.frm help_topic.frm slow_log.CSM columns_priv.MYD help_topic.MYD slow_log.CSV columns_priv.MYI help_topic.MYI slow_log.frm db.frm host.frm tables_priv.frm db.MYD host.MYD tables_priv.MYD db.MYI host.MYI tables_priv.MYI event.frm ndb_binlog_index.frm time_zone.frm event.MYD ndb_binlog_index.MYD time_zone_leap_second.frm event.MYI ndb_binlog_index.MYI time_zone_leap_second.MYD func.frm plugin.frm time_zone_leap_second.MYI func.MYD plugin.MYD time_zone.MYD func.MYI plugin.MYI time_zone.MYI general_log.CSM proc.frm time_zone_name.frm general_log.CSV proc.MYD time_zone_name.MYD general_log.frm proc.MYI time_zone_name.MYI help_category.frm procs_priv.frm time_zone_transition.frm help_category.MYD procs_priv.MYD time_zone_transition.MYD help_category.MYI procs_priv.MYI time_zone_transition.MYI help_keyword.frm proxies_priv.frm time_zone_transition_type.frm help_keyword.MYD proxies_priv.MYD time_zone_transition_type.MYD help_keyword.MYI proxies_priv.MYI time_zone_transition_type.MYI help_relation.frm servers.frm user.frm help_relation.MYD servers.MYD user.MYD help_relation.MYI servers.MYI user.MYI