---
title: INT-7-Криворученко_Савелий-Практика_7
tags: Module 2
description: Use `{%hackmd theme-dark %}` syntax to include this theme.
---
<style>
html, body, .ui-content {
background-color: #333;
color: #ddd;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
color: #ddd;
}
.markdown-body h1,
.markdown-body h2 {
border-bottom-color: #ffffff69;
}
.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
color: #fff;
}
.markdown-body img {
background-color: transparent;
}
.ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a {
color: white;
border-left: 2px solid white;
}
.expand-toggle:hover,
.expand-toggle:focus,
.back-to-top:hover,
.back-to-top:focus,
.go-to-bottom:hover,
.go-to-bottom:focus {
color: white;
}
.ui-toc-dropdown {
background-color: #333;
}
.ui-toc-label.btn {
background-color: #191919;
color: white;
}
.ui-toc-dropdown .nav>li>a:focus,
.ui-toc-dropdown .nav>li>a:hover {
color: white;
border-left: 1px solid white;
}
.markdown-body blockquote {
color: #bcbcbc;
}
.markdown-body table tr {
background-color: #5f5f5f;
}
.markdown-body table tr:nth-child(2n) {
background-color: #4f4f4f;
}
.markdown-body code,
.markdown-body tt {
color: #eee;
background-color: rgba(230, 230, 230, 0.36);
}
a,
.open-files-container li.selected a {
color: #5EB7E0;
}
</style>
# Module_2_INT-7-Криворученко_Савелий
```
```
<a name="headers"><h2>Особенности работы отдела безопасности сетевых (WEB) приложений</h2></a>
## Задачи:
- [ ] Стенд по адресу: 10.90.192.19
Необходимо провести blackbox recon данного узла. Ответ оформить в виде advisory.
* Какие tcp порты открыты.
* Сколько сервисов(ПО) доступно на данных портах. Назвать не менее 5.
* Собрать максимально возможную доступную информацию о каждом найденном сервисе.
- [ ] Представлен код безопасных проверок на уязвимости: Check1 и Check2. Ответы можно предоставить как ответы на вопросы в развернутом виде, так и в виде advisory.
* Разобрать код. Что он делает и зачем. В чем заключается специфика безопасной проверки.
* Наличие каких уязвимостей проверяют Check1 и Check2
* Check1: что должно быть вместо строки ???????????????????????????, чтобы вынести вердикт о наличии уязвимости
* Какими еще методами можно удаленно проверить на наличие уязвимостей.
* Какие достоинства, риски и ограничения у предложенных методов.
|Какие tcp порты открыты|
|---|
|Подключимся по openvpn|
|---|
||
|Произведем интенсивное сканирование tcp портов|
||
|
```
В ходе сканирования были получены порты и сервисы:
PORT | STATE | SERVICE |VERSION
------------------------------
21/tcp open ftp vsftpd
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
2200/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.4 (Ubuntu Linux; protocol 2.0)
4433/tcp open http Apache httpd 2.4.41
514/tcp filtered shell
```
|21 port|
|---|
|ftp - программные приложения, которые позволяют пересылать файлы с одного устройства на другое. как локальный, так и анонимный доступ отключены.
|21 port|
|---|
|ssh - протокол удаленного управления ОС (ubuntu). Использует ssh-hostkey:
| 3072 6dc210f310b74344730d0b2967c55211 (RSA - криптоалгоритм с использованием открытого ключа)
256 81f0dad2b4028836c89499378547e42f (ECDSA -строится эллиптической кривой, использует открытый ключ)
256 dc5a721fb0e894971600b2d3b4ba4f27 (ED25519 - схема шнора)

|2200 port|
|---|
|ssh. Использует ssh-hostkey:|
|3072 fc0a5afdd0eeccb61f1ec7ee00feb5d5 (RSA)

|4433 port|
|---|
|Apache2 - веб. сервер. Версия: 2.4.41. http/1.1.


|Данный ip защищен брандмауером, использовал вызов -Pn|
|---|
|
| port 514 является отфильтрованым, отвечающим за shell - обеспечивает поддержку виртуального терминала|
||
|Не понимаю, что за вид advisory. Если это консультирующая часть то я бы:|
|---|
|Спрятал за Firewall ПО: ftp ssh|
|C Apache ввел запрет просмотра содержимого папок без индексного файл, спрятал версию веб-сервера, поставил firewall, запрет доступа к папкам с резервными копиями
---
|2|
|---|
|Разберем код|
|---|
|Подписал действия кода|
```
void Check1(host, port)
{
string iid;
string sess;
HTTPReply reply = HTTPGETRequest(host, port, "/bitrix/tools/composite_data.php", "Connection: keep-alive");
if (reply.code == 200)
{
boost::regex pattern;
pattern = boost::regex(".*PHPSESSID=([\\d\\w]+).*'bitrix_sessid':'([\\d\\w]+?)'.*", boost::regex_constants::icase);
/* поиска подстроки в исходной строке по заданному регулярному выражению*/
boost::smatch what;
if (boost::regex_match(reply.fullreply, what, pattern))
{
sess = string(what[1].first, what[1].second);
iid = string(what[2].first, what[2].second);
}
/* соответсвия входящей строки и некоторого регулярного выражения */
if (sess.empty() || iid.empty())
{
printf("Prereq fail %s", reply.fullreply.c_str());
return;
}
/* Если id и session неизвестны или пусты, доступ запрещен */
HTTPReply replyPost = HTTPPOSTRequest(plugin,
GetServerName(plugin),
"/bitrix/tools/vote/uf.php?attachId[ENTITY_TYPE]=CFileUploader&attachId[ENTITY_ID][events][onFileIsStarted][]=CAllAgent&attachId[ENTITY_ID][events][onFileIsStarted][]=Update&attachId[MODULE_ID]=vote&action=vote",
"--db7314ff402791dd7fd88f6570d622c1\r\nContent-Disposition: form-data;
name=\"sessid\"\r\n\r\n" + iid,
"Cookie: PHPSESSID=" + sess + "\r\nContent-Type: multipart/form-data;
boundary=db7314ff402791dd7fd88f6570d622c1");
/* Всегда требуется создавать логирования пост запросов, чтобы избежать удаленного выполнения кода RCE */
if (replyPost.code == 200 && replyPost.fullreply.find("??????????????????????????? = /bitrix/tools/vote/uf.php") != string::npos)
{
printf("Vulnerable");
return;
}
else
{
printf("Not Vulnerable");
return;
}
}
}
/* ???????????? - другие варианты: /bitrix/tools/upload.php
/bitrix/tools/mail_entry.php; /bitrix/modules/main/include/virtual_file_system.php; /bitrix/components/bitrix/sender.mail.editor/ajax.php; /bitrix/tools/vote/uf.php; /bitrix/tools/html_editor_action.php; /bitrix/admin/site_checker.php*/
```
```
DWORD Check2(ip, port) {
UdpDtlsSocket udp_dtls_sock(ip, port);
/* DTLS sock - оболочка для обеспечения шифрования для приложений */
if (!udp_dtls_sock.DtlsConnect())
return false;
Buffer notVulnRecv("\xff\xff\x00\x80");
/* call */
Buffer sendValidProbe("\x05\x00\x06\x00\x00\x00\x41\x00\x01\x00");
/* макс размер буфера для udp сокета */
Buffer sendVulnProbe("\x05\x00\x06\x00\x00\x00\x41\x00\x01\x00\x00");
/* опасный буфера для udp сокета */
Buffer recvMsg;
/* recvMsg - Получение сообщения из сокета */
printf("[*] Sending vulnerable package...");
if (!udp_dtls_sock.DtlsWrite(sendVulnProbe))
return false;
/* При опасном буфере, не выполняет запрос */
bool rc = udp_dtls_sock.DtlsRead(recvMsg);
/* перенос значения сокета в переменную */
if ((rc && recvMsg.Size() < 4) || (rc && recvMsg.SubBuf(recvMsg.Size() - 4, 4) != notVulnRecv)) {
printf("Vulnerable");
return true;
}
/* обнаружение уязвимости */
if (rc && recvMsg.Size() >= 4 && recvMsg.SubBuf(recvMsg.Size() - 4, 4) == notVulnRecv) {
return false;
}
/* Не выполняет запрос */
printf("[*] Sending package...");
if (!udp_dtls_sock.DtlsWrite(sendValidProbe))
return false;
recvMsg.Clear();
rc = udp_dtls_sock.DtlsRead(recvMsg);
if (rc) {
printf("Vulnerable");
return true;
}
return false;
}
```
|1. Разобрать код. Что он делает и зачем. В чем заключается специфика безопасной проверки.|
|---|
|Check1|
|1. Производит поиск по заданному регулярному выражению, 2. После чего сверяет с регулярным выражением. А также происходит логирование post запроса для корректной идентификации сессии. Если же без логирования был получен доступ в папку настроек, то уязвимость присутствует.|
|Check2|
|Данная проверка сверяет кол-во буфера незашифрованного udp сокета с несколькими стадиями проверки|
|2. Наличие каких уязвимостей проверяют Check1 и Check2|
|---|
|Check1|
|RCE уязвимость, довольно свежая, получила свою популярность после начала СВО, Построенная на уязвимости bitrix. Внедряется путем post запросов|
|Check2|
|Удаленный пользователь может с помощью специально сформированного UDP пакета вызвать переполнение стека и выполнить произвольный код на целевой системе.
|CVSS: 3.0/ AV: N / AC: L / PR: N / UI: N / S: U / C: H / I: H / A: H|
|3. что должно быть вместо строки ???????????????????????????|
|---|
```
/bitrix/tools/mail_entry.php; /bitrix/modules/main/include/virtual_file_system.php; /bitrix/components/bitrix/sender.mail.editor/ajax.php; /bitrix/tools/vote/uf.php; /bitrix/tools/html_editor_action.php; /bitrix/admin/site_checker.php*/
```
|4. Какими еще методами можно удаленно проверить на наличие уязвимостей.|
|---|
|Использовать nuckle - собственных пользовательских проверок безопасности с помощью очень простого и удобного в использовании синтаксиса шаблонов. ИЛИ сервис SHODAN для просмотра уязвимостей и открытых портов|
|5. Какие достоинства, риски и ограничения у предложенных методов.|
|---|
|Нукля. Достоинства: безопасная проверка, Риск: минимальный если же подход whitebox(не знаю можно ли так говорить).Инструмент имеет мало ложных срабатываний, а также огромное количество полностью настраиваемых шаблонов|
|shodan. Достоинства: дает возможность быстро оценить число уязвимых версий ПО после публикации очередной уязвимости. Риск: -. Ограничения: Дает обширный доступ к возможным уязвимостям, без совершения проверки.