Тестирование на проникновение Принцип и проверка уязвимости SQL-инъекций (2) - Эксплуатация уязвимости SQL-инъекций
Тестирование на проникновение Принцип и проверка уязвимости SQL-инъекций (2) - Эксплуатация уязвимости SQL-инъекций

Обзор SQL-инъекций

Что такое уязвимость SQL-инъекции?

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

Принцип уязвимости SQL-инъекции

Сервер не фильтрует вредоносные данные, введенные пользователем, и напрямую выполняет введенные пользователем данные в виде оператора SQL, тем самым влияя на безопасность базы данных и платформы.

Необходимо выполнить два условия:

  • Пользователь может контролировать ввод
  • Исходный оператор SQL, который должен выполнить программа, дополнен вредоносными данными, введенными пользователем.

Процесс SQL-инъекции

Опасности, вызванные SQL-инъекцией

  • Обход проверки входа: используйте универсальный пароль для входа в серверную часть веб-сайта и т. д.
  • Получите конфиденциальные данные: получите учетную запись администратора веб-сайта, пароль и т. д.
  • Операции с файловой системой: просмотр каталогов, чтение, запись файлов и т. д.
  • Операции с реестром: чтение, запись, удаление реестра и т.д.
  • Выполнять системные команды: выполнять команды удаленно.

Пример SQL-инъекции

Передавая параметры по имени пользователя ' or 1 = 1 -- Войдите с универсальным паролем

Язык кода:sql
копировать
SELECT username, password FROM users WHERE имя пользователя = 'входное значение' or 1=1-- ' AND пароль = 'Введите значение 2'


(Уведомление:  --  После него есть пробел)

На данный момент входными символами являются:

  • formusr = ' or 1=1 --
  • formpwd = anything

Фактический код запроса:

Язык кода:sql
копировать
SELECT  *  FROM users WHERE username= ' ' or 1=1 -- AND password = 'anything'

Как определить, содержит ли HTTP-запрос SQL-инъекцию

  • Классический метод суждения
Язык кода:sql
копировать
and1=1   ;    and 2>1  ;   or 1=1 ;  or 1<1
  • Функции базы данных
Язык кода:sql
копировать
sleep(4)=1   ;length(user())>3
  • специальные символы
Язык кода:txt
копировать
одинарная кавычка(  '  )    ;   двойные кавычки (  "  )

Классификация SQL-инъекций

Классификация по типу точки впрыска

  • Числовой тип (целочисленный) ввод
  • Внедрение символов
  • поисковая инъекция

Числовой тип (целочисленный) ввод

Входные параметры являются целыми числами,Например, идентификатор, возраст, номер страницы и т. д.,Если есть инъекционная уязвимость,Тогда это Числовой тип (целочисленный) ввод。

Язык кода:txt
копировать
http://www.testweb.com/user.php?id=8

Фактический прототип кода запроса выглядит следующим образом:

Язык кода:txt
копировать
select ... from ... where id=$id ..

Метод инъекционного испытания:

Внедрение символов

Обычно входные параметры имеют строковый тип.,Отличие от цифрового впрыска заключается в том, что,Внедрение символов Обычно используйтеодинарная кавычказакрыть。

Язык кода:txt
копировать
http://www.testweb.com/test.php?user=admin

Фактический прототип кода запроса выглядит следующим образом:

Язык кода:sql
копировать
select ... from ... where id='$id'  ...

Внедрение символов Метод испытания:

поисковая инъекция

Этот тип внедрения в основном относится к отказу от фильтрации параметров поиска при выполнении поиска данных. Обычно в адресе ссылки есть «ключевое слово = ключевое слово». Некоторые не отображают адрес ссылки, а отправляют его непосредственно через форму окна поиска.

Прототип оператора SQL, представленного этим типом точки внедрения, выглядит примерно так:

Язык кода:sql
копировать
select * from имя таблицы where Поле like   '%ключевое слово%'

Когда мы отправляем параметры впрыска, keyword= ' и условия запроса and '%'=' , поэтому оператор SQL, отправленный в базу данных, имеет следующий вид:

Язык кода:sql
копировать
select * from имя таблицы where Поле like '%' and [условия запроса] and '%'='%'

Классификация по технологии инъекций (эффект исполнения)

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

Причины уязвимостей SQL-инъекций

Вызвано динамической конструкцией строк.

  • Неправильная обработка escape-символов (широкобайтовая инъекция)
  • Некорректная обработка ошибок (сообщение об ошибках приводит к утечке информации)
  • Неправильная обработка запросов на объединение
  • Неправильная обработка нескольких заявок (вторичная инъекция)

Проблемы на заднем плане

  • Никакой скрытой фильтрации или кодирования пользовательских данных.
  • База данных может объединять вредоносный код, передаваемый пользователями

Неправильная обработка ошибок

  • Подробные внутренние сообщения об ошибках, отображаемые пользователю или злоумышленнику.
  • Сообщение об ошибке может напрямую помочь злоумышленнику на следующем этапе атаки.

Небезопасная конфигурация базы данных

  • Учетная запись по умолчанию:

SOL Server использует «sa» в качестве учетной записи системного администратора базы данных;

MySQL использует «корневые» и «анонимные» учетные записи пользователей;

Oracle обычно создает учетные записи SYS, SYSTEMS DBSNMP и OUTLN по умолчанию при создании базы данных.

  • Разрешения по умолчанию:

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

Найдите точки внедрения SQL

ПОЛУЧИТЬ метод

  • HTTP-метод запроса к серверу, при котором информация включается в URL-адрес.
  • Этот метод обычно используется при нажатии на ссылку

Формат метода запроса GET

Язык кода:txt
копировать
?text=value1&cat=value2&num=value3....

Метод модификации

  • Этими параметрами можно управлять, непосредственно изменяя их на панели навигации браузера.
  • Плагин Хак Бар

POST-метод

POST — это метод HTTP, используемый для отправки информации на веб-сервер. Информация о данных не может быть видна в URL-адресе. Могут быть отправлены данные размером до байтов.

Метод модификации

  • Расширение модификации браузера (Hackbar)
  • Прокси-сервер (Burpsuite)

Другие данные о точках впрыска

  • Cookie
  • Host
  • User-Agent

Сводная информация о точках инъекции

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

Процесс SQL-инъекции

Ручной процесс инъекции

Экземпляр ручной инъекции

Метод внедрения на основе запроса объединения (unionselect).

Определить точку инъекции

Определить длину поля

Определите положение эха

Определить информацию о базе данных

Найти имя базы данных

Найти таблицу базы данных

Найти таблицу базы данных Все в Поле

Найти таблицу базы данных Все в Полеценить

Угадайте пароль учетной записи

Войдите в базу данных

Автоматизированные инструменты для инъекций

(1) Инструменты внедрения SQL: Sqlmap, Havij, Sqlid.

(2) Инструменты внедрения ASP\JSP: NBSI, программное обеспечение для внедрения Mingxiaozi, программное обеспечение для внедрения AD.

(3) Инструменты для внедрения PHP: программное обеспечение для внедрения Pangolin, лучшее программное обеспечение для внедрения Haiyang

Некоторые изображения в этой статье взяты из учебного курса для сертифицированных инженеров службы безопасности Sangfor. Они предназначены для удобства личного изучения и использования и не предназначены для коммерческого использования! ! ! ! Текстовый контент набран лично мной, а не перенесен напрямую! Если есть какие-либо нарушения, пожалуйста, свяжитесь с нами, чтобы удалить их! ! !

Информация, представленная в этом документе, предназначена только дляОбразовательные цели и тестирование на проникновение с явным разрешением。Любое несанкционированное использование технической информации, содержащейся в этом документе, строго запрещено.,И может нарушать «Сетевой закон Китайской Народной Республики» и связанные с ним законы и правила. Пользователи должны использовать полученные знания законным и соответствующим требованиям образом.,Он не может использоваться для незаконного вторжения, разрушения информационных систем и других злонамеренных действий. Мы настоятельно рекомендуем всем читателям соблюдать местные законы и этические правила.,Исследуйте информационные технологии в пределах правовых границ.

Я участвую в 21-дневном конкурсе Tencent по созданию технологий 2024 года |Специальный сезон обзоров в середине года, накопление технологий в середине года, сохраните свой флаг, приходите и разделите со мной главный приз!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose