Метка «sql-инъекция»

Добрый день!
Хочу рассказать, как я взломал большой американский сайт по созданию sitemap-ов и напомнить о защите от sql-инъекций. По сути, рассказ можно назвать взломом выходного дня. Но все по порядку.

Предыстория

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

Первые действия

И вот я снова возвращаюсь к созданию сайтмапа. Ввожу свои данные на том же сайте(уже подлинные), и раньше введенный адрес сайта. В результате обработки формы сайт выдает текст:

FATAL ERROR: Duplicate entry 'http://gnum.me/' for key 2 FATAL ERROR: query: 
INSERT INTO site (userid, url, verifyfile, usetimestamp, usepriority, useupload, useping, usepingbing, createdate) VALUES (178817, 'http://gnum.me/', 'fsga6a59.txt', '1','1','0','0','0', NOW());

Читать полностью »

Sqlmap — это программа с открытым исходным кодом, которая может стать отличным инструментом в руках пентестера. Главная задача сканера — автоматизированный поиск и эксплуатация sql уязвимостей. Sqlmap написан на python, а значит превосходно работает на большинстве современных операционных систем.

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

Выводы по SQL injection

Я знаю, что тема SQL инъекций уже всем набила оскомину :)

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

О том, как не допустить инъекций была уже масса статей — повторять не буду — сводится все к нескольким банальнейшим пунктам практики:
Читать полностью »

Когда я начинал программировать на PHP, еще мало кто думал о фильтрации переменных, все писали код на коленке и никто не слышал о словосочетании «SQL-инъекция». Не был исключением и я. Как и большинство людей, начинающих изучать веб-программирование, я не задумывался о том, какие переменные я получаю извне и где их использую. Я просто писал код, выполняющий именно то, что от него требовалось, а о безопасности я не беспокоился.

С тех пор утекло много воды, люди стали умнее, а способы взлома страниц — изощреннее. Сейчас, если ты не будешь отслеживать корректность данных, то тебя сможет взломать любой школьник, используя программы вроде Sqlmap или Havij (или любые другие). SQL injection, XSS, PHP injection — это лишь часть проблем, вызываемых непроверяемыми данными.
Читать полностью »

В данной статье приведены простые рекомендации по безопасности PHP прежде всего для начинающих программистов.
Читать полностью »

Так как я абитуриент в этом году, мне пришлось просмотреть несколько сайтов российских ВУЗов и определиться, куда поступать.

Примечание: ВУЗ, о котором пойдет речь, я упоминать не буду, ибо ошибки пока не устранены, хотя письма администраторам информирующие их об уязвимостях разосланы.

Через некоторое время, когда сайты были осмотрены, тексты с зазываниями по типу «какой у нас классный ВУЗ» прочитаны, и решение было принято, я решил проверить, как у выбранного университета с безопасностью.

Полазив по сайту, получив порцию информации, по разглядывая фотографии, я заметил, что все ссылки имеют одинаковый формат: xxx.ru/?id=46&group=xxxx. По старой привычке подставив кавычку в параметры я ничего толком не обнаружил, новость/статья/контент как выводились, так и выводятся. Никакой SQL инъекции в радиусе сайта не наблюдалось. Очень неплохо.

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

Все ли так хорошо у них? Я предполагал всего-лишь небольшой аудит безопасности, а вышло нечто большее.

Читать полностью »

Сразу хочу сказать, что данная статья написана исключительно в образовательных целях. Я не преследую никакого злого умысла и, тем более, не подталкиваю никого к совершению противоправных действий. Уязвимость на данный момент закрыта. Заинтересованных прошу под кат.
Читать полностью »

Когда пользовательские данные попадают в запрос под оператор LIKE следует быть предельно внимательными.
Дело в том, что ни одна функция фильтрации, включая mysql_real_escape_string, и даже prepared statements не защитят от логических ошибок, связанных с wildcard символами.

В нашей практике аудита веб-приложений, данная ошибка встречается примерно в каждом пятом веб-приложении, уязвимом к SQL-инъекциям (19.3%).

Оператор LIKE используется для поиска по неточному значению, строковых типов.
Синтаксис оператора позволяет использовать wildcard семантику, где
% заменяет классический * — последовательность любых символов
_ заменяет классический? — любой одиночный символ

Частая ошибка разработчиков состоит в том, что символы % и _ не фильтруются в попадании пользовательских данных в SQL запрос. Да, нарушить синтаксис запроса, то есть выполнить внедрение операторов, в этом случае нельзя, но может пострадать логика работы веб-приложения.
Читать полностью »

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

В этой статье я хотел бы поделиться одной простой (очень простой) истиной и статистикой, которые вывел и многократно проверил в течении трех последний лет просмотра тонн РНР кода.

Не секрет, что уязвимости внедрения операторов СУБД (SQL injections) являются самыми распространенными из всех серверных уязвимостей веб-приложений. Есть платформы и фреймворки, где такие вещи практически полностью исключены, например ORM'ом и прочим. Но статистика упорно говорит нам об абсолютном преобладании на просторах Интернета веб-приложений с простыми конкатенированными SQL запросами. Кроме того, есть случаи, где ORM вообще применим быть не может. Например, когда от пользовательских данных должны зависеть не только параметры выражений, но и сама логика запроса на уровне операторов.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js