Remote code execution что это
Хакеры активно эксплуатируют RCE-уязвимость GitLab
Исследователи кибербезопасности предупреждают, что пропатченная уязвимость удаленного выполнения кода (RCE) в веб-интерфейсе GitLab по-прежнему активно эксплуатируется злоумышленниками, подвергая опасности большое число экземпляров сервиса.
Эта дыра, получившая код CVE-2021-22205, относится к неверной валидации предоставленных пользователем изображений, что позволяет выполнять содержащийся в них произвольный код. Угрозе подвержены как версии GitLab Enterprise Edition (EE), так и GitLab Community Edition (CE), начиная с 11.9. Заплатку же выпустили 14 апреля 2021 года для версий 13.8.8, 13.9.6 и 13.10.3.
В одной из реальных атак, описанных HN Security в прошлом месяце, на общедоступном сервере GitLab, принадлежащем неназванному клиенту, были зарегистрированы два аккаунта, получившие права администратора. Повышение их привилегий было произведено путем удаленного выполнения команд полезной нагрузки, содержащейся в загруженных через эту дыру зараженных изображениях.
«Изменение в показателе CVSS, конечно, оказалось незначительным, но тот факт, что уязвимость могут эксплуатировать и неаутентифицированные лица, имеет большое значение для защитников», — сообщил специалист по кибербезопасности из Rapid7 в предупреждении, опубликованном в понедельник.
Несмотря на то, что патчи доступны уже более полугода, из 60,000 экземпляров GitLab полноценно против RCE-атак защитились только 21%, а около 50% все еще остаются для них уязвимыми.
Ввиду возможности именно неаутентифицированной эксплуатации уязвимости ожидается дальнейший рост активности злоумышленников, что говорит о желательно скорейшем обновлении пользователями GitLab до последней версии.
«Кроме того, в идеале сервис GitLab лучше не раскрывать для интернета», — рекомендуют исследователи. – «Если же вам нужен доступ к своему экземпляру через интернет, то рассмотрите возможность его ограждения посредством VPN».
Подробный технический анализ описанной уязвимости можно найти здесь.
RCE в Android-приложениях через сторонние сервисы
Совсем недавно компания MWR опубликовала интересную запись «WebView addJavascriptInterface Remote Code Execution» в своем блоге. Запись касается безопасности мобильных приложений. Не хочется полностью пересказывать исследование наших английских коллег — советуем обратиться к первоисточнику. Но если коротко, то при использовании сторонней библиотеки в своем мобильном приложении под Android можно легко поймать RCE (remote code execution) атаку. Произвольное выполнение кода в Android-приложении возможно благодаря рефлексии Java-объекта, который вставляется в WebView.
Итак, для того чтобы данный вектор работал:
1) Во-первых, код должен быть собран с помощью SDK старше 17 версии.
2) Во-вторых, в приложении должно быть разрешено выполнение JavaScript-кода. То есть должен присутствовать метод setJavaScriptEnabled() с параметром true – по умолчанию он отключен.
3) В-третьих, должна использоваться функция addJavascriptInterface().
4) В-четвертых, при получении данных с сервера должен отсутствовать или некорректно использоваться HTTPS.
Вроде бы много условий, но, как показывает наша практика, все это очень часто встречается, особенно в каких-нибудь сторонних фреймворках.
Уже с начала года в наших презентациях и исследованиях безопасности мобильного банкинга говорится, что при разработке таких критичных приложений стоит руководствоваться принципом использования только нужных библиотек. Ведь в системы ДБО никто не интегрирует взаимодействие с новостями, соцсетями и другими сервисами, нужно избегать этого и в мобильном банкинге.
В российских приложениях для мобильного банкинга под Android мы видели взаимодействие с большим количеством сторонних сервисов, что повышает риск компрометации приложения при неправильном использовании. Очень часто встречается взаимодействие с новостным сервером банка, и очень часто это взаимодействие идет по HTTP. Все это значительно расширяет область атаки (attack surface) на банковское приложение.
Атака:
1) Производим MitM.
2) Инъектим в трафик вредоносный JavaScript-код, который вызывает метод Java-объекта getClass(). Например:
Можно представить вариант атаки и без MitM: например, через взлом сайта и вставку своего JavaScript-кода или через хранимую XSS на сайте. В общем, возможно и такое развитие ситуации.
А тем временем Joshua J. Drake, один из самых активных контрибьюторов Metasploit, уже написал специально под это дело модуль add_js_interface_mitm. Модуль пока не доступен и проходит бета-тестирование. На картинке – успешная атака на Fruit Ninja, использующую уязвимый MoPub.
Возможные последствия для пользователя:
1) Полная компрометация данных уязвимого приложения. Если устройство не рутовано, то наш код будет выполняться в рамках sandbox уязвимого Android-приложения, то есть делать все, что может делать это приложение.
2) Полная компрометация мобильного устройства (всех данных на телефоне). Если устройство рутовано или имеет уязвимую версию Android, то наш код может провести LPE (Local Privilege Escalation) атаку и уже работать от пользователя root. Делаем на устройстве все что хотим.
1) Отказаться от вызова Java-объекта из JavaScript, если в этом нет необходимости.
2) Использовать SDK младше 17 версии – для этого необходимо добавить аннотацию @JavaScriptInterface, так как все методы Java-объекта, начиная с версии 17, по умолчанию недоступны.
3) Вместо addJavaScriptInterface использовать другой способ вызова Java-методов через создание своей URI-схемы и использование метода shouldOverrideUrlLoading. При этом следует применить валидацию входящих данных и кодирование исходящих данных для предотвращения инъекции.
Удалённое выполнение кода в InterSystems Caché (RCE)
Введение
В том случае, если вы управляете более чем одним сервером Caché может возникнуть задача выполнения произвольного кода из одного сервера Caché на другом. Кроме того, может потребоваться выполнение произвольного кода на удалённом сервере Caché, например, для нужд сисадмина… Для решения этих задач была разработана утилита RCE.
Какие вообще есть варианты решения подобных задач, и что предлагает RCE (Remote Code Execution) – под катом.
Что уже есть?
» Локальные команды ОС
» Удалённое выполнение COS кода
Возможно с помощью класса %Net.RemoteConnection, где доступна следующая функциональность:
В данном коде происходит:
Отдельно следует упомянуть о технологии ECP, о которой писали на Хабре, и которая позволяет вызывать удаленные JOB процессы со стороны сервера приложений на сервере БД.
В результате, комбинируя два предложенных выше подхода, в принципе, возможно достижение поставленной в начале этой статьи цели, однако, мне хотелось достичь простого процесса создания нового выполняемого скрипта пользователем, что представляется затруднительным при использовании существующих подходов.
Таким образом, перед проектом были поставлены следующие цели:
Иерархия Машина – ОС – Инстанс служит для хранения информации, необходимой для доступа к удалённым серверам.
Для хранения команд служит класс RCE.Script, который содержит последовательный список – объектов класса RCE.Command, которые могут быть как командами ОС так и COS кодом.
Первый аргумент – текст команды, второй – уровень выполнения: 0 – ОС, 1 – Cache.
Пример создания нового скрипта:
Здесь на уровне ОС будут выполнены 1-я и 4-я команда, а 2-я и 3-я будут выполнены в Caché, причём процесс переключения уровня выполнения абсолютно прозрачен для пользователя.
» Механизмы выполнения
Сейчас поддерживаются следующие пути исполнения:
Сервер | Клиент |
---|---|
Linux | Linux, Windows (требуется установка SSH сервера на клиенте) |
Windows | Linux, Windows (требуется установка SSH сервера на клиенте или psexec на сервере) |
В том случае, если есть поддержка ssh на клиенте, сервер генерирует ssh команду и выполняет её на клиенте с помощью стандартного класса %Net.SSH.Session.
В случае же, если и сервер и клиент – под управлением ОС Windows, происходит генерация bat-файла, который потом отправляется на клиент и выполняется с помощью утилиты psexec.
» Добавление сервера
Загрузите классы из репозитория в любую область. В случае, если у вас Windows сервер и вы хотите управлять другими Windows серверами, установите значение глобала ^settings(«exec») равное пути к утилите psexec. На этом настройка завершена!
» Добавление клиента
Состоит в сохранении всех необходимых для аутентификации данных.
» Выполнение скрипта
Выводы
RCE предоставляет удобный механизм удалённого выполнения кода из InterSystems Caché. Так как скрипты хранимые, вам необходимо написать скрипт только один раз, потом он может выполнятся когда угодно и на любом числе клиентов.
Что такое удаленное выполнение кода. Уроки хакинга — глава 12.
Удаленное выполнение кода возникает из-за внедренного кода, который интерпретируется и выполняется уязвимым приложением. Причиной данной уязвимости является пользовательский ввод, который приложение использует без надлежащей фильтрации и обработки.
Это может выглядить следующим образом:
Здесь уязвимое приложение может использовать url index.php?page=1, однако, если пользователь введёт index.php?page=1;phpinfo(), приложение выполнит функцию phpinfo() и вернёт приложению её результат.
Также RCE иногда используется для обозначения Command Injection, которые OWASP различает. С помощью Command Injection, в соответствии с OWASP, уязвимое приложение выполняет произвольные команды в принимающей их операционной системе. Опять же, это становится возможным благодаря недостаточной обработке и проверки пользовательского ввода, что приводит к тому, что пользовательский ввод выпоняется операционной системой, как команда.
В PHP, к примеру, это может быть из-за того, что пользовательский ввод будет вставлен в функцию system().
Примеры удаленного выполнения кода.
1. Polyvore ImageMagick
Сложность: Высокая
Ссылка на отчёт: http://nahamsec.com/exploiting-imagemagick-on-yahoo/46
Дата отчёта: Май 5, 2016
Описание:
ImageMagick представляет собой программный пакет, обычно используемый для обработки изображений, например кадрирование, масштабирование, и так далее. Imagick в PHP, rmagick и paperclip в Ruby, а также imagemagick в NodeJS используют этот пакет, и в апреле 2016 в нем было обнаружено множество уязвимостей, одна из которых могла быть использована атакующими, чтобы выполнить удаленный код, на чём я и сосредоточился.
В двух словах, ImageMagick не фильтровал надлежащим образом получаемые имена файлов и в результате использовался для выполнения системного вызова system(). В итоге атакующий мог вставлять команды вроде https://example.com”|ls “-la, и при получении они были исполнены. Пример с ImageMagick будет выглядеть так:
Что интересно, ImageMagick определяет свой собственный синтаксис для файлов Magick Vector Graphics (MVG), а значит, атакующий мог создать файл exploit.mvg со следующим кодом:
Потом это будет передано библиотеке и, если сайт уязвим, код выполнится и отобразит перечень файлов в директории.
Зная это, Бен Садежепур протестировал купленный Yahoo сервис Polyvore на эту уязвимость. Как сказано в его блоге, Бен сначала протестировал уязвимость на локальной машине к которой он имел доступ, чтобы подтвердить, что mvg файл работает правильно. Вот код, который он использовал:
Здесь вы можете видеть, что он использовал библиотеку cURL, чтобы сделать обратиться к SOMEIPADDRESS (измените это на IP адрес уязвимого сервера). В случае успеха, вы должны получить следующий ответ:
Далее Бен посетил Polyvore, загрузил изображение в качестве аватара и получил следующий ответ от сервера:
Ben Sadeghipour Polyvore ImageMagick response
Выводы
Итоги
Удаленное выполнение кода, как и остальные уязвимости, возникает в результате неправильной фильтрации и обработки пользовательского ввода. В предоставленом примере ImageMagick неправильно обрабатывал контент, который мог быть зловредным. Это, вместе с знанием Бена о уязвимости, позволило ему найти и протестировать те зоны, которые могли быть уязвимыми. Что касается поиска подобных уязвимостей, быстрого ответа не существует. Будьте в курсе вышедших CVE и следите за ПО, которое используется сайтами и которое может быть устаревшим, т.к. скорее всего оно может быть уязвимым.
Гид по Lateral. Изучаем удаленное исполнение кода в Windows со всех сторон
Содержание статьи
После того как ты проник за внешний периметр и попал во внутреннюю сеть компании, необходимо расширить в ней собственное присутствие, если хочешь найти там что‑то интересное. Как ни странно, чем больше размер внутренней сети компании, тем проще ее взломать. И напротив, если компания совсем небольшая, сеть взломать порою крайне сложно. Почему так? Чем больше сеть, тем больше в ней может встретиться уязвимых или небезопасно настроенных компонентов. При этом часто компрометация одного узла влечет за собой компрометацию сразу множества смежных с ним узлов.
Во внутренних сетях обычно преобладают серверы и рабочие станции под управлением Windows. В то же время эта ОС наиболее интересна с точки зрения способов компрометации, так как по умолчанию имеет множество интерфейсов для удаленного выполнения кода. Кроме того, атакующему доступно большое количество способов извлечения учетных данных. Я не буду касаться бокового перемещения по серверам Linux: они редко включены в домен и не имеют такого разнообразия дефолтных интерфейсов для удаленного администрирования. При боковом перемещении Linux интересен главным образом как удобная точка опоры.
Боковое перемещение подразумевает легитимное удаленное исполнение кода. То есть все представленные в статье способы подразумевают наличие действующей учетной записи для того или иного ПК. При этом почти всегда будет требоваться административная учетная запись.
Основная задача при боковом перемещении — привлекать как можно меньше внимания пользователей и службы безопасности, а также постараться не вызвать тревогу у средств антивирусной защиты. Наиболее эффективно использовать штатные средства операционной системы, то есть абсолютно легитимные и неотличимые от действий обычных администраторов сети.
Мы не будем обсуждать основные уязвимости Windows, атаки в локальных сетях и способы поднять привилегии в среде Active Directory. Вместо этого поговорим исключительно о легальных вещах: в каких потаенных уголках Windows можно найти учетные записи и что с ними потом делать. Все представленные дальше способы не считаются уязвимостями, а представляют собой трюки by design, следовательно, при грамотном исполнении это полностью легальные процедуры.
Все примеры основаны на реальных ситуациях, с которыми можно столкнуться при перемещении по самым настоящим внутренним сетям. Поэтому, как обычно, коснемся проблемы максимально тихого перемещения с возможностью байпаса антивирусов, а также сделаем акцент на то, какие сетевые порты нам для этого потребуются.
Стратегия бокового перемещения
Итак, боковое перемещение — это одновременное сочетание двух техник:
Цикличное, последовательное повторение этих шагов порою позволяет от одного‑единственного взломанного ПК дойти до полной компрометации всей сетевой инфраструктуры. Обычно боковое перемещение, как всякое иное перемещение, преследует одну из следующих целей:
Однако для достижения любой из перечисленных целей требуются все новые учетные данные, чтобы у атакующего была возможность перемещаться по сети и получать доступ ко все большему количеству ПК. Продвижение по внутренней сети редко обходится без взятия контроллера домена, поскольку взятие домена означает автоматическое получение доступа практически к каждому узлу сети. Что касается admins hunting, при достижении контроллера домена может показаться, что поиск привилегированных учетных записей — это слепое угадывание. Но в действительности инфраструктура Active Directory и сама Windows раскрывают достаточно информации простому доменному пользователю, зачастую позволяя рассчитать нужное направление продвижения и спланировать точную многоступенчатую цепочку взломов еще в самом начале бокового перемещения.
После взятия контроллеров домена иногда бывает необходимо двигаться дальше — в некий особо охраняемый сегмент, представляющий собой объекты «бизнес‑риска». Это может быть сегмент АСУ ТП, вмешательство в технологический процесс, доступ в сегмент SWIFT, если мы имеем дело с банками, либо же просто доступ на ПК генерального директора. В каждом случае мы можем столкнуться с разными сложностями бокового перемещения, о которых пойдет речь дальше.
Удаленное выполнение кода в Windows
Рассмотрим несколько способов удаленного исполнения кода в Windows с помощью учетной записи. Некоторые средства предоставляют удобный интерактивный режим, а некоторые — только слепой запуск команд без получения результата. Начнем обзор с самых удобных и широко распространенных инструментов и постепенно перейдем к менее популярным, но все же способным исполнить код.
Часть инструментов загружает на target исполняемый файл службы, пытаясь обеспечить нам удобный интерактивный режим. Но тут кроется опасность: такие сервисы зачастую будут заблокированы антивирусом. Плюс к этому IP атакующего может быть заблокирован, что затормозит перемещение. И SOC узнает о том, что в сеть кто‑то проник.
MSRPC
Это реализация DCERPC от Microsoft. По сути, расширяет открытый DCERPC при помощи доступа через именованные пайпы с использованием протокола SMB. Главным образом использует 445-й TCP-порт. Перечислить доступные пайпы по словарю на SMB поможет модуль auxiliary/scanner/smb/pipe_auditor.
psexec.exe
Главный плюс для нас в том, что серверный компонент psexecsvc. exe подписан сертификатом Sysinternals (который принадлежит Microsoft) и, следовательно, стопроцентно легитимная программа. Также к явным достоинствам классического psexec. exe относится способность выполнять код в указанных пользовательских сеансах:
psexec.py
Отличная альтернатива для пользователей Linux. Однако этот инструмент почти наверняка поднимет антивирусную тревогу. Как было сказано, все дело в службе, которая копируется на удаленный хост. Это можно исправить, указав в реализации метода createService( ) в / usr/ local/ lib/ python3. 7/ dist-packages/ impacket/ examples/ serviceinstall. py произвольную команду, которая будет выполнена вместо запускаемой службы удаленного администрирования.
С помощью произвольной команды можно скрыть запуск службы удаленного администрирования
Чтобы psexec. py не скопировал палевный компонент, указываем принудительно, какой файл использовать в качестве службы. И, поскольку мы уже вручную прописали команду, этим файлом может быть что угодно:
winexe
В целом он полностью идентичен другим подобным инструментам, однако реже обнаруживается антивирусами. Но все же нельзя сказать, что winexe на сто процентов безопасен. Тем не менее его можно использовать для подстраховки на случай, если psexec. py вдруг не сработает.
smbexec.py
В результате будет открыт доступ к интерактивной командной строке.
services.py
Создать новую службу, указав произвольную команду:
Запустить только что созданную службу:
Замести следы и удалить ее:
Все это дает нам еще один способ слепого неинтерактивного исполнения команд, то есть без результата. Зато это на сто процентов безопасный способ, и он не раз выручал меня, когда антивирусы на удаленном хосте убивали весь левый софт.
atexec.py/at.exe
А вот для atexec. py команда выполнится с результатом:
reg.exe
Здесь используется обработчик запуска программы. Если программа запускается на ПК часто, то получим почти мгновенное RCE:
Мой любимый трюк с бэкдором в RDP:
DCERPC
Использует порты 135/TCP и 4915x/TCP, где 4915x — динамически назначаемые порты. Иногда могут использоваться порты из другого диапазона.
Очень часто сетевые администраторы и безопасники, которые в курсе наиболее распространенных векторов атак, в качестве mitigation просто блокируют порт 445/TCP. Тем самым они делают непригодным использование psexec и многих других способов, описанных выше. Однако, как было сказано ранее, Windows имеет множество способов удаленного исполнения кода, и DCERPC предоставляет нам такую альтернативную возможность, в некоторых случаях открывая доступ к тем же RPC-интерфейсам. По сути, мы будем использовать не сам DCERPC, а то, что работает по его технологии, например WMI.
wmiexec.py
Скрипт wmiexec. py дает возможность выполнить код в интерактивном режиме:
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее