19.09.2011

MySQL инъекция. Простое руководство по Load File и Into OutFile

image

Простое руководство по Load File и Into OutFile. Если вы знакомы с основами MySQL инъекции, вы можете приступить к чтению этого руководства.

Автор: MikiSoft

Часть 1 – Введение

Если вы знакомы с основами MySQL инъекции, вы можете приступить к чтению этого руководства…

Хорошо, давайте посмотрим, что такое 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")...

Не знаю, что еще сказать… Удачи!!!

Это все. Пока!

или введите имя

CAPTCHA
Q.Sergey.Q
06-04-2012 01:28:36
Что-то подобное я видел по моему, если папять мне не изменяет то здесь: http://doska.my1.ru/load/78937219103781
0 |
Branden
04-12-2014 07:04:31
I struck 250 within the scale the first time previously If you cherished this short article and you would like to receive far more facts about treadmill reviews kindly check out our own internet site.| http://findyourtreadmill.com
0 |
30-12-2014 10:23:55
А как сделать так, что бы новый текстовый файл он сохранял под новым именем? Например, text1.txt, при следующем запросе уже text2.txt и так далее
0 |
Егвений
17-10-2015 10:21:39
Все внятно описано спасибо только как можно на подобном примере раскрыть абсолютный путь сайта если по запросу load_file(%27/etc/apache2/httpd.conf%27),3,4+from+mysql.user-- мы получаем стандартный запоментированый httpd.conf ? спасибо
0 |