Что можно сделать с сайтом имея доступ к базе данных

Что нужно знать владельцам сайтов, чтобы не потерять свой бизнес?

Что можно сделать с сайтом имея доступ к базе данных. Смотреть фото Что можно сделать с сайтом имея доступ к базе данных. Смотреть картинку Что можно сделать с сайтом имея доступ к базе данных. Картинка про Что можно сделать с сайтом имея доступ к базе данных. Фото Что можно сделать с сайтом имея доступ к базе данных

Деятельность бизнеса в интернете все более плотно регулируется со стороны государства. Например, с 1 июля 2017 года увеличились штрафы за незаконную обработку персональных данных на сайте и введен новый порядок применения ККТ.

Мы составили чек-лист по каждому из «болезненных» вопросов бизнеса в интернете: что нужно помнить при регистрации хостинга, домена, покупке прав на сайт? Как соблюдать права интеллектуальной собственности в сети Интернет? Что делать, если с вашего сайта скопировали контент или дизайн? Как избежать штрафов до 300 000 рублей за нарушение ФЗ-152 и 54-ФЗ?

О чем стоит помнить, приобретая хостинг

Договор на хостинг заключается на срок от одного месяца и более, оплата за хостинг должна вноситься регулярно, так как хостинг-провайдеры в автоматическом режиме блокируют неоплаченные сайты и все сервисы, которые с этим связаны.

Договора у хостеров, как правило, «типовые», их не будут редактировать под запросы вашего юриста. Счета высылаются автоматически на почту, указанную при заключении договора.

5 основных вопросов к вашему хостинг-провайдеру

Домен: часть нематериального актива компании

Доменное имя может быть объектом сделок. Его регистрация осуществляется после заключения соответствующего договора с компанией-регистратором. Урегулирование спорных вопросов, осуществляется в рамках российского законодательства.

Права на домен дают:

О чем стоит помнить при покупке домена

Права на сайт

Сайт может быть создан по одной из следующих схем:

О чем стоит помнить, заказывая сайт

Какие существуют риски

Что нужно помнить?

Представьте, вы разработали уникальный графический материал, написали интересные тексты, запрограммировали сервисы, разместили все это на своем сайте, а через пару дней наблюдаете, что эта информация скопирована на другие сайты без всякого упоминания о первоисточнике.

Как отстоять свои права

Что еще можно сделать

Когда копирование материалов нашего сайта бывает полезным?

Работа с персональными данными

С 1 июля 2017 года штрафы за нарушение закона повысились. В совокупности штраф может составить до 300 000 руб. Минимальный штраф вырос с 10 000 руб. до 75 000 руб.

Обязательно к исполнению

54-ФЗ: новый порядок применения ККТ

С 1 февраля 2017 года контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных — новые правила установлены в 54-ФЗ ст.2 п.2.

Юридическое лицо или ИП обязано приобрести фискальный накопитель, подключить on-line кассу, заключить договор с оператором фискальных данных и отправлять чеки в электронном виде в ФНС через оператора фискальных данных.

Что можно сделать с сайтом имея доступ к базе данных. Смотреть фото Что можно сделать с сайтом имея доступ к базе данных. Смотреть картинку Что можно сделать с сайтом имея доступ к базе данных. Картинка про Что можно сделать с сайтом имея доступ к базе данных. Фото Что можно сделать с сайтом имея доступ к базе данных

Схема работы online-оплаты согласно новому закону

Что будет, если проигнорировать закон?

Кого закон не касается до 1 июля 2018 года?

Хотите узнать больше?

3 августа в коворкинге «Сколково» пройдет семинар «Интернет и закон: что нужно знать владельцам сайтов, чтобы избежать штрафов до 300 000 руб.» при участии экспертов в области юриспруденции и веб-разработки.

Приглашаем руководителей инновационных и технологических компаний, стартаперов, специалистов отдела продаж, маркетологов и специалистов в области IT. Участие бесплатно, регистрируйтесь по ссылке >>

В завершении семинара спикеры ответят на конкретные вопросы, связанные с вашим бизнесом, прокомментируют возможные риски, дадут советы и рекомендации.

Источник

Инструменты пользователя

Инструменты сайта

Боковая панель

Олег Зорин

Содержание

Доступ к сайту. Владельцам сайтов посвящается.

Сегодня многие компании, да и просто частные лица, задумываются о создании сайта для продвижения своих товаров или услуг в интернете.

По своему опыту, могу сказать, что подавляющее большинство считают, что сайт это очень круто и просто:

Ну да ладно, это было немного лирики, направленной на осознание ответственности владельца перед своим сайтом.

Второй вопрос. А почему? Так ведь это важно для вас. На деньги живем, а без бумажки в России ты вообще не человек.

Давайте по порядку рассмотрим подводные камни, о которых важно знать и с которыми вы можете столкнуться…

Доменное имя

Вы должны иметь доступ в личный кабинет для управления доменом:

Однажды я выступал субподрядчиком при разработке интернет-магазина. В основном работал на прямую с заказчиком, так как это получалось значительно быстрее, чем через основного подрядчика (хотя это и не правильно).

Я не знаю чем кончилась эта история. Но думаю, что в большинстве случаев домен закрывается. Кто мешает подрядчику выставлять счета на проплату домена с ценником прямопропорциональным доходности с сайта?

Хостинг

Вы должны иметь доступ в личный кабинет для управления хостингом:

Если у вас собственный сервер, то можете пропустить эту часть, но пароли и явки знайте.

FTP-доступ

Доступ к базе данных

Вы должны знать следующие данные о доступе к БД:

Удаление базы данных еще одна глупая забава крекеров. Но кража и использование против вас вашей же информации это уже совсем не смешно.

Доступ к панели администрирования сайта

Вы должны знать следующие данные:

У меня был случай, когда разъяренная девушка одного моего клиента, при разрыве отношений сменила пароли к ПА. В результате пока он понял что что-то не то, пока позвонил мне, пока все восстанавливали, прошел день. Для некоторых это может оказаться существенной потерей.

Еще раз, что же нужно знать

Немного повторюсь, вы должны иметь пароли и явки:

Советы по безопасности вашего сайта

За последние три месяца, ко мне пришли двое друзей с просьбами что-то подправить на их сайтах, но оба не знали паролей доступов… Поймите, что все ваши усилия и старания затраченные на ваш сайт могут пойти прахом, лишь потому, что кто-то третий имеет доступ к вашему детищу.

Источник

Ключи к сайту: доступы, которые должны быть у каждого владельца сайта

Вступление: сайты создают разные люди: это может быть программист-одиночка, целая команда людей, работающих над созданием сайта, или просто человек с мечтой, который сам заказывает хостинг, домен и устанавливает CMS. Но в любом случае кто-то должен знать о сайте всё самое важное для его развития, поддержания работоспособности и эффективного продвижения в поисковых системах.

В нашей практике бывают случаи, когда бриф составлен, все условия обсуждены, можно приступать к работе… а доступов у владельца сайта (или ответственного лица) нет.

Рассмотрим, что этот человек должен знать и что может случиться, если упустить один из пунктов этого списка.

1. Хостинг и доступы к нему (логин, пароль, на какой email зарегистрирован, Id (или номер договора))

Необходимо серьёзно относиться к сообщениям от хостинг-провайдера и вовремя оплачивать услуги.

Зачем это нужно: если этого не делать, то ваш аккаунт вместе с сайтом могут удалить, и тогда придётся их восстанавливать, если есть резервная копия (бэкап), или делать их заново, если бэкапа нет. А это дополнительные расходы на восстановление, и сайт в процессе восстановления будет недоступен.

Что делать, если данные доступа утеряны: написать/позвонить в техподдержку хостинга, указав все данные, которые есть: сайт, email, на который зарегистрирован аккаунт, номер договора.

Пример из жизни. Был случай, когда восстановление заняло более 4 часов, т. к. аккаунт был удалён за неуплату. В результате аккаунт (файлы и базу данных) всё-таки восстановили. Но так как настройки сервера не хранятся в резервной копии, пришлось всё настраивать заново.

2. Домен

Если домен находится не в одном аккаунте с хостингом, то нужно иметь все данные по нему: email, на который зарегистрирован домен, доступ к аккаунту доменного регистратора (логин (обычно это ваш email) и пароль). Так же серьёзно нужно относиться к сообщениям от доменного регистратора. Не менее важно вовремя оплачивать услуги.

Зачем это нужно: если вовремя не оплатить домен, сайт приостановит работу (будет недоступен), а это снова потери, особенно если у вас сайт интернет-магазина. Домен также могут перекупить, и тогда вернуть его будет сложнее. Новый владелец может запросить за него сумму гораздо большую, чем регулярный годовой платёж за домен, либо вовсе отказаться его возвращать. Обычно по истечении срока регистрации предоставляется ещё месяц для внесения оплаты. Если в этот срок не оплатить домен, то регистрация аннулируется, и домен может быть зарегистрирован любым другим лицом. Также стоит помнить, что для международных доменов (com, net) правила строже: после окончания регистрации (Expiration Date) домен может быть продлён прошлым владельцем за повышенную цену. Таковы правила международного регистратора. Поэтому в международной зоне особенно важно следить за сроками оплаты.

Что делать, если доступ утерян: попытаться восстановить доступ, указав email. Если вы не знаете или не можете вспомнить, на какой email зарегистрирован домен, тогда напишите/позвоните в техподдержку хостинга. Там вам подскажут, что можно сделать для восстановления.

3. Доступы в административную панель своего сайта (с админскими правами) и FTP-аккаунт

Адрес входа в административную панель сайта:

https://site.ru/wp-admin
email: alex198@gmail.com
логин: alex
пароль: h98,_gh+fD

хост: ftp.site.ru
логин: alex_ftp
пароль: k+_rFth_4

Примечание: лучше не сохранять пароли в браузерах и ftp-клиентах, т. к. их могут перехватить.

Это необходимо знать, чтобы вносить изменения на сайт, даже если это визитка-одностраничник, где кроме пары слов о вас и контактных данных ничего нет. Знать доступы нужно и для собственной безопасности. В идеале у вас должен быть только один аккаунт с полными правами (администратор). А для поддержки работоспособности сайта нужны аккаунты для программистов, верстальщиков, сотрудников техподдержки CMS, разработчиков плагинов и т. д., которые вы должны иметь возможность контролировать. В зависимости от CMS (особенно хорошо это реализовано в Битриксе), можно настроить разные уровни доступа к данным сайта и создать отдельные аккаунты для SEO-оптимизаторов, контент-менеджеров, программистов и т. д.

Что делать, если доступ утерян: восстановить пароль к админке сайта можно через функцию сброса-восстановления пароля, которая есть практически на каждом сайте. Для восстановления необходим email, а логин-пароль к FTP обычно можно посмотреть, добавить или сбросить в админпанели хостинга.

4. Есть ли у сайта мобильная версия и как она реализована

Достаточно знать, какой из следующих вариантов используется на вашем сайте: адаптивная вёрстка, отдельный шаблон для мобильной версии либо мобильная версия сайта на поддомене (о том, что это такое и в чём отличия между этими вариантами реализации, можно почитать тут).

Подсказка: чтобы проверить, если ли вообще у сайта мобильная версия, откройте его на мобильном устройстве :).

5. Аккаунты в Google и/или Яндексе

Нужно знать, установлен ли счётчик Google Analytics/Метрика и добавлен ли сайт в Google Search Console/Яндекс. Вебмастер. Также необходимо иметь доступ к этому аккаунту и уметь расшаривать его со специалистами.

Зачем это нужно: регистрация аккаунта не входит в работы по разработке сайта, но поскольку установка кода часто требует вмешательства в код шаблона сайта, то именно веб-разработчиков просят добавить коды Яндекс. Метрики и Google Analytics. Поэтому после окончания работ по сайту и его запуска попросите разработчика передать вам доступы к этим аккаунтам с правами администратора.
В случае если на сайт установлены счётчики, но доступов вам не предоставили, потребуйте их. Если по какой-то причине связи с разработчиками нет, то придётся заново создавать аккаунты, добавлять файлы подтверждения прав на сайт и коды Яндекс. Метрики и Google Analytics. Но в этом случае вся собранная ранее статистика будет вам недоступна.

Примечание: не забудьте удалить файл или метатег подтверждения прав на сайт, а также коды счётчиков, доступа к которым у вас нет.

К сожалению, таких случаев невнимательного отношения к аккаунтам, которые создаются для сбора статистики, много.

Последствия: SEO-аналитикам для работы понадобится несколько недель ожиданий, прежде чем можно будет проводить аудит и ставить диагноз. Особенно ценны эти недели, если сайт под фильтром.

6. Сертификат SSL

Вы должны знать, какой у вас сертификат, где он получен, на каких условиях и как часто его нужно продлевать (обычно покупается на год).

Зачем это нужно: сам по себе сертификат SSL позволяет работать через защищённый протокол, который подразумевает более безопасную связь. А вовремя продлевать его необходимо для того, чтобы он не заменялся самоподписным и не пугал посетителей сайта следующим сообщением:

Что можно сделать с сайтом имея доступ к базе данных. Смотреть фото Что можно сделать с сайтом имея доступ к базе данных. Смотреть картинку Что можно сделать с сайтом имея доступ к базе данных. Картинка про Что можно сделать с сайтом имея доступ к базе данных. Фото Что можно сделать с сайтом имея доступ к базе данных

Последствия: очевидно, что при виде такого сообщения большинство посетителей (если не все!) уйдут с сайта.

Если вы всё-таки потеряли пароль от аккаунта на сайте центра сертификации, восстановить его можно с помощью email.

И последний совет: как видите, у вас получится несколько дополнительных email, т. е. минимум по одному аккаунту в Google и Яндексе. Поэтому, чтобы за всем уследить, настройте пересылку со всех этих аккаунтов на ваш основной email.

Что можно сделать с сайтом имея доступ к базе данных. Смотреть фото Что можно сделать с сайтом имея доступ к базе данных. Смотреть картинку Что можно сделать с сайтом имея доступ к базе данных. Картинка про Что можно сделать с сайтом имея доступ к базе данных. Фото Что можно сделать с сайтом имея доступ к базе данных

Пришла с небольшими знаниями в настройке, установке и принципах работы нескольких CMS. С тех пор «обросла» знаниями и опытом в разработке сайтов на следующих CMS, PHP и JS/CSS-фреймворках: WordPress, Joomla, Bitrix, MODx, Drupal, Codeigniter, Laravel, Bootstrap.

Разрабатывает, дорабатывает, перерабатывает и адаптирует сайты.

Девиз: если очень захотеть, можно в космос полететь

Источник

Атакуем БД сайта

Что можно сделать с сайтом имея доступ к базе данных. Смотреть фото Что можно сделать с сайтом имея доступ к базе данных. Смотреть картинку Что можно сделать с сайтом имея доступ к базе данных. Картинка про Что можно сделать с сайтом имея доступ к базе данных. Фото Что можно сделать с сайтом имея доступ к базе данных

Спецвыпуск: Хакер, номер #052, стр. 052-084-1

Что может сделать взломщик используя SQL injection

С каждым днем все больше скриптов используют базы данных, все больше хостингов доверяют пароли своих клиентов SQL-базам, все больше популярных сайтов переходит на публичные форумы и движки, работающие с MySQL. Но далеко не все ясно представляют себе, насколько опасным может быть непродуманное использование MySQL в скриптах.

Без знаний основ языка SQL трудно что-либо понять. Прежде всего разберемся, в чем заключается суть атаки типа SQL injection. К примеру, на атакуемом сервере стоит следующий PHP-скрипт, который на основе поля category_id делает выборку заголовков статей из таблицы articles и выводит их пользователю:

//подключаемся к MySQL

mysql_select_db($dbname) or die(mysql_error());

Почему хакер не стал вставлять имя столбца вместо единицы? Ему нужна текстовая информация (логин, пароль), а в нашем случае в левом запросе SELECT на первом месте идет article_id, имеющий тип INT. Следовательно, в правом запросе хакер не может ставить на первое место имя столбца с текстовой информацией (правила UNION).

Теперь рассмотрим некоторые ситуации, в которых использование UNION затруднено по тем или иным причинам.

Случается и такое, что в PHP-коде подряд идет несколько SQL-запросов, подверженных Injection. И все они используют переменную, в которую злоумышленник вставляет SQL-код. Например (опускаю PHP):

$result=mysql_query(«SELECT article_id, article_title FROM articles where category_id=$cid»);

$result=mysql_query(«SELECT article_name FROM articles where category_id=$cid»);

//тут вывод результата

Скрипт выводит не весь результат запроса, а, например, только первую запись. И если хакер будет прямо пользоваться UNION, то скрипт выдаст только первую запись из ответа MySQL, а остальное отбросит, в том числе результат SQL Injection. Для того чтоб преодолеть все препятствия и на этом этапе, хакер передаст левому запросу такой параметр для WHERE, чтобы в ответ на него MySQL не вернул ни одной записи.

Скрипт не выводит результат запроса. Например, есть скрипт, который выводит какие-либо статистические данные, например, количество авторов, принадлежащих к определенной группе. Причем количество записей он считает не с помощью MySQL-функции COUNT, а в самом скрипте. Скрипт шлет MySQL такой запрос: SELECT id FROM authors where category_id=$cid.

Допустим, скрипт возвращает что-то вроде «Найдено десять авторов в данной категории». В этом случае злоумышленник будет эксплуатировать SQL injection, конечно же, методом перебора символов! Например, хакеру надо получить пароль автора с для чего потребуется перебирать каждый символ пароля. Но как получить символ, если PHP не выводит ничего из того, что возвратил MySQL?

Рассмотрим такой запрос: SELECT id FROM authors where category_id=-1 UNION SELECT 1,2 FROM authors WHERE AND ASCII(SUBSTRING(password,1,1))>109. Результатом запроса будет одна запись, если ASCII-код первого символа пароля больше 109, и ноль записей, если больше, либо равна. Итак, методом бинарного поиска нетрудно найти нужный символ. Почему хакер использует знаки «больше/меньше», а не «равно»? Если взломщику надо получить 32-символьный хэш пароля, ему придется делать примерно 32*25 запросов! Метод бинарного поиска позволяет сократить это число в два раза. Само собой, делать запросы хакер будет уже не руками, а с помощью скрипта, автоматизирующего перебор.

Несмотря на отсутствие в третьей версии оператора UNION, и из нее хакер сможет вытащить то, чем интересуется. В осуществлении этого замысла помогут подзапросы и перебор символов, но описание этого метода займет еще пару листов (которых мне не дали). Поэтому ищи статьи на эту тему на www.rst.void.ru (автор 1dt.w0lf) и www.securitylab.ru (автор Phoenix).

Правило №4. Никогда не разрешай скриптам работать с MySQL от root. Ничего хорошего не выйдет, если хакер получит доступ ко всей базе.

Правило №5. Запускай публичные скрипты от отдельного пользователя с отдельной базой. Неприятно будет, если какой-нибудь кидди, воспользовавшись 0day-дырой в форуме, получит доступ к базе с СС твоих клиентов.

Чаще всего уязвимости оставляют в тех запросах, параметры которых передаются через hidden формы в HTML и через cookies, видимо, из-за того, что они не видны пользователю и не так привлекают внимание злодеев.

Часто забывают про SQL Injection в функции Reply, о поиске сообщений пользователя в форумах, в репортах различных сервисов. В 80% WAP-сервисов SQL injection находят по десять штук в каждом скрипте (наверное, админы думают, что туда только через сотовые ходят). На самом деле многие недооценивают SQL Injection. Известен случай, когда обычная SQL injection в скрипте репорта привела к реальному руту на трех серверах и дампу гиговой базы. А всего-то SQL Injection…

inattack.ru/group_article/34.html
www.rst.void.ru/papers/sql-inj.txt
www.securitylab.ru/49424.html
www.securitylab.ru/49660.html

Все чаще администраторы получают возможности убедиться в том, что знания по безопасности запросов к MySQL не менее важны, чем эффективное использование этих запросов.

Защитить свою базу от хакеров можно – нужно только грамотно следовать определенным правилам по нейтрализации подобных атак.

С помощью UNION хакер может легко узнать пользователя, базу данных и версию MySQL, для чего используются функции user(), database() и version() соответственно. Взломщик просто сделает запрос типа SELECT user().

Даже если в обороне есть брешь, можно дезинформировать противника присваивая переменным нелогичные названия. Тогда их будет просто невозможно подобрать.

Чем ты больше знаешь о том, как ломают, тем проще предотвратить взлом.

Регулярно просматривай новостные сайты по безопасности, чтобы быть в курсе вновь изобретенных способов взлома и не допускать утечек ценной информации.

Источник

Методы и средства взлома баз данных MySQL

Содержание статьи

MySQL — одна из самых распространенных СУБД. Ее можно встретить повсюду, но наиболее часто она используется многочисленными сайтами. Именно поэтому безопасность базы данных — очень важный вопрос, ибо если злоумышленник получил доступ к базе, то есть большая вероятность, что он скомпрометирует не только ресурс, но и всю локальную сеть. Поэтому я решил собрать всю полезную инфу по взлому и постэксплуатации MySQL, все трюки и приемы, которые используются при проведении пентестов, чтобы ты смог проверить свою СУБД. 0day-техник тут не будет: кто-то еще раз повторит теорию, а кто-то почерпнет что-то новое. Итак, поехали!

Вместо предисловия

Начнем с определения. MySQL — это реляционная система управления базами данных, которая обладает разными движками хранения данных: MyISAM, InnoDB, Archive и другими. Как и у большинства open source проектов, у нее существуют свои ответвления, например MariaDB. Забегая вперед, скажу, что большинство рассмотренных векторов/техник/багов распространяется на различные движки и на ответвления, правда не всегда.

Различные версии MySQL под разные платформы можно взять тут

Поиск жертв

Но перейдем непосредственно к делу. Для того чтобы кого-нибудь поломать, нужно его для начала найти. Допустим, что мы уже знаем, кто наша жертва, знаем его IP либо находимся в его локальной сети. Нам нужно просканировать его адрес (сеть) на наличие открытых портов. По стандарту MySQL использует порт 3306, его мы и будем искать. В арсенале каждого хакера должен присутствовать сканер Nmap, который позволяет находить различные сервисы, порты на целевых машинах. Пример команды для сканирования выглядит следующим образом:

SHODAN

Если у тебя нет определенной жертвы и ты хочешь протестировать свои навыки, то можешь воспользоваться хакерским поисковиком Shodan. Он позволяет делать поиск по хостам и выводить информацию о различных сервисах на основе баннеров ответов. Также имеет возможность фильтровать по портам, стране, городу, операционным системам и так далее. Одна из отличнейших фишек — поиск сервисов с анонимной авторизацией или авторизацией со стандартными кредами. Очень полезный сервис, но лучше всего проводить тесты уязвимостей на своих локальных ресурсах :).

Хакер #195. Атаки на Oracle DB

GitHub

Что можно сделать с сайтом имея доступ к базе данных. Смотреть фото Что можно сделать с сайтом имея доступ к базе данных. Смотреть картинку Что можно сделать с сайтом имея доступ к базе данных. Картинка про Что можно сделать с сайтом имея доступ к базе данных. Фото Что можно сделать с сайтом имея доступ к базе данныхРис. 2. Наглядные результаты по поиску кредов MySQL на GitHub

Поэтому первым делом на пентестах мы бежим и проверяем GitHub на наличие исходников клиента. Если что-то находится, то можно смело коннектиться к базе данных, после чего, отталкиваясь от прав, извлекать нужные нам данные. Но если уж получилось так, что мы не смогли найти заветных строчек username/password, не стоит отчаиваться — можно порыться в исходниках сайтов, если они присутствуют, и проводить аудит уже не вслепую, а с исходным кодом сервиса. Он значительно облегчает задачу поиска уязвимостей: теперь мы будем не просто фазить наобум, а проверять определенные векторы, выстроенные на основе исходников. Например, смотреть, в каких местах производится обращение в базу, используется ли фильтрация данных от клиента и так далее.

Инструментарий

Для поиска инъекций существуют разные способы: автоматически или вручную вставлять везде кавычку (фаззинг); использовать фишку с Гитхабом, уповая на неосторожность разработчиков исследуемого сервиса. И наконец настал момент истины: мы нашли нашу долгожданную инъекцию и готовы внедряться по полной. Но вот беда, у нас появились неотложные дела (друзья зовут попить пива), или нас одолела ужасная необоримая лень. Не стоит расстраиваться, на помощь придет отличная тулза sqlmap, которая автоматизирует процесс поиска и эксплуатации SQL-инъекций, и не просто найдет дыру в безопасности, а проэксплуатирует ее по полной программе. Поддерживает все виды инъекций. Функционал sqlmap позволяет: дампить базы, автоматически искать в базе, извлекать и расшифровывать логины и пароли, запускать cmd shell, запускать интерактивный sql shell, в котором тебе нужно только писать SQL-запросы в базу, а sqlmap сам составит payload для инъекции. Существует отличный Cheet Sheet, который в двух страничках показывает все возможности данной тулзы.

Есть еще несколько инструментов, которые пригодятся тебе в нелегком деле покорения MySQL. В особенном представлении они не нуждаются, так как наверняка ты о них уже не раз (не одну тысячу раз) слышал. Первый — Metasploit, одна из ключевых программ для хакинга, позволяющая создавать эксплойты, проводить их отладку. Второй — сканер Nmap, про который в журнале тоже не раз писали.

Информации по всем перечисленным инструментам хватает с избытком, поэтому мы не будем углубляться в детали их использования, кто их еще не юзал — обязательно должен это сделать, а Google и официальные сайты ему в этом помогут. Мы же двигаемся дальше.

Сбор информации

В Nmap также существует модуль, который подключается к серверу и выводит разную полезную информацию: протокол, номер версии, состояние и соль.

Брутфорс

Среди основных вещей, которые приходится часто выполнять, конечно, брутфорс — проверка на слабые или стандартные пароли пользователей. Но прежде чем приступать к подбору паролей, можно провести атаку user enumeration (перечисление пользователей). Ее можно провести против серверов версии 5.x, которые поддерживают старые механизмы аутентификации (CVE-2012-5615). После сканирования мы будем знать, какие пользователи существуют в базе, что значительно сокращает пул пользователей для бруторса.

Составив наш пул имен и паролей, приступаем к бруту:

Nmap использует стандартные списки паролей и пользователей, но всегда можно взять свои:

Кстати говоря, вот тебе отличный репозиторий, где можно найти самые популярные логины, пароли и не только. Ну и обычно при брутфорсе выполняется еще одна простая, но довольно важная проверка на пустой пароль для пользователя root или anonymous:

Постэксплуатация

Следующий важный шаг, который наступает после получения логина/пароля (через инъекцию или полным перебором), — это постэксплуатация. Я перечислю различные модули для Nmap’а и их предназначение. Итак, модуль, который производит вывод баз данных:

Модуль, который производит вывод пользователей:

Модуль, который производит вывод переменных:

Модуль, который производит вывод пользователей и их хешей в виде, удобном для брутфорса:

Модуль, который заменяет клиент MySQL и отправляет запросы в удаленную базу:

Сканирование на CVE-2012-2122

Отдельно стоит упомянуть про один интересный модуль, который присутствует как в Metasploit, так и в Nmap, — модуль проверки на CVE-2012-2122. Данная уязвимость позволяет удаленным пользователям обходить аутентификацию из-за ненадлежащей проверки возвращаемых значений. Существует возможность авторизации с неправильным паролем с вероятностью 1/256, так как MySQL считает, что пришедший токен от пользователя и ожидаемое значение равны. Используя известное имя пользователя (например, root, который присутствует практически всегда) с любым паролем, можно подключиться к базе, повторяя подключение порядка 300 раз. После чего можно сдампить все пароли пользователей, сбрутфорсить их и коннектиться уже с легитимным паролем. Но не все так хорошо, как кажется, — данной уязвимости подвержены только сборки, где функция memcmp() возвращает значения за пределами диапазона от –128 до 127, то есть это достаточно ограниченное число систем:

Но если есть даже самая незначительная возможность попасть в базу, то стоит попробовать:

Для Nmap при сканировании нужно использовать скрипт mysql-vuln-cve2012-2122 :

Бородатый UDF

В далекие-далекие времена, когда еще во вселенной MySQL не было введено триггеров и хранимых процедур, существовала поддержка User-Defined Function (определенные пользователем функции). Но в современном мире данная фишка тоже имеет место быть и поддерживается до сих пор в качестве внешних хранимых функций. Данные функции не просто комбинируют разные SQL-операторы в какой-то определенный запрос, а еще и сильно расширяют функциональность самой базы. Так как, в отличие от Oracle Database, в MySQL не существует наикрутейшей Java-машины, с помощью которой можно крушить все и вся в базе, одним из немногочисленных способов выполнять команды на сервере через базу остается UDF. Во времена 4-й версии MySQL это был эксплойт Raptor, но он имел ряд ограничений, в том числе несовместимость с MySQL 5.0 и выше.
В данный момент существует легальная библиотека, которую можно скачать с легального сайта. Она содержит в себе четыре функции:

А затем можно уже и выполнять с ее помощью различные команды:

Техника эта не нова, и поэтому все до нас уже сделано и автоматизировано, так что не придется самому устанавливать функцию, если под рукой есть Metasploit:

То же самое умеет делать и sqlmap, так что, если ты нашел инъекцию, дальше можешь смело отдавать бразды правления ему.

Сценарий использования UDF

Один из возможных сценариев заливки шелла / повышения привилегий может выглядеть таким образом. Для начала нужно получить доступ к самой базе (пользователю root либо другому, обладающему привилегией FILE ) через инъекцию, брутфорс или иначе. После чего нам нужно получить копию библиотеки UDF на атакуемой машине, учитывая операционную систему и ее битность. Можно воспользоваться вариантами, входящими в состав sqlmap, которые можно взять тут. Кстати, в данном репозитории присутствуют библиотеки и для Windows. Закинуть копию библиотеки на сервер можно по-разному:

Следующим шагом является выполнение SQL-запросов для того, чтобы загрузить наш шелл в таблицу, после чего извлечь его в нужную нам папку ( /usr/lib для Linux, c:\windows\system32 для Windows). Далее мы создаем новую функцию в MySQL, теперь у нас есть рабочий шелл и возможность RCE на сервере.

Пример для Windows с созданием пользователя:

Как вариант, можно подключить RDP:

Заключение

Точек вхождения в чужую базу MySQL не так уж и много по сравнению с другими СУБД: SQL Injection, поиск логинов и паролей на GitHub, брутфорс, уязвимость к багам из паблика. К методам постэксплуатации можно еще дополнительно отнести повышение привилегий, DoS-атаки, применение триггеров и хранимых процедур. Правда, отдельные из них относятся к частным случаям, которые нечасто можно встретить либо для которых нужны очень специфичные условия.

Я же хотел показать тебе, как можно быстро и без особых усилий проверить нужную базу. Как видишь, в данный момент все стало автоматизированным, что позволяет проводить проверку в фоне, занимаясь своими делами. На этом все. И помни, что большая сила накладывает большую ответственность :).

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *