MySQL инъекция. Простое руководство по Load File и Into OutFile
19 сентября, 2011
Часть 1 – Введение
Если вы знакомы с основамиХорошо, давайте посмотрим, что такое Load File и Into OutFile.
-- Что такое Load File и Into OutFile?
Это команды (используются в MySQL инъекциях).
Load File: Читает содержимое файла и возвращает его в виде строки.
Into OutFile: Записывает выбранные строки в файл. Файл создается на сервере. Таким образом, у вас должны быть права доступа для использования этих команд. Создаваемый файл не должен существовать. Таким образом, помимо прочего, предотвращается уничтожение таблиц и файлов (таких как "/etc/passwd”). (… Источник: MySQL.com)
Итак, начнем!
Часть 2 – Доступ к таблице “mysql.user” и к правам файлов
Если вы используете метод MySQL инъекции (для взлома сайтов), перед тем как вы найдете нужную таблицу (и столбцы), проверьте наличие доступа к таблице "mysql.user".Вы должны заменить один видимый столбец (т.е. номер, показанный на странице) в URL на строку “user” для того, чтобы увидеть имя пользователя.
Рассмотрим пример:
http://vulnsite.com/index.php?id=-1+union+all+select+1,user,3,4+from+mysql.user-- В нашем примере столбец (номер) 2 может быть увиден на уязвимой странице.
Если страница возвращает имя пользователя на месте отображаемого столбца на сайте - это хорошо. Это значит, что у вас есть доступ к таблице “mysql.user” и вы можете читать дальше. Запомните имя пользователя, которое вы увидели!
В нашем примере это условие выполняется (мы имеем доступ к таблице “mysql.user”) и теперь мы можем проверить права доступа к файлам.
В URL вы должны заменить: "user", строкой "group_concat(user,0x3a,file_priv)", для того, чтобы проверить возможность доступа к файлам на (вашем) уязвимом сайте.
Пример:
http://vulnsite.com/index.php?id=-1+union+all+select+1,group_concat(user,0x3a,file_priv),3,4+from+mysql.user--
Теперь на месте отображаемого столбца (т.е. замененного) мы видим список пользователей и права доступа к файлам (в формате: Имя пользователя:Права доступа, ...). Вы должны найти имя пользователя, которое вы видели раньше. Когда найдете его, посмотрите на правую сторону (рядом с именем). Если написано "Y" (Yes/Да), значит у вас есть права доступа к файлам и вы можете читать дальше. В противном случае там будет написано "N" (No/Нет) - у вас нет прав доступа.
В нашем примере у нас (разумеется) есть права доступа – “… наш_пользователь:Y,…”
Перейдем к следующей части.
Часть 3 – Используем команду Load File
Команда Load File полезна, когда вы хотите прочитать некоторые (конфигурационные) файлы, например "/etc/passwd", "/etc/shadow", и т.д.Синтаксис: load_file('ФАЙЛ')
Например, мы хотим прочитать файл “/etc/passwd”:
http://vulnsite.com/index.php?id=-1+union+all+select+1,load_file('/etc/passwd'),3,4+from+mysql.user--
Содержимое файла "/etc/passwd" будет отображено в столбце 2.
Примечание 1: "../" – означает выход из текущей директории.
Примечание 2: Если появляется ошибка когда вы пытаетесь прочитать какой-нибудь файл – это значит, что включены волшебные кавычки (эта функция добавляет косую черту до и после символов “”). Вы должны преобразовать имя файла (т.е. текст/строку) в шестнадцатеричный или символьный вид и удалить символы "":
Для шестнадцатеричного вида всегда добавляйте “0x” перед шестнадцатеричной строкой (без пробелов). Строка не должна содержать пробелов! Например: (Load File - "/etc/passwd":) load_file(0x2f6574632f706173737764)
Для символьного типа: char(NUMBERS,NUMBERS,NUMBERS...) ; если вы преобразуете строку (т.е. текст) в символьный вид и преобразованный текст содержит пробелы между номерами, вы должны заменить все пробелы запятыми(!) ; например: (Load File - "/etc/passwd":) load_file(char(47,101,116,99,47,112,97,115,115,119,100))
Кстати, это поможет в преобразовании текста в шестнадцатеричный и символьный вид: http://home2.paulschou.net/tools/xlate/
С командой Load File мы разобрались.
Часть 4 – Используем команду Into OutFile
Команда Into OutFile полезна когда вы хотите создать некоторый файл (на вашем уязвимом сайте/сервере). Например, вы хотите создать (простой PHP) файл, который будет подвержен уязвимости подключения файла с удаленного сервера (Remote File Inclusion), и использовать эту уязвимость.Синтаксис: INTO OUTFILE 'ФАЙЛ’
Примечание 1: Эта команда должна быть всегда в конце! Пример: ...+INTO+OUTFILE+'/ФАЙЛ'--
Для записи текста в ваш файл (на уязвимом сайте/сервере) замените один видимый столбец в URL (т.е. номер, который показан на странице) на ваш текст в кавычках, который будет записан в файл…
Рассмотрим наш образец: мы хотим записать текст "testing” в файл “test.txt” (на нашем уязвимом сайте/сервере) в директорию сайта:
http://vulnsite.com/index.php?id=-1+union+all+select+1,"testing",3,4+INTO+OUTFILE+'/home/vulnsite/www/test.txt'--
Примечание 2:
Если у вас два видимых столбца или более (т.е. номера, которые показаны на уязвимой странице), вам нужно заменить эти столбцы (т.е. номера в URL) словом "null"(!). Если вы не произведете замену, эти номера будут записаны вместе с вашим текстом в ваш файл на уязвимом сайте/сервере.
В нашем примере видимыми столбцами являются 2 и 3. Таким образом, мы должны произвести следующую замену:
http://vulnsite.com/index.php?id=-1+union+all+select+1,"testing",null,4+INTO+OUTFILE+'/home/vulnsite/www/test.txt'--
После того как страница загрузится без ошибок, файл будет создан (на нашем уязвимом сайте/сервере), и этот файл будет находиться по адресу: http://vulnsite.com/test.txt
Примечание 3: Если в тексте, записываемого файла вы хотите использовать кнопку Return/Enter, просто преобразуйте текст в шестнадцатеричный или символьный вид...
Примечание 4: Файлы должны создаваться в директории сайта. В противном случае команда Into OutFile не будет работать.
Примечание 5: Если страница где должен располагаться текст, записываемый в файл, пуста (т.е. возникает ошибка) - это значит, что включены волшебные кавычки. Эта функция добавляет косые черты до и после символов "". Вы должны преобразовать текст (т.е. строку) в шестнадцатеричный или символьный вид и удалить символы "". См. объяснение и ссылку в конце 3 части…
Внимание: Не преобразовывайте имя файла в шестнадцатеричный или символьный вид! В противном случае, метод не сработает! Предупреждение действительно только для команды Into OutFile. Если у (вашего) уязвимого сайта включены волшебные кавычки, команда Into OutFile не будет работать.
Мы разобрались с командой Into OutFile.
Часть 5 – Заключение
На этом мы закончили с командами, используемыми для MySQL инъекций (разумеется с доступом к таблице "mysql.user")...Не знаю, что еще сказать… Удачи!!!
Это все. Пока!
НОВОЕ НА САЙТЕ23 апреля 2024 года
В составе песочницы будет обновлена документация — описание работы обслуживания будет снова на... Антивирус Dr.Web
Бизнес-школа «БИЗНЕС ИНСАЙТ» и проект «ЭКСПЕРТЫ» приглашают на III Всероссийский онлайн-форум «БИЗНЕС. ВЕСНА 2024». Бизнес-форум — важнейшее событие в мире бизнеса. На одной площадке соберутся действующие предприниматели, эксперты-практики, чтобы поделиться […]
The post
17 апреля 2024 года
В 2023 году самыми всераспространенными Android-угрозами стали троянские программы, демонстрирующие рекламу. Шпионские троянские приложения по уподоблению с прошлым годом понизили свою энергичность таково словно стали вторыми по числу детектирований на защищаемых антивирусом Dr.Web устройствах. невзирая на то, словн... Вирусные новости
11 апреля 2024 года
Обновление ориентировано н... Антивирус Dr.Web
4 апреля 2024 года