Про пентест и кибербезопасность

Kali Linux, SQL injections, XSS, JavaScript and etc

Обучение JS / XSS (скоро)

XSS, или межсайтовый скриптинг, — это тип атаки на веб-приложения, при которой злоумышленники встраивают злонамеренные скрипты в контент, отображаемый другим пользователям. Это может произойти, когда приложение принимает пользовательский ввод и возвращает его без должной проверки или очистки, что позволяет скриптам выполняться в браузере другого пользователя. Эти скрипты могут читать данные сессии, украсть личные данные, или даже перехватить контроль над аккаунтом пользователя. Существуют различные типы XSS-атак, включая отраженные, сохраненные и DOM-основанные XSS.


Написано на

От

Известные атаки с использованием SQL-инъекций — Халатность, которая стоила миллиардов

SQL-инъекции — это не просто техническая уязвимость. Это позорный символ человеческой лени, корпоративной жадности и системного провала в IT-безопасности. Каждый год компании теряют миллиарды долларов, клиентов и репутацию из-за дыр, которые можно закрыть за пару часов. Эта статья — не только о громких взломах, но и о том, как индустрия десятилетиями игнорирует элементарные правила, превращая интернет в минное поле.

SQLi 101: Как 5 строк кода уничтожают корпорации

SQL-инъекция (SQLi) позволяет злоумышленникам манипулировать базами данных через уязвимые формы, URL-параметры или API. Всё, что нужно хакеру, — ввести恶意ный код в поле ввода, которое не проверяется.

Типы SQLi:

  1. Classic SQLi (как в примере с ' OR '1'='1).
  2. Blind SQLi — атака, когда сайт не выводит ошибки, но злоумышленник угадывает структуру БД по времени ответа или косвенным признакам.
  3. Union-based SQLi — использование оператора UNION для объединения запросов и кражи данных.
  4. Out-of-band SQLi — экспорт данных через DNS- или HTTP-запросы, если прямое извлечение невозможно.

Пример Blind SQLi:
Если сайт уязвим, но не показывает ошибки, хакер может отправить:

' AND (SELECT sleep(10) FROM users WHERE username='admin' AND SUBSTRING(password,1,1)='a') --

Если сервер отвечает 10 секунд, значит, первый символ пароля администратора — a. Так, буква за буквой, взламывается вся база.

Почему это работает? Потому что разработчики до сих пор пишут код в стиле 1990-х:

// Уязвимый код на Node.js
const query = `SELECT * FROM products WHERE id = ${req.params.id}`;
db.execute(query); // Катастрофа!

Позорные кейсы: Дополненный список катастроф

5. Yahoo (2012–2016) — 3 миллиарда аккаунтов в руках хакеров

В 2016 году выяснилось, что Yahoo годами скрывала факт взлома через SQL-инъекции. Утекли данные 3 млрд пользователей, включая пароли, телефоны и секретные вопросы.
Последствия:

  • Сделка по продаже Yahoo Verizon была снижена на $350 млн.
  • Компания заплатила $117,5 млн в виде штрафов и компенсаций.
  • Репутация «динозавра», который не способен защитить пользователей.

Причина: Архитектура безопасности 2000-х, отсутствие шифрования паролей и слепая вера в «авось».


6. MySpace (2013) — Взлом 360 млн аккаунтов через устаревший код

Соцсеть MySpace, уже потерявшая популярность, стала жертвой SQLi-атаки. Хакеры получили доступ к данным пользователей, включая пароли в открытом виде (!!!).
Ирония: Взлом произошел в тот момент, когда MySpace пыталась перезапуститься. Результат — окончательная потеря доверия.

Ошибка: Отсутствие хеширования паролей и регулярных аудитов безопасности.


7. Взлом государственных порталов (2020) — Данные миллионов граждан в Darknet

В 2020 году хакерская группа Shiny Hunters использовала SQLi для атак на государственные сайты в Латинской Америке и Азии. Утекли:

  • Медицинские записи.
  • Паспортные данные.
  • Налоговые декларации.

Почему это важно: SQLi стал инструментом не только киберпреступников, но и политических шантажистов.


Статистика, которая пугает

  • По данным OWASP, SQLi занимает 1-е место в топ-10 уязвимостей веб-приложений с 2010 года.
  • 42% компаний, пострадавших от SQLi, признают, что не проводили пентесты перед запуском продукта (исследование Ponemon Institute, 2023).
  • Средний ущерб от утечки данных в 2023 году —Средний ущерб от утечки данных в 2023 году — 4,45млн долларов

Юридические последствия: Кому выгодна ваша халатность?

  • GDPR (ЕС): Штрафы до 4% глобального оборота компании. Пример: British Airways оштрафована на £20 млн за утечку данных 400 тыс. клиентов.
  • Суды: Пользователи всё чаще выигрывают иски. В 2021 году суд обязал Equifax выплатить $700 млн жертвам утечки, включая расходы на кредитный мониторинг.

Вывод: Игнорирование SQLi — это не только технический просчёт, но и прямой путь к банкротству.


Как компании скрывают правду (и усугубляют проблему)

  1. Молчание: Как Yahoo, годами не сообщавшая о взломе.
  2. Обвинение жертв: «Пользователи сами выбрали слабые пароли».
  3. Фейковые исправления: Устранение одной уязвимости при наличии десятков других.

Реальный диалог из расследования взлома TalkTalk:
Разработчик: «Мы думали, что старый код никто не найдёт».
Аудитор: «Его нашёл школьник за 10 минут».


Как защититься? Инструкция для тех, кто не хочет потерять всё

  1. Никаких оправданий: Внедрите параметризованные запросы во все приложения.
    • Пример на C#:command = new SqlCommand(«SELECT * FROM Users WHERE Login = @user», connection); command.Parameters.AddWithValue(«@user», inputUser);
  2. Web Application Firewall (WAF): Настройте правила для блокировки подозрительных запросов (например, содержащих UNION SELECT или sleep()).
  3. Хеширование и соль: Пароли должны храниться только в виде хешей с «солью». Никаких md5(password)!
  4. Регулярные аудиты: Используйте инструменты вроде SQLMap для автоматического поиска уязвимостей.
  5. Ошибки — в лог, а не пользователю: Настройте вывод общих сообщений вроде «Ошибка сервера», чтобы хакеры не видели структуру БД.

Истории выживших: Кто справился с SQLi?

  • GitHub: После инцидента в 2018 году внедрил строгий код-ревью и автоматическое сканирование зависимостей.
  • Microsoft: В Azure SQL Database по умолчанию используются параметризованные запросы, а динамический SQL отключён.
  • Малый бизнес: Кафе в Берлине после взлома сайта перешло на статический генератор (JAMStack), исключив БД из публичного доступа.

Заключение: Вы либо чините дыры, либо тоните в исках

SQL-инъекции — это не «техническая мелочь», а индикатор отношения компании к безопасности. Каждый пример в этой статье — результат чьей-то уверенности, что «пронесёт». Но как показывает практика, не пронесёт.

Спросите себя:

  • Сколько денег вы готовы потерять?
  • Сколько клиентов готовы предать?
  • Сколько лет готовы судиться?

Если ответы пугают — закройте SQLi сейчас. Или продолжайте кормить хакеров, юристов и конкурентов. Выбор за вами.

P.S. Если ваш CTO говорит, что SQLi — это «редкая угроза», покажите ему эту статью. И поищите нового CTO.