26 Янв, 2023

Тип жонглирование

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

Тип жонглирование уязвимость - это уязвимость безопасности, возникающая, когда PHP-скрипт не проверяет должным образом вводимые пользователем данные, а вместо этого полагается на жонглирование типами для автоматического изменения типа данных переменной на основе вводимых данных. Это может позволить злоумышленнику манипулировать переменной неожиданным образом, что потенциально может привести к уязвимости безопасности, такой как SQL-инъекция или выполнение кода. Для предотвращения уязвимостей, связанных с переключением типов, важно проверять все вводимые пользователем данные и убедиться, что они имеют ожидаемый тип данных, прежде чем использовать их в каких-либо важных операциях. Переведено с помощью www.DeepL.com/Translator (бесплатная версия)

Примеры уязвимостей удаленных файлов

  • Внедрение SQL: если скрипт неправильно проверяет вводимые пользователем данные перед использованием их в SQL-запросе, злоумышленник может использовать подтасовку типов для манипулирования вводимыми данными и внедрения вредоносного кода SQL.

  • Выполнение кода: злоумышленник может использовать манипулирование типами для манипулирования вводом и выполнения произвольного кода на сервере.

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

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

Важно отметить, что уязвимость манипулирования типами может быть устранена путем проверки и очистки пользовательского ввода и использования строгого оператора сравнения (===) вместо свободного оператора сравнения (==)

Вот пример PHP-скрипта, который уязвим для манипулирования типами:

 
				
					<?php

$user_id = $_GET['user_id'];

$query = "SELECT * FROM users WHERE id = $user_id";
$result = mysqli_query($conn, $query);

// Do something with the result

?>

				
			

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

Возможным решением этой уязвимости было бы проверить ввод идентификатора пользователя с помощью функции filter_var() и убедиться, что это числовое значение, прежде чем использовать его в SQL-запросе.

				
					<?php
$user_id = $_GET['user_id'];
if (filter_var($user_id, FILTER_VALIDATE_INT)) {
  $query = "SELECT * FROM users WHERE id = $user_id";
  $result = mysqli_query($conn, $query);
  // Do something with the result
}
?>

				
			

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

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

				
					let username = prompt("Enter your username: ");
if (username == 1) {
    // code that should only be executed when $username is 1
}
				
			

В этом примере, если злоумышленник передает строку “1” вместо целого числа, блок кода будет выполнен, поскольку JavaScript автоматически преобразует строку в целое число.

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

				
					username = gets.chomp
if username == 1
  # code that should only be executed when $username is 1
end

				
			

В этом примере, если злоумышленник передает строку “1” вместо целого числа, блок кода будет выполнен, поскольку Ruby автоматически преобразует строку в целое число.

Важно отметить, что это всего лишь примеры, и конкретная уязвимость будет зависеть от контекста и типа приложения, с которым вы работаете.

Методы повышения привилегий

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

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

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

Чтобы предотвратить повышение привилегий с помощью подтасовки типов, важно проверить все введенные пользователем данные и убедиться, что они имеют ожидаемый тип данных, прежде чем использовать их в любых конфиденциальных операциях. Кроме того, вы должны использовать строгий оператор сравнения (===) вместо свободного оператора сравнения (==) при сравнении пользовательского ввода с предопределенными значениями. А также убедитесь, что вы правильно выполняете аутентификацию и разрешаете пользователям доступ к конфиденциальным ресурсам, а также ограничиваете привилегии пользователей до минимально необходимых.

Общая методология и контрольный список для тестирования уязвимостей с подстановкой типов

  1. Определите точки ввода: найдите любой пользовательский ввод, который передается приложению, например поля формы, параметры запроса и заголовки.

  2. Проверка на подтасовку типов: попытка манипулировать входными данными путем изменения их типа данных, например, путем передачи строки вместо целого числа или числа с плавающей запятой вместо логического значения.

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

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

  5. Проверка на строгое сравнение: убедитесь, что приложение использует строгий оператор сравнения (===) вместо свободного оператора сравнения (==) при сравнении пользовательского ввода с предопределенными значениями.

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

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

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

Набор инструментов для использования жонглирующих уязвимостей

  • Burp Suite: Burp Suite - это широко используемый инструмент тестирования безопасности веб-приложений, который можно использовать для выявления и использования уязвимостей, связанных с манипулированием типами. Его инструменты взломщика и ретранслятора можно использовать для манипулирования пользовательским вводом и проверки на наличие неожиданного поведения.

  • sqlmap: sqlmap - это инструмент с открытым исходным кодом для автоматизации процесса обнаружения и использования уязвимостей SQL-инъекций. Его можно использовать для проверки уязвимостей, связанных с манипулированием типами, которые могут привести к SQL-инъекции.

  • OWASP ZAP: OWASP ZAP (Zed Attack Proxy) - еще один широко используемый инструмент тестирования безопасности веб-приложений. Он обладает функциями автоматического сканирования, которые можно использовать для выявления уязвимостей, связанных с жонглированием типами.

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

  • Metasploit: Metasploit - это широко используемая платформа тестирования на проникновение, которая может использоваться для использования различных уязвимостей, включая подтасовку типов.

  • w3af: w3af - это сканер безопасности веб-приложений с открытым исходным кодом, который можно использовать для выявления и использования уязвимостей с подменой типов.

  • Nessus: Nessus - это сканер уязвимостей, который можно использовать для проверки уязвимостей с подменой типов.

Лучшие CVE

• CVE-2010-2068: Эта уязвимость влияет на функцию PHP “mail ()” и позволяет злоумышленнику выполнять произвольный код, манипулируя параметром “to”.

• CVE-2012-1571: Эта уязвимость затрагивает расширение PHP с именем “php_cpdf” и позволяет злоумышленнику выполнять произвольный код, манипулируя параметром “font”.

• CVE-2012-2311: Эта уязвимость затрагивает расширение PHP с именем “php_zip” и позволяет злоумышленнику выполнять произвольный код, манипулируя параметром “zip_entry_name”.

• CVE-2012-2336: Эта уязвимость влияет на функцию PHP “unserialize ()” и позволяет злоумышленнику выполнять произвольный код, манипулируя сериализованными данными.

• CVE-2018-1000888: Эта уязвимость затрагивает расширение PHP с именем “php_imap” и позволяет злоумышленнику выполнять произвольный код, манипулируя параметром “message_number”.

Тип жонглирования уязвимостями эксплойтов

Уязвимости, связанные с манипулированием типами, могут быть использованы различными способами, в зависимости от конкретной уязвимости и архитектуры приложения. Вот несколько примеров того, как можно использовать уязвимости, связанные с манипулированием типами:

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

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

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

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

  • Межсайтовый скриптинг (XSS): злоумышленник может использовать манипулирование типами для манипулирования пользовательским вводом, который не очищен должным образом, что позволяет злоумышленнику внедрять вредоносные скрипты на страницу, которые могут выполняться другими пользователями, посещающими сайт.

Практикуюсь в тестировании на жонглирование уязвимостями

Уязвимости, связанные с жонглированием типами, могут возникать в различных частях приложения и, как таковые, должны быть протестированы в нескольких областях. Вот несколько мест, где вам следует протестировать уязвимости для манипулирования типами:

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

  2. Запросы к базе данных: проверка на уязвимости, связанные с манипулированием типами, которые могут привести к внедрению SQL путем манипулирования пользовательским вводом, который передается в SQL-запрос.

  3. Включение файла: проверка на уязвимости подстановки типов, которые могут привести к включению файла путем манипулирования пользовательским вводом, используемым для включения файла.

  4. Вызовы функций: проверка на уязвимости, связанные с манипулированием типами, которые могут привести к выполнению кода путем манипулирования пользовательским вводом, передаваемым функции.

  5. Авторизация и аутентификация: проверка на наличие уязвимостей, связанных с манипулированием типами, которые могут привести к несанкционированному доступу путем манипулирования пользовательским вводом, используемым для проверки уровня доступа пользователя.

  6. Обработка выходных данных: проверка на уязвимости, связанные с манипулированием типами, которые могут привести к XSS, путем манипулирования пользовательским вводом, который не очищен должным образом.

Для типа исследования жонглирование уязвимостью

Курсы:

Курс OWASP по тестированию веб-приложений на проникновение: Этот курс охватывает методологию и методы, используемые для тестирования веб-приложений на наличие уязвимостей, включая манипулирование типами.

Курс SANS Institute по тестированию веб-приложений на проникновение: Этот курс охватывает методологию и методы, используемые для тестирования веб-приложений на наличие уязвимостей, включая манипулирование типами.

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

Тренировочные платформы:

OWASP WebGoat: WebGoat - это заведомо небезопасное веб-приложение, предназначенное для обучения концепциям безопасности веб-приложений. Она включает в себя ряд упражнений, которые охватывают уязвимости, связанные с жонглированием типами.

Mutillidae: Mutillidae - это еще одно заведомо небезопасное веб-приложение, которое включает в себя упражнения, посвященные уязвимостям манипулирования типами.

HackTheBox: он предлагает множество реальных сценариев с несколькими уязвимостями, в которых вы можете попрактиковаться в выявлении и использовании уязвимостей с подменой типов.

Видео:

YouTube: На YouTube доступно несколько видеороликов, в которых рассказывается об уязвимостях, связанных с жонглированием типами, и о том, как их использовать, включая учебные пособия и демонстрации.

Канал OWASP на YouTube: У OWASP есть канал YouTube с несколькими видеороликами, в которых рассказывается о концепциях безопасности веб-приложений, в том числе об уязвимостях, изменяющих типы, и о том, как их использовать.

Книги с обзором уязвимости жонглирования типами

  • “Справочник хакера веб–приложений: поиск и использование уязвимостей безопасности” Дафидда Штуттарда и Маркуса Пинто - Эта книга представляет собой всеобъемлющее руководство по выявлению и использованию уязвимостей веб-приложений, включая подтасовку типов.

  • “The Web Application Hacker's Handbook: обнаружение и использование уязвимостей безопасности” Дафидда Штуттарда – Эта книга представляет собой всеобъемлющее руководство по выявлению и использованию уязвимостей веб-приложений, включая подтасовку типов.

  • “Хакерство: искусство эксплуатации” Джона Эриксона – Эта книга представляет собой всеобъемлющее введение в искусство эксплуатации, включая раздел об уязвимостях, манипулирующих типами, и о том, как их использовать.

  • “Классификация угроз Консорциума по безопасности веб–приложений” Консорциума по безопасности веб-приложений - Эта книга представляет собой полное руководство по угрозам безопасности веб-приложений, включая уязвимости с подменой типов.

  • “Кулинарная книга защитника веб–приложений: борьба с хакерами и защита пользователей” Райана К. Барнетта - Эта книга представляет собой руководство по обеспечению безопасности веб-приложений, включая раздел об уязвимостях, связанных с манипулированием типами, и о том, как их предотвратить.

Список полезных нагрузок

Полезная нагрузка SQL-инъекции: например, изменение типа данных поля ввода с целого числа на строку и внедрение вредоносного кода SQL в запрос, такого как ‘ ИЛИ ‘1’=’1.

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

Полезные нагрузки удаленного выполнения кода: например, изменение типа данных поля ввода со строки на массив и внедрение вредоносного кода в функцию, например system(“cat /etc/passwd”).

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

Полезные нагрузки XSS: например, изменение типа данных поля ввода со строки на массив и внедрение вредоносных скриптов на страницу.

Как быть защищенным от уязвимости удаленного включения

  1. Правила SQL injection Sigma: Эти правила обнаруживают и блокируют вредоносный SQL-код, который вводится в запрос с помощью уязвимости подстановки типов.

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

  3. Правила удаленного выполнения кода Sigma: эти правила будут обнаруживать и блокировать попытки выполнения вредоносного кода с помощью уязвимости подстановки типов.

  4. Правила несанкционированного доступа Sigma: Эти правила обнаруживают и блокируют попытки получить несанкционированный доступ к конфиденциальным ресурсам или функциям с помощью уязвимости с подменой типов.

  5. Правила XSS Sigma: эти правила будут обнаруживать и блокировать попытки внедрения вредоносных скриптов на страницу с помощью уязвимости подстановки типов.

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

Меры по устранению уязвимости при жонглировании типами

Уязвимости, связанные с манипулированием типами, могут быть устранены с помощью комбинации различных методов, в том числе:

  1. Проверка и очистка входных данных: Убедитесь, что все введенные пользователем данные должным образом проверены и очищены, прежде чем они будут использоваться в каких-либо операциях. Это может помешать злоумышленникам внедрить вредоносные данные в систему.

  2. Приведение типов: явное приведение переменных к соответствующему типу данных перед их использованием в каких-либо операциях. Это может предотвратить непредвиденные преобразования типов.

  3. Использование подготовленных инструкций: При работе с базами данных используйте подготовленные инструкции или параметризованные запросы вместо объединения переменных в SQL-запрос. Это может предотвратить атаки с использованием SQL-инъекций.

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

  5. Использование брандмауэра веб-приложений (WAF): WAF может обнаруживать и блокировать вредоносный трафик до того, как он достигнет приложения.

  6. Обновление программного обеспечения: Обновляйте все программное обеспечение, включая веб-приложения и базовую операционную систему, с помощью последних исправлений безопасности.

Заключение

В заключение, уязвимости, связанные с манипулированием типами, возникают, когда тип переменной неожиданно изменяется или без надлежащей проверки, что может привести к проблемам безопасности, таким как утечка данных или выполнение кода. Эти уязвимости могут быть обнаружены в различных типах программного обеспечения, включая веб-приложения и системы баз данных. Для устранения этих уязвимостей важно использовать комбинацию таких методов, как проверка и очистка входных данных, приведение типов, подготовленные инструкции, регулярные аудиты безопасности и использование брандмауэра веб-приложений (WAF). Кроме того, обновление программного обеспечения с использованием последних исправлений безопасности также важно для защиты от потенциальных уязвимостей. Важно отметить, что это общие рекомендации, и конкретная стратегия смягчения последствий будет зависеть от контекста и типа приложения, с которым вы работаете.

Другие Услуги

Готовы к безопасности?

Связаться с нами