PDA

Просмотр полной версии : Файлы, доступные на чтение всем пользователям в linux


Logo
18.12.2012, 08:05
Необходимо проверить linux сервер на наличие уязвимоти выхода за пределы каталога по ../ (а так же mysql load_file).

Какие есть стандартные файлы в linux системах, с высокой вероятностью доступные на чтение всем пользователям?

BigBear
18.12.2012, 08:34
Logo said:
Необходимо проверить linux сервер на наличие уязвимоти выхода за пределы каталога по ../ (а так же mysql load_file).
Какие есть стандартные файлы в linux системах, с высокой вероятностью доступные на чтение всем пользователям?


load_file проверяется наличием file_priv у текущего пользователя mysql

Я обычно проверяю /etc/passwd и /etc/hosts

Если первый палится WAF, то второй обычно даёт пощупать.

Выход за пределы каталога при load_file обычно проверяю так - пишу любой файл в папку /tmp через into outfile, потом подгружаю его через Load_file. Если всё ок - начинаю искать корневую директорию сайта - а там у каждого своя стратегия.

Logo
18.12.2012, 09:21
load_file проверяется наличием file_priv у текущего пользователя mysql


mysql.user не доступна


Выход за пределы каталога при load_file обычно проверяю так - пишу любой файл в папку /tmp через into outfile, потом подгружаю его через Load_file.


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

into outfile судя по всему не доступна, т.к. включены "магические кавычки". Но там, где в качестве параметра к запросу передается число, mysql injection доступна.


/etc/passwd и /etc/hosts


не доступны...

BigBear
18.12.2012, 09:44
Logo said:
mysql.user не доступна
Выход за пределы каталога теоретически возможен через скрипт серевера, в load_file в этом нет нужды, ее нужно проверить на доступность.
into outfile судя по всему не доступна, т.к. включены "магические кавычки". Но там, где в качестве параметра к запросу передается число, mysql injection доступна.
не доступны...


Ну скорее всего тогда File_Priv=N

Хотя с учётом того, что MQ On могу посоветовать

load_file(0x2f6574632f706173737764)

и

load_file(0x2f6574632f686f737473)

(/etc/passwd и /etc/hosts соответственно)

А по поводу выхода за директорию - я понятия не имею что за скрипт, что он делает. Вариантов куча. Телепаты в отупске(с)

Logo
18.12.2012, 23:49
load_file(0x2f6574632f706173737764)


Да, первым делом попробовал получить доступ к /etc/passwd и /etc/hosts через load_file и выход за пределы каталога, но их получить не удается. Либо здесь возможности нет, либо они запрещены на чтение юзеру (и для всех юзеров, в случае load_file).


А по поводу выхода за директорию - я понятия не имею что за скрипт, что он делает. Вариантов куча. Телепаты в отупске(с)


Да я и сам толком не знаю, как оно работает, исходников нет. Возвращает кусок файла с сервера, с - по байт, указанные в запросе.

XAMEHA
19.12.2012, 06:40
В 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