扫描漏洞

扫描漏洞

漏洞泛指目标系统存在的各种缺陷。扫描漏洞就是验证目标系统可能存在的缺陷。一旦发现漏洞,就可以有效地对目标主机实施攻击,证明漏洞的危害性。所以,扫描漏洞是实施渗透测试的重要环节。由于漏洞成千上万,验证工作非常枯燥。这时,可以借助一些便捷工具来实施,如NessusOpenVAS。这里将介绍漏洞的概念及扫描漏洞的方式。

一、漏洞概述

漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。例如,Intel Pentium芯片中存在的逻辑错误;ARP协议不检测报文真实性的缺陷;目标管理员在设置匿名FTP服务时,配置不当的问题都可能被攻击者使用,威胁到系统的安全等。本节将介绍常见的漏洞类型。

1.1 人为的不当配置

在实际应用中,系统或者软件需要用户进行各种配置,以满足特定的需求。如果人为的配置不当,就会导致出现漏洞。最常见的漏洞类型包括弱密码和权限设置错误。下面分别介绍下这两种漏洞导致的结果。

1.1.1 .弱密码

密码是身份认证的重要方式,而弱密码泛指各种简单密码和初始密码。这类密码很容易被以密码暴力破解的方式探测出来。例如,在MySQL数据库服务中,如果该服务的管理员用户root配置了弱密码(如toor),就很容易被破解出来。这样,渗透测试者就可以以管理员身份登录MySQL数据库服务,然后查看所有的数据条目。一些比较重要的或敏感数据,则可能会被渗透测试者所窃取。

Kali Linux中提供了一款名为changeme的工具,可以用来扫描目标主机中是否使用了默认的认证。例如,FTP服务是否启用了匿名用户。其中,匿名用户默认用户名为anonymous和ftp,密码为任意。此时,用户可以借助该工具实施扫描,以探测目标主机是否使用了默认密码。如果使用了默认密码,则说明该主机存在弱密码漏洞,渗透测试者可以利用该漏洞实施攻击。

changeme工具的语法格式如下:

changeme -a

以上语法中的选项-a表示扫描所有协议。

使用changeme工具扫描目标是否使用了弱密码。执行命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# changeme -a 192.168.10.54

#####################################################
# _ #
# ___| |__ __ _ _ __ __ _ ___ _ __ ___ ___ #
# / __| '_ \ / _` | '_ \ / _` |/ _ \ '_ ` _ \ / _ \ #
# | (__| | | | (_| | | | | (_| | __/ | | | | | __/ #
# \___|_| |_|\__,_|_| |_|\__, |\___|_| |_| |_|\___| #
# |___/ #
# v1.2.3 #
# Default Credential Scanner by @ztgrace #
#####################################################

Loaded 123 default credential profiles #加载了123个默认认证配置
Loaded 398 default credentials #加载了398个默认认证
[16:00:17] [+] Found ftp default cred anonymous:None at ftp://192.168.10.54:21
[16:00:17] [+] Found ftp default cred ftp:ftp at ftp://192.168.10.54:21
[16:00:24] Found 2 default credentials #找到两个默认认证
Name Username Password Target Evidence
----- ------- -------- ------------- ------------
ftp anonymous ftp://192.168.10.54:21 226 Directory send OK.
ftp ftp ftp ftp://192.168.10.54:21 226 Directory send O

从输出的信息可以看到,找到了两个默认认证。从最后显示的信息可以看到,是FTP服务的默认配置。其中,用户名分别是anonymous和ftp,密码分别是空和ftp。此时,渗透测试者可以利用该弱密码远程登录目标服务器。

1.1.2 权限设置错误

权限机制规定了用户可以做什么,不可以做什么。在一个操作系统中,权限是限制任意用户进行操作的一个重要技术。如果由于人为的不当配置,给予某用户最大的权限,可能导致严重的后果,如删除其他人的文件、修改其他用户的密码等。例如,FTP服务的权限设置比较烦琐。如果管理人员将FTP目录权限配置错误,可能会导致匿名用户删除文件或者恶意上传文件等。

1.2  软件漏洞

软件漏洞通常是软件开发者开发软件时的疏忽,或者是编程语言的局限性所导致的。例如,C语言家族比Java效率高,但容易出现的漏洞也多。而复杂系统包含的功能较多,容易出现漏洞的机率也越大。例如,计算机系统常常需要打各种补丁,用来修复漏洞。下面将列举几个近期有名的软件漏洞。

  • Intel软件漏洞——Remote Keyboard(远程键盘):在该软件中存在3个安全漏洞,会导致权限提升,从而允许攻击者通过网络向本地用户或者键盘会话执行按键注入,或者执行任意代码。

  • str2-045漏洞——基于Jakarta插件的Struts远程代码执行漏洞:这个漏洞属于高危漏洞,它的漏洞编号是CVE-2017-5638。该漏洞主要是由于Struts使用的Jakarta解析文件上传请求包不当造成的。当攻击者使用恶意的Content-Type,会导致远程命令执行。

1.3 硬件漏洞

硬件漏洞通常存在于硬件设备或者芯片中。例如,NVDIA Tegra芯片中的漏洞存在于Tegra芯片中只读的bootrom中;CPU漏洞(Meltdown和Spectre)直接存在于芯片内部,由于指令读取顺序的问题,会导致容易被病毒攻击。

二、使用Nessus扫描漏洞

Nessus是目前常用的系统漏洞扫描与分析软件。该工具提供了完整的漏洞扫描服务,并随时更新其漏洞数据库。而且,Nessus可同时在本机操作或远程控制,进行系统的漏洞分析扫描。

2.1 安装并激活Nessus

在Kali Linux中,默认没有安装Nessus工具。所以,想要使用该工具实施漏洞扫描,则需要先安装。而且,当用户成功安装Nessus工具后,必须激活该服务才可使用。

2.1.1 安装Nessus服务

在Kali Linux中安装Nessus服务。具体操作步骤如下:

  1. 下载Nessus工具安装包。其中,Nessus的官方下载地址为 https://www.tenable.com/downloads/nessus 。当用户在浏览器中成功访问该地址后,将打开Nessus工具的下载页面。

  2. 从该页面可以看到提供的所有Nessus安装包。此时,用户根据自己的操作系统类型和架构,选择对应版本的安装包。本例中将介绍在Kali Linux x64系统中安装Nessus工具,所以这里选择.deb格式,并且是64位架构的包,即Nessus-8.13.0-debian6_amd64.deb包。在该下载页面选择并单击该安装包后,将弹出一个接受许可协议对话框。

  3. 单击I Agree按钮,表示接受许可协议。此时,将开始下载该安装包。接下来,就可以安装Nessus工具了。执行命令如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # dpkg -i Nessus-8.13.0-debian6_amd64.deb                   
    正在选中未选择的软件包 nessus。
    (正在读取数据库 ... 系统当前共安装有 262883 个文件和目录。)
    准备解压 Nessus-8.13.0-debian6_amd64.deb ...
    正在解压 nessus (8.13.0) ...
    正在设置 nessus (8.13.0) ...
    Unpacking Nessus Scanner Core Components...

    - You can start Nessus Scanner by typing /bin/systemctl start nessusd.service
    - Then go to https://localhost:8834/ to configure your scanner

    看到以上的输出信息,表示Nessus软件包安装成功。Nessus默认将被安装在/opt/nessus目录中。从以上输出信息中看到,用户可以在浏览器中输入 https://localhost:8834/ 访问Nessus服务,并进行漏洞扫描。

  4. 启动Nessus服务。安装Nessus服务后,默认是没有被启动的。所以,如果要使用该程序实施扫描,就必须先启动Nessus服务。执行命令如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # systemctl start nessusd
    # systemctl status nessusd
    ● nessusd.service - The Nessus Vulnerability Scanner
    Loaded: loaded (/lib/systemd/system/nessusd.service; disabled; vendor preset: disabled)
    Active: active (running) since Tue 2020-12-15 16:56:18 CST; 3s ago
    Main PID: 8961 (nessus-service)
    Tasks: 12 (limit: 4646)
    Memory: 76.6M
    CGroup: /system.slice/nessusd.service
    ├─8961 /opt/nessus/sbin/nessus-service -q
    ├─8963 nessusd -q
    └─8998 java -version

    看到以上输出信息,表示Nessus服务启动成功。

2.1.2 激活Nessus服务

在使用Nessus之前,必须先激活该服务才可使用。激活Nessus程序需要获取一个激活码。

激活Nessus服务。具体操作步骤如下:

  1. 获取Nessus激活码。其中,获取激活码的地址为 https://www.tenable.com/products/nessus/activation-code 。当用户在浏览器中成功访问该地址后,将显示获取激活码的对话框,如下图所示。

    图片1

  2. 单击Nessus Essentials页面下的Register Now(立即注册)按钮。

  3. 在该对话框中填写获取激活码需要的注册信息,如用户名和邮件地址。填写完成后,单击Register按钮,将在注册的邮箱中收到一份邮件。进入邮箱后,即可看到该邮件中有一个激活码。

  4. 在浏览器中输入地址 https://IP:8834/https://hostname:8834/ 访问Nessus服务。访问成功后,将显示如下图所示的界面。

    图片2

  5. 单击Continue按钮,将显示获取激活码页面,由于前面已经注册了激活码这里选择Skip跳过。

  6. 接下来就来到了输入激活码页面,将邮箱里的激活码复制并粘贴过来,点击Continue,将显示创建账户对话框,如下图所示。

    图片4

  7. 该对话框要求创建一个账号,用于管理Nessus服务。这是因为第一次使用,目前还没有创建任何账号。在该界面创建一个用户账号,并设置密码。然后单击Submit按钮,将显示如下图所示的界面。

    图片5

  8. 从该界面可以看到,正在下载插件。下载完后,将会进行初始化。由于该过程将下载大量的插件文件,所以会需要很长一段时间,用户需耐心等待。当初始化完成后,将显示Nessus的登录界面。

2.2 配置Nessus

使用Nessus实施漏洞扫描之前,需要新建扫描策略和扫描任务。为了后面能顺利地扫描各种漏洞,接下来将介绍新建策略和扫描任务的方法。

2.2.1 新建策略

针对同一类型目标,每次执行的扫描操作都基本相同。为了简化设置操作,Nessus提供了扫描策略。扫描策略规定了扫描中需要执行哪些操作。Nessus提供了多个策略模板。用户可以基于这些模板,创建自己需要的扫描策略。

新建策略。具体操作步骤如下:

  1. 登录Nessus服务。在浏览器地址栏中输入 https://IP:8834/ ,将显示Nessus的登录界面,如下图所示。

    图片6

  2. 在该界面中输入前面创建的用户名和密码,然后单击Sign In按钮,将显示Nessus的主界面,如下图所示。

    图片7

  3. 在左侧栏中选择Policies选项,将显示策略界面,如下图所示。

    图片8

  4. 单击右上角的New Policy按钮,将显示策略模板界面,如下图所示。

    图片9

  5. 在该界面中选择创建策略模板类型。其中,在图标中显示有UPGRADE信息的,表示为家庭版不可以使用。这里单击选择Advanced Scan策略模板,将显示新建策略的设置对话框,如下图所示。

    图片10

  6. 在该对话框中设置策略名称和描述信息(可选项)。这里设置策略名称为Lan Scan。然后单击Plugins标签,将显示漏洞插件选择对话框,如下图所示。

    图片11

  7. 该对话框中显示了所有插件程序,从该对话框可以看到这些插件程序是默认全部是启动的。为了能够扫描到更多的漏洞,建议启用所有的插件。如果有特定的目标系统,可以针对性地选择启用对应的漏洞插件,这样可以节约扫描时间及网络资源。在该对话框中单击右上角的Disable All按钮,即可禁用所有已启动的插件类程序。然后,将需要的插件程序设置为启动,如启动Debian Local Security Checks和Default Unix Accounts插件程序,结果如下图所示。

    图片12

  8. 当用户设置好需要使用的漏洞插件后,单击Save按钮即可看到创建的扫描策略,如下图所示。

    图片13

  9. 从该界面可以看到新建的策略Lan Scan,表示该策略已创建成功。

2.2.2 新建扫描任务

策略创建成功后,必须要新建扫描任务才能实施漏洞扫描。在创建任务时,用户需要选择扫描策略。用户可以选择自己创建的扫描策略,也可以直接使用Nessus自带的扫描策略模板。新建扫描任务的操作过程介绍如下。

  1. 在Nessus的菜单栏中,单击Scans标签,将显示扫描任务界面,如下图所示。

    图片14

  2. 从该界面可以看到当前没有任何扫描任务,所以需要添加扫描任务后才能进行扫描。在该界面单击右上角的New Scan按钮,将显示扫描模板界面,如下图所示。

    图片15

  3. )该界面显示了一些可使用的扫描任务模板。而且,在User Defined标签下面可以看到用户手动创建的策略模板。这里选择使用前面创建的策略来创建扫描任务,单击User Difined标签,将显示用户创建的策略模板,如下图所示。

    图片16

  4. 单击策略模板Lan Scan,将显示新建扫描任务对话框,如下图所示。

    图片17

  5. 在该界面中设置扫描任务名称、描述信息、文件夹及扫描的目标。设置好以上信息后,单击Save按钮,即可看到新建的扫描任务,如下图所示。

    图片18

  6. 从该界面可以看到,新创建了一个名称为Network Scan的扫描任务。

2.3 扫描漏洞

经过前面的操作,Nessus服务就配置好了。下面将实施漏洞扫描。这里使用前面创建的扫描任务实施漏洞扫描。

实施漏洞扫描。具体操作步骤如下:

  1. 打开扫描任务界面,如下图所示。

    图片18

  2. 单击运行按钮,开始对目标主机实施扫描,如下图所示。

    图片19

  3. 从该界面中可以看到扫描任务的状态为(Running),表示正在实施扫描。如果想要停止扫描,可以单击停止(Stop)按钮。如果暂停扫描任务,则单击暂停(Pause)按钮。扫描完成后,将显示如下图所示的界面。

    图片20

  4. 从该界面中可以看到,扫描状态显示为图标√,则表示扫描完成。单击扫描任务的名称Network Scan,即可查看扫描结果,如下图所示。

    图片21

  5. 该界面显示了扫描到的所有主机及主机的漏洞信息。从显示的结果中可以看到,扫描到的主机数为8,漏洞数为99,扫描历史次数为1。从Vulnerabilities列可以看到,以不同颜色显示了不同级别的漏洞及个数。用户将鼠标悬浮到每个颜色上面,还可以看到该漏洞所占的百分比。在右下角以圆形图显示了每种漏洞所占的比例,而且在圆形图右侧显示了每种颜色代表的漏洞安全级别。其中,颜色的安全级别依次是Critical(非常严重,红色)、High(比较严重,橙黄色)、Medidum(中等的,黄色)、Low(中低的,绿色)、Info(信息,蓝色)。接下来,用户可查看并分析每台主机的漏洞信息。

2.4 分析并导出漏洞扫描报告

2.4.1 分析漏洞扫描结果

下面将以2.3节扫描的结果为例,对其漏洞信息进行分析。具体操作步骤如下:

  1. 打开扫描结果界面,如下图所示。

    图片21

  2. 该界面显示了所有目标主机的扫描结果。例如,这里分析主机192.168.10.55的漏洞扫描结果。单击目标主机地址192.168.10.55,将显示漏洞列表界面,如下图所示。

    图片22

  3. 从该界面可以看到,该主机中共有27个漏洞。该漏洞列表包括Sev(严重级别)、Name(插件名称)、Fam:ly(插件族)和Count(漏洞个数)4列。该界面右侧Host Details中显示了目标主机的基本信息,包括IP地址、MAC地址、操作系统类型及扫描所用的时间等。如果想要查看漏洞的详细信息,单击对应的插件名称,即可看到该漏洞的详细信息。例如,查看VNC漏洞的详细信息,将显示如下图所示的界面。

    图片23

  4. 该界面显示了VNC漏洞的描述信息、解决方法、输出信息和开放的端口。在右侧Plugin Details中显示了该漏洞的级别、ID、版本、类型和插件族,而且,还显示了相关的风险信息。通过对该漏洞进行分析可知,该漏洞允许用户连接到远程主机,因为不需要身份验证即可访问此服务。其中,提供的解决方法就是禁用“无身份验证”安全类型。

2.4.2 生成扫描报告

为了方便用户对其他漏洞进行分析,可以将扫描结果导出到一个报告文件中。另外,用户还可以将该扫描报告导入到其他工具(如Metasploit)进行利用。

将扫描结果导出为Nessus格式的报告。具体操作步骤如下:

  1. 在扫描结果界面的菜单栏中单击Export下拉菜单,将显示所有报告格式,如下图所示。

    图片24

  2. 该下拉菜单中显示了所有可以生成漏洞报告的格式。单击Nessus命令,将直接下载生成报告文件。

三、使用OpenVAS扫描漏洞

OpenVAS是开放式漏洞评估系统,现已改名为OpenVAS,也可以说它是一个包含着相关工具的网络扫描器。它的核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题。

3.1 安装及初始化OpenVAS服务

在Kali Linux 2020.4中,默认没有安装OpenVAS服务。所以,想要使用OpenVAS服务实施漏洞扫描,则需要先安装该服务。

服务具体安装步骤请移步另一遍文档:Kali安装GVM 20.08(前OpenVAS)

3.2 登录并配置OpenVAS服务

通过前面的一系列配置后,用户就可以登录OpenVAS服务了。当用户成功登录OpenVAS服务后,还需要做一些简单配置才可以进行漏洞扫描,如新建扫描配置、扫描目标和扫描任务。

3.2.1 登录OpenVAS服务

登录OpenVAS服务器。具体操作步骤如下:

  1. 在浏览器中输入地址, https://IP地址:9392/ (IP地址就是OpenVAS服务的地址),即可访问OpenVAS服务,如下图所示。

    图片25

  2. 在该对话框中输入用户名和密码即可登录该服务。这里的用户名就是前面配置OpenVAS时创建的admin用户和密码。输入用户名和密码后,单击Login按钮,将显示OpenVAS的主界面,如下图所示。

    图片26

看到该界面显示的内容,则表示已成功登录OpenVAS服务。

3.2.2 新建扫描配置

扫描配置就是用来指定扫描目标时所需要的插件。使用OpenVAS工具扫描时,需要通过一个扫描任务来实现。但是,扫描任务是由一个扫描配置和一个目标组成。所以,在实施扫描之前,必须先创建扫描配置和扫描目标。OpenVAS服务默认提供6个扫描配置模板,用户可以直接使用。如果提供的配置模板不符合用户的需要,用户可以自己创建,并指定特定的插件族。

新建扫描配置。具体操作步骤如下:

  1. 在菜单栏中,依次选择Configuration|Scan Configs命令,将打开扫描配置界面,如下图所示。

    图片27

  2. 从该界面可以看到,默认提供了6个扫描配置。在该界面单击新建扫描配置(New Scan Config)按钮,打开新建扫描配置对话框,如下图所示。

    图片28

  3. 在该对话框中设置扫描的名称,这里设置为Lan Scan。在Base选项中选择Empty,static and fast单选按钮,表示允许用户从零开始并创建自己的配置界面。然后,单击Save按钮,保存配置,如下图所示。

    图片29

  4. 从该界面可以看到,成功创建了扫描配置Lan Scan。点击配置右侧i的Edit Scan Config按键,将显示编辑扫描配置界面,如下图所示。

    图片30

  5. 在该界面中可以选择插件族中的特定插件来实施扫描。如果不想要使用某个插件,取消选择Select all NVTs列中的复选框即可。设置完成后单击Save按钮,将显示如下图所示的界面。

    图片31

  6. 从该界面可以看到,成功创建了扫描配置Lan Scan,选择了59个插件族,共64210个插件。

3.2.3 新建扫描目标

当创建好扫描配置后,需要创建扫描目标。扫描目标就是用来指定扫描目标主机的地址、扫描端口及扫描方式。下面将介绍创建扫描目标的方法。

新建扫描目标。具体操作步骤如下:

  1. 在菜单栏中依次选择Configuration|Targets命令,将显示如下图所示的界面。

    图片32

  2. 从该界面可以看到,在默认情况下没有创建任何目标。单击新建目标(New Target)按钮,将打开新建目标的对话框,如下图所示。

    图片33

  3. 在该对话框输入目标名称、主机地址和端口列表等。在指定目标主机地址时,用户可以输入一个网段、单个地址或多个地址,地址之间使用逗号分隔。用户也可以将扫描的目标地址保存在一个文件中,选择From file格式,并选择目标地址的文件。然后单击Create按钮,将显示如下图所示的界面。

    图片34

  4. 从该界面可以看到新建的Lan Scan目标。

3.2.4 新建扫描任务

将扫描配置和目标都创建完成后,即可创建扫描任务,然后对指定的目标实施扫描。下面将介绍创建扫描任务的方法。

为OpenVAS创建任务。具体操作步骤如下:

  1. 在菜单栏中依次选择Scans|Tasks命令,将显示如下图所示的界面。

    图片35

  2. 从该界面中可以看到,目前没有创建任何任务。然单击New Task新建任务按钮,将打开新建任务对话框,如下图所示。

    图片36

  3. 在该对话框中设置任务名称、扫描配置和扫描目标等。这里,将选择使用前面新建的扫描配置和扫描目标,其他选项使用默认设置。然后,单击Create按钮,将可看到新建的扫描任务,如下图所示。

    图片37

3.3 扫描漏洞

通过前面的基本配置,OpenVAS服务就配置好了。接下来,即可开始实施漏洞扫描。下面就以前面创建的扫描任务为例,实施漏洞扫描。

具体操作步骤如下:

  1. 打开扫描任务界面,如下图所示。

    图片37

  2. 单击Actions标签栏中的开始(Start)按钮,将开始漏洞扫描,如下图所示。

    图片38

  3. 从该界面中的Status列可以看到,当前已经扫描到66%。如果用户想要停止扫描,可以单击Actions列中的停止(Stop)按钮。扫描完成后,状态从New变为Done,如下图所示。

    图片39

  4. 从该界面中的Status(状态)列可以看到,状态已显示为Done,表示扫描完成。接下来,即可对扫描结果进行分析,进而从中获取目标主机中的漏洞信息。

3.4 分析并导出漏洞扫描报告

当用户对目标主机实施扫描后,即可从扫描结果中获取其目标主机的漏洞信息。同样,为了方便用户分析其扫描结果,OpenVAS也支持将漏洞信息以不同报告格式导出。

3.4.1 分析漏洞扫描结果

下面将以3.3中的扫描结果为例,对其进行分析。具体操作步骤如下:

  1. 打开扫描结果界面,如下图所示。

    图片39

  2. 从Severity(级别)列中可以看到,目标主机中有部分漏洞,安全级别为6.8(Medium)。单击Status(状态)列中的按钮,然后选择Results,将显示漏洞扫描结果信息,如下图所示。

    图片40

  3. 从该界面可以看到扫描出的所有漏洞结果信息,包括漏洞名称(Vulnerability)、级别(Severity)、存在该漏洞的主机地址(Host)及对应端口(Location)。其中,10.0是最严重的漏洞。OpenVAS服务支持以不同方式对扫描结果进行过滤。

3.4.2 导出漏洞扫描报告

为了方便用户进行分析,用户可以将其漏洞信息以报告的形式导出。OpenVAS支持15种文件格式的报告,如PDF、XML、CXV、HTML和TXT等。

具体操作步骤如下:

  1. 打开Scans|Tasks|Status漏洞扫描列表界面,如下图所示。

    图片41

  2. 从该界面可以看到有一个下载按钮,用来下载报告文件。这里默认选择的是Anonymous XML格式。如果用户想要以其他格式导出,单击切换报告格式文本框中的下拉按钮,即可选择其他格式。这里选择保存为XML格式,然后单击OK按钮,即可将生成对应的报告文件。

    图片42

四、其他发现方式

渗透测试人员不仅可以借助一些工具来扫描漏洞,还可以通过其他发现方式来获取漏洞信息,如检查系统的配置错误,以及从第三方网站查找漏洞等。

4.1 检查Linux配置错误

在Linux系统中,大部分人都习惯使用命令的方式来操作,不像Windows系统的图形界面,操作方便且直观。对于一些大型的服务器来说,管理员往往都是通过远程命令方式来访问并进行维护的。所以,在配置时候可能容易出现错误,例如,文件的权限配置错误、防火墙规则设置不规范等。如果存在这些错误,可能会被恶意黑客者所利用,导致主机被攻击。下面列举几个通过检查配置错误发现漏洞的方法。

  • 是否开启了远程桌面端口。
  • 登录服务的用户是否使用了弱密码。
  • Web服务器是否存在SQL注入漏洞。
  • FTP服务中匿名用户权限的配置。

unix-privesc-check是Kali Linux中自带的一款提权漏洞检测工具。它是一个Shell文件,可以检测所在系统的错误配置,以发现可以用于提权的漏洞。该工具适用于安全审计、渗透测试和系统维护等场景。它可以检测与权限相关的各类文件的读写权限,如认证相关文件、重要配置文件、交换区文件、cron job文件、设备文件、其他用户的家目录,以及正在执行的文件等。如果发现可以利用的漏洞,就会给出提示WARNING。

unix-privesc-check工具的语法格式如下:

unix-privesc-check [standard|detailed]

以上语法中的standard和detailed表示该工具支持的两种模式。这两种模式的含义如下:

standard:标准模式,快速进行检测,并以简洁的方式给出提权漏洞相关的建议。
detailed:详细模式,与标准模式相同,但也检查打开文件的perms句柄和被调用的文件。这种模式很慢,容易出现误报,但可以找出更微小的漏洞。

使用标准模式扫描本地的系统配置。执行命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# unix-privesc-check standard
Assuming the OS is: linux #猜测操作系统
Starting unix-privesc-check v1.4 ( http://pentestmonkey.net/tools/unix-privesc-check )

This script checks file permissions and other settings that could allow
local users to escalate privileges.

Use of this script is only permitted on systems which you have been granted
legal permission to perform a security assessment of. Apart from this
condition the GPL v2 applies.

Search the output below for the word 'WARNING'. If you don't see it then
this script didn't find any problems.


############################################
Recording hostname #主机名记录
############################################
localhost.localdomain

############################################
Recording uname #用户名记录
############################################
Linux localhost.localdomain 5.9.0-kali1-amd64 #1 SMP Debian 5.9.1-1kali2 (2020-10-29) x86_64 GNU/Linux

############################################
Recording Interface IP addresses #接口IP地址记录
############################################
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.75 netmask 255.255.255.0 broadcast 192.168.10.255
ether 52:54:00:7f:d7:ee txqueuelen 1000 (Ethernet)
RX packets 3321970 bytes 3786063027 (3.5 GiB)
RX errors 0 dropped 83598 overruns 0 frame 0
TX packets 2533171 bytes 310757225 (296.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

…//省略部分内容//…

PID: 64 #PID进程
ERROR: Can't find full path of running program:
Owner: root #PID进程
/usr/bin/unix-privesc-check: 1076: [: standard: unexpected operator #程序路径
------------------------
PID: 65
ERROR: Can't find full path of running program:
Owner: root
/usr/bin/unix-privesc-check: 1076: [: standard: unexpected operator
------------------------

以上输出信息是对当前系统配置的检测结果。从显示的结果中可以看到,检测了操作系统类型、主机名、用户名和网络配置等。由于输出的信息较多,中间省略了部分内容。此时,在输出的信息中没有看到WARNING信息,则表示当前系统的配置没有问题。

4.2 查找漏洞信息

当用户知道目标系统类型或者软件版本后,可以手动地去官网获取漏洞信息。很多负责任的公司都会在发现漏洞后发布更新补丁和设备固件。但大部分情况下,维护人员无法第一时间进行修复,从而造成漏洞隐患。

除了到官网查找漏洞,还可以到第三方网站查找漏洞信息。例如,CVE的管理网站和微软漏洞官方网站,可查看各种CVE和微软的漏洞。其中,CVE的管理网站地址为: http://cve.mitre.org/data/refs/refmap/source-MS.html ,微软漏洞官网地址为 https://technet.microsoft.com/en-us/security/bulletins

从CVE网站查找一个漏洞,如SQL Server漏洞。操作如下:

  1. 在浏览器中访问CVE网站 https://www.cvedetails.com/ ,将显示如下图所示的界面。

    图片43

  2. 用户可以使用CVE ID、产品名、厂家、或漏洞类型来查找漏洞。此时,在搜索框中输入SQL Server,并单击Search按钮即可显示搜索结果,如下图所示。

    图片44

  3. 从该界面可以看到,搜索到很多个匹配结果。此时,点击第一个结果,如下图所示。

    图片45

  4. 此时,单击Year列中相应的时间(年)选项,即可查看该漏洞信息,如下图所示。

    图片46

  5. 从该界面可以看到,该漏洞的CVE ID为 CVE-1999-0999;公开日期为1999年11月19日;更新日期为2018年10月12日;允许远程访问。如果想要查看该漏洞的详细信息,单击该漏洞CVE ID即可,如图下所示。

    图片47

-------------本文结束感谢您的阅读-------------