<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>@kedrisch</title><generator>teletype.in</generator><description><![CDATA[@kedrisch]]></description><link>https://teletype.in/@kedrisch?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=kedrisch</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/kedrisch?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/kedrisch?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Fri, 05 Jun 2026 10:04:04 GMT</pubDate><lastBuildDate>Fri, 05 Jun 2026 10:04:04 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@kedrisch/from-anon-to-rce</guid><link>https://teletype.in/@kedrisch/from-anon-to-rce?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=kedrisch</link><comments>https://teletype.in/@kedrisch/from-anon-to-rce?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=kedrisch#comments</comments><dc:creator>kedrisch</dc:creator><title>Как докатиться от broken access control до нескольких вариантов RCE. </title><pubDate>Thu, 12 Oct 2023 02:09:05 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/48/ee/48ee20cb-5689-414d-a476-6b1247b2b2f8.png"></media:content><description><![CDATA[<img src="https://img2.teletype.in/files/51/c5/51c5f198-1668-45b0-aa65-69067b41e4da.png"></img>Итак, представляю вашему внимаю write-up нескольких уязвимостей, найденных мною некоторое неопределенное время назад в рамках bug bounty. Описывать буду в порядке нахождения и соответственно раскрутки. Поехали.]]></description><content:encoded><![CDATA[
  <p id="TQpf">Итак, представляю вашему внимаю write-up нескольких уязвимостей, найденных мною некоторое неопределенное время назад в рамках bug bounty. Описывать буду в порядке нахождения и соответственно раскрутки. Поехали. </p>
  <h2 id="T05o">Первый путь до RCE.</h2>
  <p id="i2Pb"></p>
  <p id="yx1w"><strong>1. Средний импакт: доступ к списку всех пользователей без аутентификации. </strong></p>
  <p id="cyLh">Бручу пути, нашелся эндпоинт, который возвращает всех существующих пользователей (логин, мыло, телефон).</p>
  <p id="ejCr"><strong>2. Крит импакт: слабая парольная политика → sql injection → RCE </strong></p>
  <p id="aqts">Имея имена пользователей с прошлой уязвимости, я решил пробрутить доступ к интерфейсу аналитики который так же нашел с помощью ffuf. Как пароль решил использовать логин т.е. admin:admin, test:test итд. Выпала одна валидная пара. Зашёл, начал смотреть запросы. <br />Увидел летающие sql запросы к конкретному эндпоинту в чистом виде. Т.е. буквально select *что-то где-то* прямо в теле POST запроса. Нужно определить с какой субд имею дело. С помощью sql запросов а-ля версия бд и гугления, определил что это ClickHouse. Погуглил есть ли прикольные (читай опасные) функции в clickhouse, оказалось есть <a href="https://blog.deteact.com/ru/yandex-clickhouse-injection/" target="_blank">https://blog.deteact.com/ru/yandex-clickhouse-injection/</a> (благодарочка летит r0hack(у)). <br />Взял пейлоад для эксплуатации SSRF, слегка адаптировал под свой случай, сделал запрос на 169.254.169.254. Запрос не прошел, кажется есть проверка на слово url. Байпасим с помощью ur&#x27;&#x27;l. Успех. Full-read SSRF. <br />Потыкался в этот хост в поисках какого-нибудь токена, нашел в метаданных какой-то bash скрипт с какими-то кредами и хостами. </p>
  <figure id="8u5G" class="m_column">
    <img src="https://img2.teletype.in/files/51/c5/51c5f198-1668-45b0-aa65-69067b41e4da.png" width="3288" />
  </figure>
  <p id="i7jX">Погуглил что это за хосты, оказалось они от mcs (mail cloud solutions). Нашел на каком именно эндпоинте, через api, применить найденные креды. Отправил запрос с кредами, получил авторизационный токен и с этим токеном уже мог делать запросы к openstack и управлять облачной инфраструктурой. <br /></p>
  <p id="207a"></p>
  <h2 id="QtbX">Второй путь до RCE.</h2>
  <p id="KCLg"></p>
  <p id="rouC"><strong>1. Высокий импакт: request logger+django debug -&gt; утечка кредов админа</strong></p>
  <p id="VOXc">Нашел и набрутил много апи эндпоинтов. На некотором количестве из них был установлен silk. Это, как я понял, логгер http запросов и ответов, и трейса sql запросов, выполняющихся при обращении к эндпоинтам апи на котором silk установлен. Зафиксировали эту информацию. <br />Далее я вошёл в саму платформу (как обычный пользователь), ловил запросы и увидел, что не все api мне были известны до этого момента. <br />Попробовал, зная новый api эндпоинт, открыть на нем silk, выглядело это примерно так /api/newfunction/silk/. Silk оказался установлен. Идея была в том, чтобы найти в нем запросы от админа, взять его креды/куки и таким образом получить к нему доступ. Оказалось, что silk скрывает звёздами(*) куки и креды в запросах. <br />Начал копаться в списке запросов и ответов, и нашел запрос на авторизацию к админке django, который возвращал 500 ошибку. По счастливой случайности у django был включен дебаг, а это означает, что в ответе на запрос авторизации, который вернул ошибку (500) будет ПОЛНОЕ содержание отправленного запроса, с куками, передаваемыми параметрами итд. И вот тут silk уже ничего не маскирует. Так я нашел креды админа. <br />Они были небрутабельными.</p>
  <figure id="cjDP" class="m_column">
    <img src="https://img4.teletype.in/files/37/38/3738fadd-d6b8-4026-9ea3-32626e916f2d.png" width="1366" />
  </figure>
  <p id="V09y"><strong>2. Крит импакт: RCE by desing из админки </strong></p>
  <p id="EsKa">У меня в распоряжении было 3 хоста и порядка 5 админок на каждом. Я их нашел, поняв, по какому паттерну устроены пути до них.<br />Попробовал найденные креды на каком-то количестве из них, получилось войти в три. В одной из них была возможность исполнять python код. Правда сама такая возможность требовала ввести еще один пароль, непосредственно от этого куска функций. Пароль был простейший и был сбручен. <br />Далее я просто сделал запрос на 169.254.169.254 с помощью python и, способом описанным выше, получил креды от cloud инфры.</p>
  <figure id="rhQf" class="m_column">
    <img src="https://img3.teletype.in/files/a3/d4/a3d49214-d674-4bbc-b3d7-be27ae67812d.png" width="3092" />
  </figure>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@kedrisch/fazzing-na-udalenke</guid><link>https://teletype.in/@kedrisch/fazzing-na-udalenke?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=kedrisch</link><comments>https://teletype.in/@kedrisch/fazzing-na-udalenke?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=kedrisch#comments</comments><dc:creator>kedrisch</dc:creator><title>Фаззинг на удаленке</title><pubDate>Wed, 11 Oct 2023 15:25:32 GMT</pubDate><media:content medium="image" url="https://img1.teletype.in/files/c1/a8/c1a8064d-b943-49b5-abd9-b92897b4f20d.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/6c/54/6c543017-9e4c-49d9-bca0-f6b492e37ca3.png"></img>Я часто сталкиваюсь с ситуацией, когда нужно пробрутить url либо какую-то его часть. Использую для этого дела ffuf и бручу как правило на vds.]]></description><content:encoded><![CDATA[
  <p id="J9Gl">Я часто сталкиваюсь с ситуацией, когда нужно пробрутить url либо какую-то его часть. Использую для этого дела ffuf и бручу как правило на vds.</p>
  <p id="K2wx">Нередко, в этих ситуациях, я являюсь аутентифицированным/авторизованным пользователем, соотвественно имею либо куки, либо токен, которые присутствуют в запросах.</p>
  <p id="jbce">Для наглядности:<br />Есть <a href="https://example.com/cabinet/" target="_blank">https://example.com/cabinet/</a> и доступен он только аутентифицированному пользователю. У нас есть аккаунт, мы в него входим. Приспичило нам пробрутить директории по данному пути <a href="https://example.com/cabinet/FUZZ" target="_blank">https://example.com/cabinet/FUZZ</a> и сделать мы это хотим именно как юзер, то есть с куками, чтобы увеличить вероятность находок. В этом случае крайне неудобно копировать куки из запроса, и указывать их как опцию при запуске ffuf. Выглядело бы это так:</p>
  <pre id="QLf8" data-lang="bash">ffuf -b &quot;НУУУУУУУ ОООООООООЧЕНЬ МНОООООГОООО СИМВОЛОООООООООВ&quot; -u https://example.com/cabinet/FUZZ</pre>
  <p id="LVWR">Хорошо если куки это единственное, что нужно перенести из запроса, но бывают кейсы с дополнительными/нестандартными хидерами. В моем случае это приводит к тому, что я банально ленюсь забиваю на подобный брут (либо, если теория стоящая, использую медленный Burp Intruder).</p>
  <p id="knO1">У меня есть решение, которое выглядит не слишком элегантно, но мне нравится и я решил им с вами поделиться. Описывать буду для macOS, но полагаю, адаптировать под другие оси не сложно, у меня вышло провернуть даже на винде с wsl, потанцевав с костылями. </p>
  <h3 id="X8QS">Как настроить</h3>
  <p id="OKcD">Подготовка:</p>
  <ol id="FH22">
    <li id="hX08">Идем в репу <a href="https://github.com/bytebutcher/burp-send-to" target="_blank">https://github.com/bytebutcher/burp-send-to</a> и устанавливаем этот совершенно замечательнейший плагин для бурпа.</li>
    <li id="4iJB">Далее устанавливаем iterm2.</li>
    <li id="c199">Настраиваем возможность подключения к vds по ssh</li>
  </ol>
  <p id="rTMm">К делу:</p>
  <p id="jHZU">Создаем там, где вам удобно (у меня это будет /Users/kedrisch/runner.sh), скрипт runner.sh с содержимым:</p>
  <pre id="PkUH" data-lang="bash">function iterm () { 
osascript &amp;&gt;/dev/null &lt;&lt;EOF 
   tell application &quot;iTerm&quot; 
     activate 
     tell current window 
       create tab with default profile 
          tell current session of current tab 
            write text &quot;$@&quot; 
          end tell 
      end tell 
    end tell 
EOF 
} 
iterm $@</pre>
  <p id="X5s2">Этот скрипт будет запускать iterm с помощью osascript, поскольку на macOS нельзя просто взять и из командной строки стартануть iterm. По крайней мере я не нашел способа.</p>
  <p id="llNd">Далее переходим в Burp на вкладку “Send to” и в поле “Run in terminal” вписываем “bash /Users/kedrisch/runner.sh %C”.</p>
  <figure id="TsFf" class="m_column">
    <img src="https://img3.teletype.in/files/6c/54/6c543017-9e4c-49d9-bca0-f6b492e37ca3.png" width="2438" />
  </figure>
  <p id="X0aK">Теперь нажимаем кнопку Add и добавляем собственно профиль запуска нашей команды. Name указываете произвольно. Command заполняем следующим содержимым, с заменой путей к ключам и программам на ваши собственные.</p>
  <pre id="F6Ip">scp -i /path/to/privatekey %R user@ip:/tmp/request; ssh -i /path/to/privatekey user@ip &#x27;/path/to/ffuf -ac -request /tmp/request -w /path/to/list.txt&#x27;</pre>
  <p id="ZmK0">Ставим галку “Run in terminal” и “Show prior to execution”. Ok.</p>
  <h3 id="txg6">Как запускать:</h3>
  <p id="a1xB">Ловим запрос. Ключевым словом FUZZ указываем в запросе то место, которое будет фаззиться. ПКМ. Extentions → Custom send to → Send to → *Profile name*</p>
  <figure id="IuMw" class="m_column">
    <img src="https://img1.teletype.in/files/c0/5d/c05d08bd-1a21-4fa7-8ca1-9163f9bc2622.png" width="968" />
  </figure>
  <h3 id="rpbE">Немного пояснений</h3>
  <p id="DiJm">Что происходит, полагаю, и так видно, но поясню на всякий случай. <br />Плагин Send to берет запрос и пишет его содержимое во временный файл, путь к которому можно получить макросом %R. <br />Scp берет этот файл и загружает его на vds. <br />Ssh запускает ffuf, передавая на вход загруженный файл. Ffuf, как вы уже догадались, поддерживает возможность такого запуска.</p>
  <p id="n7UH">Как вы понимаете, ffuf здесь как один из возможных вариантов использования данного плагина, дальше дело за вашей фантазией.</p>
  <p id="nIFa">На этом все, спасибо за внимание.</p>

]]></content:encoded></item></channel></rss>