• 前言:

取得授权:漏扫已经是实质的攻击行为,请务必确保你的扫描动作是经过授权的,尤其不要尝试在非授权的情况下在互联网上扫描政府类网站。
测试备份:漏扫可能会对目标系统造成数据破坏或Dos攻击,造成数据篡改、丢失(完整性)或者业务中断(可用性)。请尽量对测试环境进行测试,如果是正式环境,请在扫描前先备份数据。
木桶原理:漏扫并不能发现所有的漏洞,不要认为做完漏扫就是安全的了。有时你大费周章的修复了N个漏洞,最后却因为一个admin/123456的问题前功尽弃。亦或是你对99个系统进行了漏洞修复,却因为1个某个角落里你未识别出来的系统影响了全局。

  • 1、漏扫基本概念:
  • 1.1什么是漏洞扫描

漏洞扫描是信息安全工作里,完成风险评估最常见的一种手段。就像是医生用X光来检查一下病人的身体,是不是有毛病一样,安全工作者经常通过漏洞扫描来评估目标系统是否存在漏洞,进而决策如何做下一步的安全防护。

  • 1.2漏洞扫描的原理是什么

发送特定的请求,到远程服务,根据远程服务返回的行为,判断是否存在某个具体漏洞(也有很多时候是根据返回的版本号信息来判断)。

  • 2、漏扫分类:
  • 2.1主机漏扫

主要工具:天镜(启明星辰)、NESSUS、绿盟极光
针对目标:主机(IP地址、域名),扫的是主机对外开放的某个服务(端口),一个漏洞一定会对应一个端口。
漏洞类型:操作系统漏洞、WEB服务器漏洞、中间件漏洞、数据库等漏洞(如:ms17-010、CVE-2019-0708、CVE-2018-2893等)

  • 2.2 WEB漏扫

主要工具:AWVS、APPCSAN
针对目标:WEB应用(URL)
漏洞类型:WEB漏洞(如:SQL注入、跨站脚本、命令注入等)

  • 2.3 其它,如数据库漏扫,源码扫描等
  • 3、扫描器使用:
  • 3.1 天镜
  • 3.1.1 安装

天镜是启明星辰的商业扫描器,有虚拟机版本,需要授权。直接导入虚拟机即可。

  • 3.1.2 配置

常用配置:

漏洞扫描任务—新建—填写URL—选择策略—执行

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_服务器


更多选项

1)主机存活探测:用于判断主机是否在线,默认是“常规探测”,推荐“深度探测”,如果你知道目标主机开放着某个端口,也可以在“增加自定义端口探测”中添加,以增加扫描速度与主机存活与否的准确性。

2)端口扫描:主要作用是主机开放了哪些端口,范围越大越准确,但是速度越慢。默认是“标准端口扫描”,也可以指定端口扫描,如1-65535表示全端口,或者添加你知道的目标主机开放的端口;端口扫描方式:默认(推荐)选择SYN。进行UDP扫描不推荐,UDP扫描既不准确速度也慢。即使不勾选,一些默认的UDP端口如SNMP(161)也是会扫描的。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_端口扫描_02


3)性能参数:视具体的扫描服务器的配置而定

4)口令猜测:作用是是否对一些常见的服务进行暴力破解,以判断是否存在弱密码。会触发IPS、防火墙。推荐全部勾选。密码本在“口令字段策略”里。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_漏洞扫描_03


5)应用到默认配置:上面的配置结束后,点击“应用到默认配置”则下次每次启动扫描都会按照这个配置进行,否则只在本次扫描中使用,下次还是系统默认配置。

  • 3.1.3 生成报告
    漏洞扫描任务—已完成—查看报表—生成报表
  • 3.2 Nessus
  • 3.2.1 安装

HOME版安装:
注:HOME版仅能扫16个IP地址
下载地址:https://www.tenable.com/downloads/nessus

# dpkg -i Nessus-8.0.1-debian6_amd64.deb	#安装
	# /etc/init.d/nessusd start	#启动
	https://kali:8834/	#WEB接口
	修改IP:
		# vim /etc/netplan/50-cloud-init.yaml 
		配置如下:
		network:
			ethernets:
				enp4s0:
					addresses: [192.168.0.20/24]  //IP址
					gateway4: 192.168.0.1  // 网关
					nameservers:
					 addresses: [114.114.114.114, 192.168.0.1] //DNS
					dhcp4: no
					optional: no
			version: 2
		# netplan apply
	更新插件:
		1、 关闭nessus服务 ,命令:/etc/init.d/nessusd stop
		2、获取挑战码,命令/opt/nessus/sbin/nessuscli fetch --challenge
			挑战码示例: Challenge code: e30adc174d20382a427ddc4f4d42efef11f2bb66
		3、获取Active code,
			•••••登录网址http://www.tenable.com/products/nessus-home,输入邮箱信息获取获取Active code,
			•••••Active code示例:4955-491C-9238-F1B7-9981
			【名字随便填,邮箱可多次使用,但一个小时内只能接受一次验证码】
		4、登录https://plugins.nessus.org/offline.php,输入Challenge code和Active code
		5、下载all-2.0.tar.gz与nessus.license文件【虚拟机版无需nessus.license】
		6、下载好后,终端运行命令:【命名不分先后】
			/opt/nessus/sbin/nessuscli update /root/all-2.0.tar.gz
			/opt/nessus/sbin/nessuscli fecth --register-offline nessus.license
		7、重启服务,命令:/etc/init.d/nessusd restart

其它版本安装参考:

  • 3.2.2 配置

Scans—Policies—New Policy

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_端口扫描_04


选择一个模板—进阶扫描(如果你要全扫描,就选这个模板)

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_端口扫描_05


基本:填写你要新建的策略的名称,如:FULL-SCAN及描述

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_服务器_06


发现:HOST DISCOVERY类似于天镜的“主机存活探测”功能;Port Scanning类似于天镜的“端口扫描”功能;SERVICE DISCOVERY类似于天镜“端口扫描”中的“智能服务识别”。

评定:一般保持默认或视自己的具体情况而定;BRUTE FORCE类似于天镜的“口令猜测”,只是这里的爆破使用的是大名鼎鼎的Hydra,并且用户名和密码字典都需要自己上传。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_服务器_07


其它选项保持默认。

插件:是用来探测漏洞的,一个插件探测一种分类的漏洞,根据具体的需求进行开启或关闭,如果你希望扫描所有漏洞,则保持默认全部开启即可。这也是为什么我们在选择策略模板的时候要选择“Advanced Scan”,这个模板的插件选项卡里面包含所有插件。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_漏洞扫描_08


配置完成后,点击“Save”即可保持模板。供后面的扫描使用。

  • 3.2.3 扫描

My Scans或者All Scans—New Scan—User Definde—选择创建好的策略模板(如:FULL-SCAN)—填写好相关信息后点“Save”

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_服务器_09


然后返回到My Scan,选择对应的任务,点击启动,开始扫描任务。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_端口扫描_10

  • 3.2.4 报告导出

My Scans—选择已经扫描完成的任务—右上角Export—选择报表的格式(推荐HTML)

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_服务器_11

  • 3.3 APPSCAN
  • 3.3.1 安装

APPSCAN原来是IBM的产品,在2019年被HCL公司收购。是商业扫描器,需要授权,仅支持Windows环境。
下载地址: https://pan.baidu.com/s/1srOXRi1ugsHZO5cwM9_EBg 提取码:bxb2
其它文件:百度自行下载

  • 3.3.2 配置

3.3.2.1:URL和服务器

从该URL启动扫描:即WEB应用系统的URL(入口)。

仅扫描此目录中或目录下的链接:勾选则它只会扫描你输入URL的最后目录下的文件。不勾选则会从/开始扫描。

其它服务器和域:是指应用程序中是否有功能是在其它服务器和域上的。如果你知道可以填写。如果不知道可以通过手动爬网告诉扫描器。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_安全_12


3.3.2.2:登录管理

无登录扫描:如果你是做无登录扫描,直接勾选“无”。

登录扫描

记录:当登录接口没有验证码时,通常使用这种方式记录登录序列,则程序会在每次需要登录时自动进行登录。

提示:当登录接口有验证码是,扫描器无法实现自动登录,此时选择此项。扫描器会在每次需要登录时自动弹出登录菜单,让你人工进行登录。

点击“记录” 或“提示”(选择浏览器)—输出测试账号密码并进行登录操作—成功登录后点击“我已登录到站点”

扫描器会自动记录登录序列(用于自动登录),识别会话模式(用于判断当前是否还在会话中)。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_安全_13


审查和验证:有时扫描器不一定能识别出会话模式,此时我们就可以在此选项卡中手动添加。如图,简单解释就是,“http://192.168.8.21/dvwa/index.php”这个页面是需要登录后(会话中)才可以访问的。如果你在请求这个页面时,服务器返回的数据中包含“Logout”字符,那么表示当前还在登录状态下(会话中)。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_端口扫描_14


高级:主要用于配置注销页面,避免扫描器在测试时请求了注销页面导致登录状态失效。是用正则来匹配的,如果你的注销页面不在这个正则范围内,可以手动添加。如:假如你的注销页面是“http://192.168.8.21/zhuxiao.php”,那么你可以将.*zhuxiao.*在正则中添加。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_漏洞扫描_15


3.3.2.3:通讯和代理:

这里视具体的网络情况和应用服务器的承受能力而配置,通常情况下建议线程数配置在4以下,以免扫挂服务器。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_安全_16


3.3.2.4:测试策略:保持缺省值吧。如果你有自定义需求,也可以灵活选择。

3.3.2.5:特权升级:这是APPSCAN很有特色的一个功能,用它可能会发现一些越权的漏洞。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_服务器_17

  • 3.3.3 启动扫描

以上配置完成后,点击“扫描”—选择“完全扫描”—扫描器弹出保存扫描文件对话框—选择文件保存路径—输入文件名称—即正式开始扫描

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_漏洞扫描_18

  • 3.3.4 报告导出

扫描结束后点击“报告”—最低严重性推荐选择“中”,(表示只显示中危及以上的漏洞,避免报告过于臃肿)—报告内容推荐勾选“变体”、“请求与响应”、“差异”、“咨询和修订建议”—保存报告。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_服务器_19

  • 3.4 AWVS
  • 3.4.1:安装
    下载地址:https://pan.baidu.com/s/1EIOyiVR-IUMzRn0hbBHvHg 提取码:axkz
# apt-get install libxdamage1 libgtk-3-0 libasound2 libnss3 libxss1 -y
# ./acunetix_trial.sh
# cp /lee/softwave/patch_awvs /home/acunetix/.acunetix_trial/v_190325161/scanner
# ./patch_awvs
访问:https://your-ip:3443/
  • 3.4.2:配置&扫描

Targets—Add Target—在Address中填写你要扫描的URL—Save

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_服务器_20


无登录扫描:直接保持默认—Scan,即开始扫描。

登录扫描:Site Login—Use pre-recorded login sequence—New—执行登录动作—Next进入注销页面排除选项—点击注销链接—选择“Restrict request using exact match”—Next进入会话模式检测页面(扫描器会自动检测会话模式,如果检测不到也可以手动添加模式,原理跟APPSAN一样)—Scan,即启动扫描。

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_端口扫描_21


Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_漏洞扫描_22


Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_安全_23

  • 3.4.3:报告导出

Scans—选择要导出报告的任务—Generate Report—Developer(推荐)—进入下载页面(推荐下载HTML格式方便在线翻译)

Nessus漏洞扫描器 docker镜像使用 漏洞扫描器原理_漏洞扫描_24