---
# System prepended metadata

title: INT-7-Омаров_Джамалутин
tags: [INT]

---

###### tags: `INT`
# INT-7-Омаров_Джамалутин
*Выполнил Омаров Джамалутин*
## Особенности работы отдела безопасности сетевых (WEB) приложений 

### Задание 1.

Openvpn подключен.

![](https://i.imgur.com/NtVEdly.png)

Проверим ping до хоста.

![](https://i.imgur.com/qtWaUJG.png)

Попробывал использовать mfsconsole. Для прохождения по портам и поиска открытых портов TCP. Также попытался отправлять SYN и ACK пакеты, но эксплоит не запускался как на просто TCP. Думаю стоит ограничение. Получилось выявить 4 открытых порта со службами:
* ftp
* ssh
* ssh
* http

![](https://i.imgur.com/Sav9O9d.png)

Кстати на данном ресурсе можно посмотреть код, при помощи которого можно протестировать уязвимость.

![](https://i.imgur.com/ZFW80NB.png)

Также попробывал через nmap с флагами -sS -sT -sV -sS, также пробывал вариант без пинга -Pn. Результат тот же.

![](https://i.imgur.com/OOt8CRh.png)

Написал скрипт, который проходит по портам. Получил имена определенных служб.

![](https://i.imgur.com/r6f1HyR.png)

Вот имена(некоторые из них):

![](https://i.imgur.com/GdZRtmY.png)

Также попробывал использовать сторонний скрипт. Результат такой же.

![](https://i.imgur.com/vkoQ3qn.png)

**Информация о сервисах**

На скриншоте представлены найденные сервисы на открытых портах.

![](https://i.imgur.com/yzprgWu.png)

Информация о версии дает нам возможность почитать в интернете о них, найти уязвимости в открытых источниках (CVE).

Найти информцию о версии vsftpd не удалось. Зато нашел информацию об уязвимых версиях OpenSSH. Куда входят наши.

![](https://i.imgur.com/SBJVFig.png)

Можно на CVE прочитать про уязвимость, а можно тут найти exploit.

![](https://i.imgur.com/3aFt916.png)

На данном этапе я стал искать, что еще можно найти и прочитать про эти известные сервисы. Нашел скрипт, который установил на kali.

![](https://i.imgur.com/eeG3Eta.png)

Он выдал необходимую мне информацию. Скриншоты приложу и дам пояснение.

ПОРТ 21 (ftp service):
Здесь представлена информация о том каким запросом получилось показать такую информацию. Порт, статут, сервис, версия сервиса, уязвимость, даже CVE ID.

![](https://i.imgur.com/2EnrgxO.png)

ПОРТ 22 (OpenSSH 8.2p1)
Представлены алгоритмы, есть понимание, что подключение по ключу.

![](https://i.imgur.com/s6w0pla.png)

ПОРТ 2200 (OpenSSH 5.9p1)
Тоже подробная информация об используемых алгоритмах шифрования, криптографических алгоритмах и версия конечно же.

![](https://i.imgur.com/2ffQ7PX.png)

ПОРТ 4433 (HTTP)
Названия каталогов.

![](https://i.imgur.com/o1pIr8L.png)

Также информация о сервисе.

![](https://i.imgur.com/Qbsl8DW.png)

Информация об SSL сертификации.

![](https://i.imgur.com/eFQcl4Y.png)

### Задание 2.

**CHECK 1**

Cначала отправляется запрос на URL `/bitrix/tools/composite_data.php`

Потом из полученного ответа вытаскивают значения PHPSESSID и bitrix_sess_id, дальше используя эти значения отправляет запрос на другой URL.
Также используются регулярные выражения, для того чтобы знать что подхватывать.

![](https://i.imgur.com/Evsmqgj.png)

Далее видим параметр `FileUploader`, что сигнализирует нам о том, что мы загружаем (скорее всего исполняемый) файл. После этого нас ждет проверка:
Если получен код 200 и найдено совпадение того, что файл загружен **по ключевому слову или значению** (в нашем коде проверяется, что метод `.find("????...??")` вернул НЕ string::npos, что соответствует тому, что подстрока была успешно найдена в полученном ответе), тогда выводит сообщение, что сервис уязвим.

![](https://i.imgur.com/jXFSnaP.png)

Проверяет наличие уязвимости Cross-Site Scripting. Является разновидностью атаки «Внедрение кода».

**CHECK 2**

При помощи UDP приложения могут посылать датаграммы другим хостам по IP-сети без необходимости предварительного сообщения для установки специальных каналов передачи или путей данных. Он быстрее TCP, его пакет меньше.

Подключается к указанному сокету не удалось подключиться - возвращает false. 

Создаёт буфер notVulnRecv из каких-то четырёх байт. 

Создаёт три разных буфера с разными значениями.

Пытается отправить пакет, в котором данные для проверки уязвимости, если не удалось отправить - возвращает false.

Если удалось отправить, считывает ответ из сокета:

* Если размер ответа меньше 4 байт ИЛИ если размер больше четырёх и ответ не заканчивается на 4 байта, сохранённых в notVulnRecv, считает уязвимым.
* Если ответ больше четырёх байт и заканчивается на 4 байта, сохранённых в notVulnRecv, возвращает false.

![](https://i.imgur.com/CvjDgF3.png)

Дальше он пытается отправить пакет sendValidProbe. Если не отправилось успешно - вовзращает false.

Потом очищает recvMsg и считывает туда то, что есть в сокете.
Если там что-то есть - пишет, что уязвимый. а если сокет пустой - возвращает false.

![](https://i.imgur.com/9fj3IVZ.png)

Сложение по адресу 0+600 с регистром eax. Данный регистр аккумутирует значения. Далее сложение значения al регистра и ecx (по адресу 0). Al - младшие 8 бит AX регистра. Далее значение регистра eax складывается само с собой. Это был машинный код записанный в буфере sendVulnProbe.

Кстати последний 00 байт на буфере sendVulnProbe не отобразился при выводе disassembler'а.

А самый первый вывод disassembler'а - это то с чем сравнивают. В зависимости от результата сравнения делаем вердикт, уязвимость есть или нет.

![](https://i.imgur.com/5PRZolS.png)

**Другие методы проверок**

Фаззинг – методика тестирования, при которой на вход программы подаются невалидные, непредусмотренные или случайные данные.
Проверки можно делать при помощи фаззера. Можно Фаззить сайты, можно фаззить протоколы. Описываем модель данных: делаем фаззер умнее, рассказываем ему о структуре файле или протокола (размерах полей, смещениях), с которым предстоит работать. Думаю действенный метод.

Выделяется три подхода к выявлению недостатков системы: тестирование методом черного, серого и белого ящиков. Различие между ними определяется теми ресурсами, которые доступны во время тестирования.

Достоинства:
* Уже написанные скрипты сэкономят время
* Первично могут подсказать, где возможно находится уязвимое место
* Автоматизировано

Недостатки:
* Есть вероятность понять в какую сторону двигаться, но что-то более углубленное с ним не попробуешь
* Скрипты на разных фаззерах делают одно и то же, разнообразия не получить

Пытаться внедрять тестировать вручную (можно получить базовые знания на Portswigger'е).

Достоинства:
* Твой скрипт возможно будет непохожим на другие
* Можно делать необычные запросы, использовать нестандартные подходы
* Если известно что-то о машине, можно кодить и проверять конкретные вещи

Недостатки:
* Время поиска, то есть если это blackBox recon, то лучше использовать Fazzer для начала иначе можно потерять время



