В первой части мы рассматривали обход XSS-фильтров на стороне клиента. Во второй (Уровень 2) будет рассказано о том, как выполнять произвольный код через функцию eval() языка PHP.
Автор: 1N3(@CrowdShield)
В первой части мы рассматривали обход XSS-фильтров на стороне клиента. Во второй (Уровень 2) будет рассказано о том, как выполнять произвольный код через функцию eval() языка PHP.
Как работает функция eval()
По функционалу калькулятора можно догадаться, что в серверной части используется схожий код, вычисляющий результат:
<?php eval(\"$num1\" \"$operand\" \"$num2\"); ?>
Рисунок 1: Внешний вид веб-калькулятора
Исследование поля операнда
Поскольку весьма вероятно, что на стороне сервера есть защита от ввода нецелых чисел в переменные $num1 и $num2, мы можем попробовать отредактировать поле операнда для запуска инжектируемого PHP-кода. В браузере наводим мышкой на нужный элемент, щелкаем правой кнопкой мыши и выбираем "Inspect Element".
Рисунок 2: Исследование элемента поля операнда
Внедрение PHP-кода
Чтобы внедрить PHP-код, мы будем редактировать поле операнда, как показано ниже. Подобный способ позволяет избежать ошибок при выполнении функции.
<option value=" + 1; phpinfo(); 1 + "> + 1; phpinfo(); 1 + </option>
Рисунок 3: Внедрение PHP-кода в поле операнда
Результат
После нажатия на Submit вы заметите, что инжектированный PHP-код выполнился, и отобразились результаты выполнения. Чтобы избежать подобного рода атак, следует отказаться от использования функции eval(). Кроме того, все данные, вводимые пользователем, должны обрабатываться самым тщательным образом.
Рисунок 4: Внедрение кода завершилось успешно
Видео демонстрация внедрения PHP-кода:
Наш канал — питательная среда для вашего интеллекта