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

Discussion in 'Песочница' started by Logo, 18 Dec 2012.

  1. Logo

    Logo New Member

    Joined:
    23 Feb 2012
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Необходимо проверить linux сервер на наличие уязвимоти выхода за пределы каталога по ../ (а так же mysql load_file).
    Какие есть стандартные файлы в linux системах, с высокой вероятностью доступные на чтение всем пользователям?
     
  2. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,788
    Likes Received:
    872
    Reputations:
    859
    load_file проверяется наличием file_priv у текущего пользователя mysql

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

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

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

    Logo New Member

    Joined:
    23 Feb 2012
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    mysql.user не доступна

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

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

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,788
    Likes Received:
    872
    Reputations:
    859
    Ну скорее всего тогда File_Priv=N

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

    load_file(0x2f6574632f706173737764)
    и
    load_file(0x2f6574632f686f737473)

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

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

    Logo New Member

    Joined:
    23 Feb 2012
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Да, первым делом попробовал получить доступ к /etc/passwd и /etc/hosts через load_file и выход за пределы каталога, но их получить не удается. Либо здесь возможности нет, либо они запрещены на чтение юзеру (и для всех юзеров, в случае load_file).

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

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    609
    Reputations:
    1,101
    В 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
     
    #6 randman, 19 Dec 2012
    Last edited: 19 Dec 2012
    2 people like this.
Loading...