Всем привет! Меня зовут Илья Кэйс Исаковский. И сегодня я буду рассказать доклад про баги в интернет-экслоре, как вы уже могли заметить.
Я решил его назвать интернет-экслор не забыт.
Вкратце о себе. Я клиент сайта Phil. Очень люблю клиент сайта баги.
XSS Slav, всякие там Allerd-1, Allerd-Document-буки, это все мое.
Я не комплинирую, поэтому баги будут очень странными.
Возможно, даже в какой-то момент покажется, что я натягиваю с собой на глобус,
но на самом деле это дикий клиент-сайт, назовем его так.
О багах.
Ну, начнем по порядку.
Баги будут порядки возрастания от самых стрёмных и некрасивых,
которые показывают всякие непонятные вещи, до сложно обнаруживаемых с точки зрения пользователей.
То есть что-то там происходит, но он не поймешь, что это факт проэкспортировать.
Будет много 10 клик РЦЕ, будет РЦЕ через клик джекинг, это главная тема доклада.
Будет Universal XSS, что после этого время редкость, но техника, которая привела к Universal XSS, супер древняя.
И, что немаловажно, не все баги исправленные, этот доклад можно использовать как гайд для взлома desktop всяких приложений на винде.
Microsoft разрешил публиковать неисправленные аудитории, поэтому все нормально все прилично.
Небольшая предыстория. Года 4 назад я сильно-сильно стал взрываться в desktop приложения, себе почтовые клиенты, всякие.
Ну, в общем, все, что на дистопе на винде. И куда можно пропихнуть как-то XSS или JavaScript.
И в одной из почт у меня, я не могу назвать ее, потому что они там не исправили, короче, как обычно.
В одной из почт я там искал баки и записывал их в заметки. В одной из почт я нашел бак, который мне показался сложно эксплуатированным.
Вообще, моя цель была, это не просто там alert 1 сделать, как бы говоря, а добраться до файлов или до запуска процесса, что-то совсем необычное.
И в одной из почт у меня не получалось ни один из методов выполнить наподобие window open или location, чтобы сферединировать главное окно.
Но встроенный showmodel диалог, который у меня заработал, и более того он мне позволил открыть ссылку со схемой файл, что совершенно необычно для современной рекаузы.
Второй шаг, маленький кусочек кода. Самая главная часть это то, что мы вызываем через window open две URL.
урелки. Первая вообще какая-то поломанная, вторая, то есть минус понятно. И что происходит? Когда
вызываешь первую урелку, Internet Explorer говорит «не, какая-то она сломанная, я не могу ее открыть,
и тебе нужно нажать кнопочку «Ок» и согласиться, что это действительно сломанная урелка». А и после
этого, когда ты нажимаешь «Ок» вот эта урелка, на которую вообще он не должен ходить, становится
доступной, и он может начинать ходить в локальных файл. При этом, если открыть урелки быстро одну за
другой вот эта вот поп-оп-оп-шка сломанная URL не всплывает,
полностью автоматизируется процессом.
Что мы получаем в этих банках?
Мы можем ходить, грубо говоря, с интернета в локальные
файлы.
А что вам это в целом даст?
Даст нам много чего интересного.
В интернет-эксплоре внедрено очень много штук из винды,
Как это сказать? Не из инфраструктуры Виндии, а экосистемы Виндии, вот так называемые.
И для многих, наверное, знакомо такое столкновение security-зоны.
В Индии 5 security-зон, насколько я помню.
Первая — это мой компьютер, вторая — сайты в интернете,
третья — trusted-зона — это когда ты сам добавляешь доверенные сайты,
потом untrusted — это тоже ты сам добавляешь, и, по-моему, просто сайты в интернете.
Помимо этого я обнаружил то, что средняя линия в табличке, localhost и также еще и SMB-шара, это как будто какая-то вообще отдельная security зона, которая ни туда ни туда не относится, потому что она вроде может больше, чем сайт в интернете, но не может столько же, сколько локальных файлов.
Что конкретно вообще могут локальные файлы?
Вернемся к предыдущей.
Сайты в интернете могут запускать такую штучку ActiveX.
Это как JavaScript, но не на максималках, а что-то, наверное, как плагины в JavaScript.
То есть через JavaScript появляется опишечка небольшая и ты можешь обращаться к библиотеке.
И сайтов в интернете очень мало доступных всяких ActiveX объектов.
сайтов на localhost намного больше их доступно и у локальных файлов, когда ты из локального файла запускаешь
какую-то страничку, там доступно максимально много, даже самые небезопасные. И вот как это выглядит.
Это уже вторая часть, то есть до этого я рассказывал, что нашел баг в почтовок клиента, теперь я нашел баг.
А, еще не нашел. В общем, я буду открыть локальный файл, но мне его нужно как-то еще сначала положить
либо положить в него контент.
Так как я рассказывал про Internet Explorer,
самое логичное было попробовать заставить его сохранить,
просто папочка, которая уложилась в какой-то файл.
Но, к сожалению, Internet Explorer автоматически это сделать не умеет.
Он просит подтверждения.
Поэтому этот момент мы пропускаем.
И вот вторая часть бага, когда у меня все сложилось.
Я ломал уже не почтовый клиент, а редактор таблиц, типа Excel-инский.
Воткнул туда JavaScript и у меня всплыл вот такой Windows Security Warning.
Это говорит о том, что действительно ArchiveX объект запустился, он небезопасный,
и для его инициализации пользователь должен согласиться, подтвердить.
Каким образом я этого добился?
Оказывается, Internet Explorer не умеет сам сетать файлы, ему нужно нажимать на кнопочки,
кнопочки, но он может открывать окошко Microsoft Edge через
схему Microsoft Edge двоеточие и дальше просто ссылку на
нужный сайт.
А Microsoft Edge уже в свою очередь может спокойно сохранить
файлы в локальную папочку.
И мы складываем в одно из вторых, получаем полную
цепочку, кладем файл и его запускаем.
Немножко тонкостей про вот эту штуку с сохранением
файлов.
Первый раз, когда я сделал все вместе, цепочку сложил,
я использовал файл localhost. И у меня все окей, все сработало, все спустилось, вот это вот окошечко
VSH в ствол. Когда я уже делал отчет, я делал более реалистичные условия, прописал себе host
attacker.com, заменил на localhost, и при этом у меня уже не спустился небезопасный активный собъект.
Когда я начал павляться, я обнаружил то, что если скачивать файл с localhost, на него не ставится
меточка Mark of the Web, как правило считается, как будто его создали локально, а не откуда искачивали.
Ну и даже не пак, а цепочка номер один. 10 клипк РЦЕ со страшными бобапами.
Логика такая. У нас есть сайт attacker.com, куда пришел пользователь.
Этот сайт открывает либо заранее увезимое приложение, там какой-нибудь u-torent,
U-Torrent, который недавно обнаружили XSS и пытается там с помощью XSS нагрузить и нагрузить.
Либо вот эти два момента можно сложить в один, если ты нашел XSS в каком-то почтовом клиенте,
уже может быть либо localhost, либо сразу файл, как вот здесь.
И немного шаги упрощаются, мы уже сразу попадаем в нужный контекст.
Что здесь? У нас attacker.com открывает XSS на локальном косте,
В следующем случае, XSS на локальном косте открывает
age, сохраняет файл и потом возвращается и redirected
Internet Explorer на этот сохраненный файл.
Вот так это выглядит все вместе.
Открылся age, сохранился файл, redirected, и сейчас
будут всплывающие окошки.
В Internet Explorer два всплывающих окошка, нижняя и верхняя.
Нижняя – это чтобы включить в целом, жалостки, это за
локальный файл, а второй – это уже чтобы запустить
небезопасные блок.
Нижнее окошко всплывающее можно забайпасить, я прям уверен на 95%, вот второе уже в ряд.
Бак номер два. Обузим запуск сторонних процессов.
Как оказалось, я точно не могу утверждать, так как я уже говорил, я не умею компилировать.
Я вот у вас интересуюсь, есть ли у Grand Explorer песочница, и если есть, она почему-то позволяет спокойно запускать сторонние процессы, я ей вообще наблюдаю.
И способ запуска процессов абсолютно тупой. Вот он. Кто HTMate знает, мы просто открываем не локальный файл, а файл с локал-тоста. Вместо этого, чтобы открыться в окне Internet Explorer, он сохраняется во временную папку, запускается процесс not-pad.exe и подтягивает этот файл, открывая-то при себя.
Когда я обнаружил, это чисто случайно, просто там CSS файлик я пытался открыть, когда я обнаружил, что меня спустился в процесс, я написал Pfizer, который просто все экстеншены из Винды у меня перебрал.
Я получил такую небольшую табличку, сзади сидит, плохо видно.
Ну там дальше будет выжимка.
Самое интересное.
Самое важное, что мне больше всего зацепилось, у нас есть группа файлов, которые отвечают за плейлисты.
и они запускают процесс Windows Media Player, который тоже поможет.
С localhost, как я уже показывал, можно запустить просто редиректом,
открытым, тест-вейн-микс.
Но при этом с любого сайта мы можем с помощью ActiveX объекта
запустить библиотеку Windows Media Player и скормить ей также ссылочку на плейлист,
и это будет работать уже не только на localhost, а вообще на любом сайте.
Чем нам интересны плейлисты? А тем, что, так как они обрабатываются уже другой гиблиотекой, у них нет ограничений того, что они могут ходить на ссылочки файл, и мы можем при воспроизведении плейлиста сходить на S&B-шару и ликнуть, чем это и вам пользователи.
Продолжим. Помимо Windows MetaPlayer, там еще было 4 интересных расширения.
XAML, VSTO, Application и XBAR. Они позволяют дотянуться и пощупать немножко dotnet класс.
Самый менее, самый более защищенный, менее небезопасный, наверное, XAML.
Выглядит он вот так. Это просто .xml файлик, который открывается в Internet Explorer.
Я тут не успел разметить, но вкратце у нас тут через
NextSpace инициализируется System Rundime, дальше мы обращаемся
к классу string и вызываем у него всякий concat, index of и
всякое такое.
И вот как это выглядит на domain.explore.
Мы просто открываем, к сожалению, не видно, к самому
файлу.
Первое — это длина, потом concat и потом индекс такого-то символа.
Естественно, я попробовал запускать всякие лип-запасные вещи.
Единственное, что у меня получилось — это просто поп-ап вызвать.
Когда я попробовал DNS-запрос отправить или сделать, грубо говоря, какой-то лик айп-шника хотя бы,
у меня вывалилась system.net permission ошибка, когда я попробовал прочитать файлы
и запускать какие-то процессы вне директории.
Процессы вообще не запускать, не позволяем на файлы,
читается только в корневой директории.
Если выходишь из нее, то, опять же, ошибка permission.
Следующее расширение файлов – VSTO.
Это плагины для офиса.
Самый главный кусочек кода выглядит так.
Там открываешь, как это называется, среду разработки, вставляешь,
там что-то все собирает, и в итоге получается какая-то гигантское полотно.
из непонятных мне XML элементов, которые подписаны в Digital Signature и ссылаются вот здесь вот на манифест и на DLL.
Excel, Addon, DLL. Что будет, если мы откроем такой файлик в Internet Explorer?
Если мы скачиваем файл из интернета и запускаем, обычно у нас вот такое окошко выскакивает.
Это как раз говорит о том, что у файла есть Mac OS Web и его расширение небезопасное.
Но у этой группы файлов такого оповещения нет, у него есть свои собственные встроенные оповещения.
Вот как это выглядит. Запускаем WSTO через RINDEXPLOR. Вот такое оповещение, я сейчас покажу конкретно на что он ругается.
Publisher, какой-то машинакцесс, это видимо то, что я код выполняю. Вот я нажал установить, close можно не называть.
Теперь чтобы наш код запустился, так как мы установили это как плагин к офису, нам нужно открыть просто Excel.
Все, при запуске Excel заполняется код.
Еще раз покажу, тут есть в ходе события стартапа.
Я просто туда дописал, то, что запускай калекулятор при стартапе.
Так, теперь следующее решение, Application.
Это уже Call Online приложение.
Плюс-минус код похожий.
Вот так выглядит, когда его запускаешь.
Вообще, я его запускаю двумя кликом, но можно просто редиректом запускать.
Это так для наглядности.
Ошибки плюс-минус те же самые, но теперь нам не нужно ничего запускать, но сразу запустится после того, как нажимаешь согласится.
Теперь третье.
X-Bug.
Это уже внутри браузерное приложение.
И почему-то здесь в ошибке уже, по-моему, installation у меня доверенность.
Или что-то такое.
Самое главное — бонус.
Всё, а не всё, Xplug Application можно запускать из Microsoft Azure,
не только из древнего нового галлюзатора Linux 4.
Но сейчас он проиграет.
Единственный момент — то, что теперь нам нужно не два клика,
чтобы согласиться по этому обучению, а ещё сверху вот тут вот всплывает.
Оп, вот здесь нужно первый клик сделать, а потом ещё второй по обычному обучению.
Universal.tc через web-архивные.
Для многих, наверное, такой будет знаком формат, как
mhtml, mht.
Если открыть в браузе Ctrl S, такое существование клавиш,
можно выбрать сохранить не как много файлов, сохранить
одним файлом.
Это как раз вот сохранится с таким форматом.
И как работает вообще этот веб-архив?
Так как мы репрезентуем в одном файле много разных файлов,
мы обязаны как-то указать, где до этого находился этот файл.
Как раз за это отвечает у нас контент-локейшн заголовок.
Он показывает, где файл лежал до того, как мы скачали этот архив.
Помимо этого есть еще RFC, где мы можем передать заголовок контент-ид со значением.
и этот заголовок будет использован для того, чтобы какой-то кусочек загрузить в основной файл с помощью URL-ки CID двоеточек.
То есть вот мы передаем Content ID, сейчас покажу на примере, и тест в угловых скобках.
И мы потом используем просто CID двоеточие тест и загружаем файл с вот этим Content ID.
Итак, в целом вот полностью эксплойт, который приводит к выполнению JustLit на одном сайте.
Но что мы должны здесь увидеть? Вот эта стрелочка у нас показывает, как Content ID у нас отображается.
Вот эта стрелочка показывает, как мы открываем этот Content ID.
Content Location у нас перезаписывает. Делает так, что как будто бы файл мы скачали с MSN.com.
И потом через относительные пути там ходят и пытаются уже выполнять скрипты.
Как это выглядит? Точно так же в целом, как и первый баг.
Только теперь нам нужно кликнуть еще раз, потому что Edge не может автоматически скачать MHD, он считает это очень безопасным.
Я думаю, тоже как-то можно обыкнуть.
В общем, файл скачался, автоматически садиректировался, у нас cookie.смс.н.дотком показывает.
Четвертый баг, не баг и фичи. Все, что я называю не баг и фичи, это значит, это неисправлено.
То, что баг, это значит исправлено.
Четвертый баг – Abuzium листинг-папок в Индии.
Как это выглядит?
Вот я вывел три окошка с айфреймами, они вывелили название файлов, папок и все дела.
По сути, вот этот функционал полностью эмулирует функционал проводника Explorer XZ.
И также работает нажатие правой кнопки мыши, скопировать, переименовать.
Также работает запуск двойным кликом.
кликом. И что самое главное, мы можем эти фреймы делать
маленькими, делать невидимыми, укладывать друг друга, и
это приводит как раз к крикджекинге. К крикджекинг
атаке интересного. Что у нас получается? Все точно
так же. attacker.com открывает localhost.xss. localhost.xss сохраняет
zip-архив теперь уже. В zip-архиве у нас лежит html-файл, который
мы используем как подсюш, чтобы она открыла нужное
И рядом еще с HTML файлом у нас лежит Exesnik.
Так как мы его качаем с localhost,
MarpleZweb не ставится и мы можем из этого zip-архива автоматически запустить Exesnik.
Ну не автоматически, а вайденник. Вот так это выглядит.
У нас дробуется HTML, дробуется zip-архив.
Две HTML. Нам нужно цепочку сделать, чтобы красиво это было.
Средиректива. И теперь у нас всегда под курсором бегает квадратик.
Вот видно на черное ножи.
Если два раза кликнуть по квадратику, у нас без каких-либо оповещений, без вот этих вот соглашений, просто сразу же запускается будет куда-то.
Я поковырял немножко это место и попытался его апгрейдить.
Как я это сделал? Я просто открыл исходный код страницы и увидел то, что обычно вот здесь вот в вайфрейме.
Исходный код страницы, который ты открыл, а у меня здесь вообще ActiveX объект какой-то загрузился.
Я попробовал редактировать эту дону. Видно там ProGT Shell Explorer 2 и Class IT тоже я указал отдельно.
Я попробовал провалиться внутрь этого объекта, нажал это «Редактировать», и он у меня вывалил список всех своих параметров.
Самый главный, за который у меня зацепился взгляд, это сингл-клик, который как бы намекает, что мы можем теперь не двумя кликами запускать.
Как это выглядит? Выглядит все в целом точно так же. Нам опять же нужно два клика, потому что первый клик нужно сделать сюда, к сожалению.
Но, как я говорил, скорее всего, это можно обойти. Вот так это выглядит.
Также скачивается пара HTML и zip-рхит
У меня этот виртуалка заглючило видео, мы долго видео записывали
Ну и вот, и нам нужно согласиться сначала здесь, я уже говорил, что это скорее всего можно обойти, и потом еще сделать этим клип куда-нибудь.
Все, пара закручивает.
Следующий пример, но уже совсем необычный.
Помимо запуска с помощью для иных клипов, мы можем перетаскивать файлы друг на друга.
И в этом случае нам уже не нужен localhost как доставка файла, потому что мы можем обходить marclv.
Как это работает? Мы можем создать zip-архив с LNK файлом, ну и LNK файл, это я покажу настройки, которые я использовал.
Указать ему просто запуск командной строки с аргументом gal.gz.
И обычно, если такой файл скачан из интернета, по нажатию на него всплывет это оповещение Маркозова.
Вы действительно хотите запустить файл из интернета, которому мы не доверяем?
Мы же вот это оповещение можем обойти тем самым, что мы будем запускать не двойным кликом,
а перетаскивая любой, совершенно любой файл на вот этот вот ярлык.
А я видео очень ставил, пардон. Только самое завершающее видео.
В общем, первый был так, что мы перетаскиваем просто на NLK, и это из-за того, что мы используем необычный способ запуска, обходит Markov ZV проверку.
Второй способ обойти Markov ZV проверку — это уже не при запуске, а при копировании файлов.
И как я вообще это обнаружил? Изначально я тестировал не все по архивам, а SMB-шар поднял просто и оттуда файлы.
Пытался скопировать, перетащить или что-то такое сделать.
Я обнаружил несколько расширений файлов, которые зарегистрированы в людей как цель для Драгонтропа.
То есть на них нужно перетаскивать что-то.
Первая точка map email. Открывается Outlook и этот файл улетает во вложение в новом письме.
Можно еще нажать, потом отправить.
Особо не интересно. MyDogs.desk.in более-менее интересно, потому что они создают ярлык на перетаскиваемый файл в документах, либо на рабочем столе.
И последнее архивируют файл просто через стройку.
Самое интересное, что мне больше всего заинтересовало, это создать файл на десктопе, потому что это все время перед лицом у пользователя.
В данном случае я опять же делаю все через zip-архив.
И сейчас будет видно как раз то, что вот этот способ нестим рабочий и MarkoZV устанавливается.
Я сейчас объясню, как это делать, чтобы MarkoZV не устанавливался.
Опять же, это можно абсолютно игнорировать, перетаскиваем.
У нас появляется на локальном койте, на рабочем столе ялычок.
Мы по нему пикайка, вот это вот оповещение MarkoZV. Как его обойти?
На этапе вот этого, нам не нужно скачивать теперь zip-архив.
Мы можем открыть smb-sharl, и получается как?
Когда ты качаешь zip-архив, все файлы, вложенные в нем,
наследуют Mark of the Web автоматически.
Когда у тебя файл лежит на шаре, ты по нему кликнул два раза,
он сначала не имеет никакой Mark of the Web.
Ты по нему кликнул, он куда-то улетел во временную папку в винде,
тогда в тот момент установился Mark of the Web и уже запустился.
Если скопировать, то же самое.
Файл улетает, папку куда-то его хотел положить на рабочий стол,
устанавливается Mark of the Web, в этом примере не совсем.
И такое же должно оповещение всплывать.
Однако, если мы берем LNK файл, то есть уже ELLIF, перетаскиваем на DeskLink с SMB-шары,
то из-за того, что у нас необычный способ копирования, он не завершается установкой Mark of the Web.
И поэтому вот это вот оповещение дезапасов, действительно хотите запустить в файл, не показывается в данном случае.
Ну вот как раз я описываю это текст.
На этом все.
Я уверен, что я немножко сумбурно рассказал и какие-то
вопросы могут появиться, поэтому welcome.
А, все?
Вопросы?
Ну, давайте.
А, все?
Вопросы?
Ну, давайте.
А, все?
Вопросы?
Ну, давайте.
А, ну, кисть, когда эксентировали и каусе, а, все,
В итоге там было RCE, но которое требовало, опять же, чтобы на localhost была приложена.
Там сложно было бы эксплуатировать.
Да, там суть в чем. Доставлялось все через Excel файли.
Я в него дописывал HTML код в определенное место.
Когда его открывал через редактор, этот HTML-код добавлялся в страницу, рендерился и запускал уже скрипты.
А, почему он все это появился?
Ну, то есть, Excel-файл как способ доставки, а баг был необычным просмотрщиком Excel-файлом.
Он там, типа, сначала превращал Excel в HTML, потом выводил с помощью Prauders, поэтому там были баки.
Я знаю, что открываете, что там Excel-файл, а что это уже не любой Excel-файл?
Ну, в самом Excel, скорее всего, таких багов не будет уже.
Это уже давным-давно были. Это больше... Опять же, вернемся в начало. Вот этот весь доклад — это как способ ломать всякие desktop-приложения.
А вот, я, кстати, забыл важную мысль. Internet Explorer выбили в 2022 году. Тоже, для кого не секрет.
Но все так же используется в desktop-приложениях в виде веб-браузер-контрол, компонента .NET и VBS.
Тот же самый там BINRAP, который я года 3-4 назад ломал и писал про это.
использует как раз веб-браузер control, одну из трех запусков.
То есть ты запускаешь просто архивчик или запускаешь экзешник, вот он считает.
Три раза прошло, если у тебя не оплачена лицуха, он говорит, давай-ка ты оплачешь лицуху и показывай тебе баннер.
Как раз вот этот баннер, он грузит веб-браузер control со своего сайта и показывает оштеваем баннер.
Мне кажется, следов мало остается.
У тебя, по чуть-чуть, в доклад, нашла борьба с Markvon Zweb.
Борьба за клики, борьба с Markvon Zweb.
Есть достаточно известная техника. Мы скачиваем подписанное приложение.
И рядом, на котором DLF, подбираем DLKJ.
Ну, DLKJ.
Да, мы в майпасе Markvon Zweb.
Надо посмотреть будет, попробовать, прочим это тоже.
Погубли просто OneDrive DLKJ.
А, спасибо.
Говори громче, не слышу.
Сейчас, в ближайшее время, мы выложим на слон стачью полностью.
Покетом болт.
Что, все? Не могу бежать на берегу?
Спасибо, что послушали.
Хорошо, спасибо.