НОВОСТИ HackTheBox. Прохождение Forwardslash. LFI, backup и шифрованный том

Alvaros
Онлайн
Регистрация
14.05.16
Сообщения
21.452
Реакции
101
Репутация
204
4qaljko1gd4fr9wnsavgdn6eu1m.png

Продолжаю публикацию решений отправленных на дорешивание машин с площадки .

В данной статье перечисляем директории и поддомены на сайте, эксплуатируем LFI, делаем бэкап недоступного файла, а также монтируем шифрованный том.

Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ.

Организационная информация
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал и в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации .

Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.

Recon


Данная машина имеет IP адрес 10.10.10.183, который я добавляю в /etc/hosts.


10.10.10.183 forwardslash.htb

Первым делом сканируем открытые порты. Так как сканировать все порты nmap’ом долго, то я сначала сделаю это с помощью masscan. Мы сканируем все TCP и UDP порты с интерфейса tun0 со скоростью 500 пакетов в секунду.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.183 --rate=500

kr7j5gu3t0alnt4j9tqmrrq6dkg.png


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

nmap -A forwardslash.htb -p22,80

xenynzr9wj81xrevgyyxj0njd2a.png


На сервере работают служба SSH и веб-сервер. Заходим на веб-сервер, и смотрим, что нам могут предложить.

oaf-izc15ykyabirie2sd6kmuwk.png


Так нам сообщают о взломе хоста, упоминают XML и FTP. Давайте переберем директории с помощью gobuster. В параметрах указываем количество потоков 128 (-t), URL (-u), словарь (-w) и расширения, которые нас интересуют (-x).

gobuster dir -t 128 -u -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,xml,txt

ad_jd9czrobgnwdb7tmvmt1yup0.png


И находим note.txt. Давайте прочитаем.

2p9_0azizl5kndloe_7ghrpcdb8.png


Сообщается о группе, взломавшей сайт и о том, что есть бэкап. Давайте поищем поддомены. В качестве фильтра установим количество символов не равно 0.

wfuzz -H 'HOST:FUZZ.forwardslash.htb' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u forwardslash.htb --hh 0

7zbsbt-v7uwvnpdla39uyctsi0u.png


И на ходим поддомен backup. Добавим его в файл /etc/hosts.
10.10.10.183 backup.forwardslash.htb
Переберем директории и для этого домена.

gobuster dir -t 128 -u -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php,xml,txt

xxfq0vas2ichubwsets78cdsbsa.png


И переходим по данному адресу.

Entry Point


Нас встречает форма авторизации.

2jliq4clsrsxzx3z5jmx9dm2ykc.png


Также есть возможность регистрации. Давайте зарегистрируемся, а потом войдем.

ey9t_rpk2uzsmbsedy3wtk8vbuq.png


Гуляя по ссылкам, находим формы смены имени, пароля, а также можно задать изображение профиля. Пожалуй остановимся на нем.

0wc7b2uxjqrk-sf3yg3xbkff4vw.png


Сообщают, что в связи со взломом данная функция отключена. При этом поле ввода не доступно, скорее всего disabled в HTML.

8jilt46vmf6lsebzi2adrfu8vaw.png


Удаляем данное свойство у обоих элементов. Я запустил на локальной машине веб-сервер, и указал в поле ссылку на файл test.txt.

vmprpjrrneiz5k2c4tajgc874jw.png


Так как не никаких фильтров, давайте попробуем вектор LFI. Для удобства делам это в Burp Suite.

vu6un2qpjybrj6ucgmwuxo-oapo.png


И есть LFI!

USER


Давайте проверим конфигурации apache.

cq17a_cgyj8hcpyjtvbptlififc.png


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

nonivkmtytxnpxnbhsstlozlzqm.png


Но мы можем использовать php фильтры, к примеру base64. Так файл php сначала кодируется, а потом отображается на странице. Таким образом он не будет выполнен.
php://filter/convert.base64-encode/resource=../../../../var/www/backup.forwardslash.htb/index.php
ae3qerdck5wllpyk2s6zuirckv0.png


Выделим нужный фрагмент и нажмем Ctrl+Shift+B.

wwcwrbnxf70gjfuq55k1g37v4ry.png


Получаем декодированный код. Давайте этим способом прочитаем все найденные во время сканирования файлы. В файле config.php находим пароль для подключения к базе данных.

1bumreov44x-_sadsellrgdscsc.png


Давайте так же взглянем на /dev/index.php. И там находим аутентификационные данные пользователя chiv.

kzvtvfkgpoa0iqss6gbz9uczmeg.png


Данный пользователь есть в в системе, это мы узнаем из /etc/passwd. Попробуем эти данные для подключения по SSH.

rnehtkf3ieobqra2emdeihrwh_4.png


USER2


Для сбора данных в системе используем скрипт LinPEAS. И находим в бэкапах какую-то записку.

q7e8xc-gvdwrdhrosqdxjhb770o.png


cwru5vldjzcxq1fp4lrpmm6mydc.png


Таким образом в бэкапах есть старый конфиг с паролем. Он принадлежит pain’у.

oaejbkce9zuo7ajqi_ppi1q7a6c.png


Так на программу backup стоит SUID бит. То есть мы можем выполнить программу от имени пользователя pain.

pwh-rrehjzvfzrso0vtkczkjg-e.png


Мы можем сделать backup, но только определенного рандомного файла.

0ochdlidvtmagk35ndfedb2m9rq.png


Мы можем сделать ссылку на бэкап конфига, назвав ее как представлено из программы backup. Но мы должны успеть в течение нескольких секунд. Поэтому сделаем скрипт. Сначала получим имя файла.

bmswyshw55zp21al__m-juu2xmg.png


Теперь добавим создание ссылки и повторный бэкап.

tsjirtrpq0qlgs2njchp7jfcjnq.png


Запустим из домашней директории пользователя и получим файл.

c11yqhc_hcd-czn8o7oz_cqypn0.png


Сменим пользователя введя данный пароль.

r6r6_p9gxfzk4v-mco7jny_bcnc.png


ROOT


Давайте глянем настройки суда на выполнение команд без пароля.

cf3nnxxgiml2sr0okr-dpmgyoyg.png


Таким образом, мы имеем шифрованный том. Чтобы расшифровать и монтировать его, нам нужен пароль.

3j73cejs0-w_4wvmfjzbueeddd0.png


Мы имеем шифртекст и программу.

iumgqfdmgljhl-qjt593wvni0ra.png


Для дешифрования используем следующий код.

def decrypt(key, msg):
key = list(key)
msg = list(msg)
for char_key in reversed(key):
for i in reversed(range(len(msg))):
if i == 0:
tmp = ord(msg) - (ord(char_key) + ord(msg[-1]))
else:
tmp = ord(msg) - (ord(char_key) + ord(msg[i-1]))
while tmp < 0:
tmp += 256
msg = chr(tmp)
return ''.join(msg)

ciphertext = open('ciphertext', 'r').read().rstrip()
for i in range(1, len(ciphertext)):
for j in range(256):
key = chr(j) * i
text = decrypt(key, ciphertext)
if ' the ' in text or ' to ' in text:
print(key)
print(text)
exit()

И успешно дешифруем сообщение.

ho7mxwd0qhucpstfhms5rxodfma.png


Посмотрим, что у нас по указанному пути.

qu_zalp6rrcqeohyzkq5fqxnsdq.png


Расшифруем том.

vs5w1jxssighz7x2ws155trjnvu.png


И примонтируем его.

czx4vsuwlomjnom4tcmq1rcsqjm.png


Там расположен ключ SSH.

mqx7g41iwh5_o8w6xi1xnjvch_e.png


Подключаемся и забираем флаг.

4l-iljla5hb9nklqmnv7ep6fm3i.png


Вы можете присоединиться к нам в . Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.
 
Сверху Снизу