моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Вторичные уязвимости внедрения — это форма уязвимости безопасности, широко распространенная в веб-приложениях. По сравнению с уязвимостью первичного внедрения, уязвимость вторичного внедрения сложнее обнаружить, но она имеет ту же силу атаки, что и уязвимость первичного внедрения.
Хакеры создают данные в виде отправки запросов пакетов данных HTTP на сервер для обработки в браузере или другом программном обеспечении. Отправленный запрос пакета данных может содержать операторы SQL или команды, созданные хакером.
Серверное приложение будет хранить информацию данных, предоставленную хакером, обычно в базе данных. Основная функция сохраненной информации данных — предоставить исходные входные данные приложению для выполнения других функций и ответа на запросы клиента.
Хакер отправляет на сервер второе сообщение с данными запроса, которое отличается от первого.
После того, как сервер получит информацию второго запроса, отправленную хакером, для обработки запроса сервер запросит информацию данных, уже хранящуюся в базе данных, и обработает ее, вызывая оператор SQL или команду, созданную хакером в первом запросе. быть в службе, выполненной в терминальной среде.
Сервер возвращает информацию о результатах выполнения. Хакеры могут использовать возвращенную информацию о результатах выполнения, чтобы определить, была ли успешно использована вторичная уязвимость внедрения.
Таким образом, вторичная инъекция происходит из-за невозможности отфильтровать данные при их сохранении в базе данных. Сначала созданный запрос специального символа отправляется для сохранения в базе данных, а затем, когда отправляется второй запрос, символы, которые будут сохранены. были отправлены в базу данных впервые. Возникает функция, формирующая новый оператор sql для выполнения.В качестве примера возьмем уровень sqli-labs 24.
SQLi-лаборатории меньше-24
1. Нажмите ниже, чтобы зарегистрировать пользователя.
Зарегистрированное имя пользователя здесь — admin'#.
На этом этапе мы проверяем базу данных, зарегистрированные пользователи сохранены, а пароль администратора — DDD.
2. Войдите под зарегистрированной учетной записью и измените пароль на ccccc.
В это время появится сообщение о том, что пароль был успешно изменен.
В это время мы обнаружили, что пароль администратора был изменен на ccccc, но пароль нашего зарегистрированного пользователя admin'# не был изменен.
Причина уязвимости
1. При регистрации пользователя разрешены специальные символы, такие как ' и #.
2. В исходном коде страницы смены пароля обнаружено наличие очевидной уязвимости внедрения.
$sql = "ОБНОВЛЕНИЕ пользователей УСТАНОВИТЬ ПАРОЛЬ='$pass', где имя пользователя='$username' и пароль='$curr_pass' ";
Когда мы входим в учетную запись admin'# и меняем пароль, оператор sql становится следующим: #Закомментируйте следующий код, чтобы пароль пользователя admin был изменен на ccccc
$sql = "ОБНОВЛЕНИЕ пользователей УСТАНОВИТЬ ПАРОЛЬ='$pass', где имя пользователя='admin'#' и пароль='$curr_pass' ";
Исходная ссылка: https://blog.csdn.net/qq_44159028/article/details/114325805.