<?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>@kedrisch</title><author><name>@kedrisch</name></author><id>https://teletype.in/atom/kedrisch</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/kedrisch?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@kedrisch?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=kedrisch"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/kedrisch?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-06-05T10:03:02.178Z</updated><entry><id>kedrisch:from-anon-to-rce</id><link rel="alternate" type="text/html" href="https://teletype.in/@kedrisch/from-anon-to-rce?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=kedrisch"></link><title>Как докатиться от broken access control до нескольких вариантов RCE. </title><published>2023-10-12T02:09:05.797Z</published><updated>2023-10-16T11:05:06.177Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/48/ee/48ee20cb-5689-414d-a476-6b1247b2b2f8.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/51/c5/51c5f198-1668-45b0-aa65-69067b41e4da.png&quot;&gt;Итак, представляю вашему внимаю write-up нескольких уязвимостей, найденных мною некоторое неопределенное время назад в рамках bug bounty. Описывать буду в порядке нахождения и соответственно раскрутки. Поехали.</summary><content type="html">
  &lt;p id=&quot;TQpf&quot;&gt;Итак, представляю вашему внимаю write-up нескольких уязвимостей, найденных мною некоторое неопределенное время назад в рамках bug bounty. Описывать буду в порядке нахождения и соответственно раскрутки. Поехали. &lt;/p&gt;
  &lt;h2 id=&quot;T05o&quot;&gt;Первый путь до RCE.&lt;/h2&gt;
  &lt;p id=&quot;i2Pb&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;yx1w&quot;&gt;&lt;strong&gt;1. Средний импакт: доступ к списку всех пользователей без аутентификации. &lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;cyLh&quot;&gt;Бручу пути, нашелся эндпоинт, который возвращает всех существующих пользователей (логин, мыло, телефон).&lt;/p&gt;
  &lt;p id=&quot;ejCr&quot;&gt;&lt;strong&gt;2. Крит импакт: слабая парольная политика → sql injection → RCE &lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;aqts&quot;&gt;Имея имена пользователей с прошлой уязвимости, я решил пробрутить доступ к интерфейсу аналитики который так же нашел с помощью ffuf. Как пароль решил использовать логин т.е. admin:admin, test:test итд. Выпала одна валидная пара. Зашёл, начал смотреть запросы. &lt;br /&gt;Увидел летающие sql запросы к конкретному эндпоинту в чистом виде. Т.е. буквально select *что-то где-то* прямо в теле POST запроса. Нужно определить с какой субд имею дело. С помощью sql запросов а-ля версия бд и гугления, определил что это ClickHouse. Погуглил есть ли прикольные (читай опасные) функции в clickhouse, оказалось есть &lt;a href=&quot;https://blog.deteact.com/ru/yandex-clickhouse-injection/&quot; target=&quot;_blank&quot;&gt;https://blog.deteact.com/ru/yandex-clickhouse-injection/&lt;/a&gt; (благодарочка летит r0hack(у)). &lt;br /&gt;Взял пейлоад для эксплуатации SSRF, слегка адаптировал под свой случай, сделал запрос на 169.254.169.254. Запрос не прошел, кажется есть проверка на слово url. Байпасим с помощью ur&amp;#x27;&amp;#x27;l. Успех. Full-read SSRF. &lt;br /&gt;Потыкался в этот хост в поисках какого-нибудь токена, нашел в метаданных какой-то bash скрипт с какими-то кредами и хостами. &lt;/p&gt;
  &lt;figure id=&quot;8u5G&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/51/c5/51c5f198-1668-45b0-aa65-69067b41e4da.png&quot; width=&quot;3288&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;i7jX&quot;&gt;Погуглил что это за хосты, оказалось они от mcs (mail cloud solutions). Нашел на каком именно эндпоинте, через api, применить найденные креды. Отправил запрос с кредами, получил авторизационный токен и с этим токеном уже мог делать запросы к openstack и управлять облачной инфраструктурой. &lt;br /&gt;&lt;/p&gt;
  &lt;p id=&quot;207a&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;QtbX&quot;&gt;Второй путь до RCE.&lt;/h2&gt;
  &lt;p id=&quot;KCLg&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;rouC&quot;&gt;&lt;strong&gt;1. Высокий импакт: request logger+django debug -&amp;gt; утечка кредов админа&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;VOXc&quot;&gt;Нашел и набрутил много апи эндпоинтов. На некотором количестве из них был установлен silk. Это, как я понял, логгер http запросов и ответов, и трейса sql запросов, выполняющихся при обращении к эндпоинтам апи на котором silk установлен. Зафиксировали эту информацию. &lt;br /&gt;Далее я вошёл в саму платформу (как обычный пользователь), ловил запросы и увидел, что не все api мне были известны до этого момента. &lt;br /&gt;Попробовал, зная новый api эндпоинт, открыть на нем silk, выглядело это примерно так /api/newfunction/silk/. Silk оказался установлен. Идея была в том, чтобы найти в нем запросы от админа, взять его креды/куки и таким образом получить к нему доступ. Оказалось, что silk скрывает звёздами(*) куки и креды в запросах. &lt;br /&gt;Начал копаться в списке запросов и ответов, и нашел запрос на авторизацию к админке django, который возвращал 500 ошибку. По счастливой случайности у django был включен дебаг, а это означает, что в ответе на запрос авторизации, который вернул ошибку (500) будет ПОЛНОЕ содержание отправленного запроса, с куками, передаваемыми параметрами итд. И вот тут silk уже ничего не маскирует. Так я нашел креды админа. &lt;br /&gt;Они были небрутабельными.&lt;/p&gt;
  &lt;figure id=&quot;cjDP&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/37/38/3738fadd-d6b8-4026-9ea3-32626e916f2d.png&quot; width=&quot;1366&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;V09y&quot;&gt;&lt;strong&gt;2. Крит импакт: RCE by desing из админки &lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;EsKa&quot;&gt;У меня в распоряжении было 3 хоста и порядка 5 админок на каждом. Я их нашел, поняв, по какому паттерну устроены пути до них.&lt;br /&gt;Попробовал найденные креды на каком-то количестве из них, получилось войти в три. В одной из них была возможность исполнять python код. Правда сама такая возможность требовала ввести еще один пароль, непосредственно от этого куска функций. Пароль был простейший и был сбручен. &lt;br /&gt;Далее я просто сделал запрос на 169.254.169.254 с помощью python и, способом описанным выше, получил креды от cloud инфры.&lt;/p&gt;
  &lt;figure id=&quot;rhQf&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a3/d4/a3d49214-d674-4bbc-b3d7-be27ae67812d.png&quot; width=&quot;3092&quot; /&gt;
  &lt;/figure&gt;

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

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