项目介绍
几乎每个渗透测试项目都必须遵循一个严格的时间表,主要由客户的需求或开发
交付日期决定。对于渗透测试人员来说,拥有一个能够在短时间内对应用程序执行大
量测试的工具是非常有用的,这样可以在计划的时间内识别尽可能多的漏洞。自动漏
洞扫描器成为了最佳选择。它们还可以用来寻找开发替代方案,或者确保在渗透测试
中没有留下明显的东西。
Kali Linux 包含几个针对 web 应用程序或特定 web 应用程序漏洞的漏洞扫描器。
在本章中,将介绍渗透测试人员和安全专业人员最广泛使用的一些工具。
任务 1 自动化扫描注意事项
一、任务描述
通常用
openvas
和
nusses
等漏洞扫描器时,它会扫描目标系统的开放端口,并
识别运行服务及版本,它不会发送恶意的 payload。而 web 漏洞扫描器提交参数时,
即使扫描策略进行过测试, payload 被认为是安全的,但有些数据依然有可能影响
到程序的完整性和稳定性。因此,再利用自动化扫描工具时,需要特别小心。
下面将介绍一些在扫描之前需要注意的地方。
二、任务实现
在自动化扫描之前,需要考虑以下因素:
1
、优先选择测试环境,而不是生产环境。这样如果发生错误,就不会影响到真实的
数据
2
、做好恢复机制,在发生问题时可以恢复数据和代码
3
、定义扫描范围。虽然可以针对整个站点启动扫描,但仍然建议定义工具的配置,
避免扫描应用中脆弱或敏感的部分。
4
、熟悉要使用的工具,可以先花些时间在试验靶场里测试一下工具,了解它们的功
能以及扫描可能造成的影响
5
、保持工具及其模块的更新,使结果与最新的漏洞披露和攻击技术一致
254
6
、启动扫描之前确认扫描范围和参数,确保扫描不超出指定范围
7
、记录全面的扫描过程,大多数工具都自带日志记录和生成报告的功能。
8
、扫描过程中不能无人看管,需要不断检查工作状态,做好造成影响的第一时间反
应
9
、不要依赖单一工具,每个人都有自己喜欢的一款工具,但是需要记住,没有一款
工具能覆盖到所有渗透测试的内容,所以交叉使用工具可以有效避免假阳性和假阴性的概
率
三、相关知识与技能
上面介绍了扫描中需要注意的关键点,以便在后期渗透测试中避免信息损害和服
务中断。
需要采取这些措施的原因是
web
漏洞扫描器在扫描中偏向扫描整个站点,并使
用爬行到的
url
和参数发起进一步的有效载荷测试,若
web
应用未对输入进行过滤,
这些探测请求的参数可能会永久存在数据库中,这将导致完整性问题,或损害到服务
状态。
为了防止这种破坏,建议采取一系列措施,重点是准备好测试环境,熟悉工具原
理,并保持更新,仔细选择要扫描的内容,并对所有扫描行为进行记录。
任务 2 使用 Nikto 进行扫描
一、任务描述
每个测试人员必备的工具
Nikto
,它是世界上使用最广泛的免费扫描仪。正如其
官方网站(https://cirt.net/Nikto2)所述:
“Nikto 是一个开放源码(GPL)的 web 服务器扫描器,它对 web 服务器上的多个
项目执行全面的测试,包括超过 6700 个潜在的危险文件/程序,检查超过 1250 个服
务器的过期版本,以及 270 多个服务器上的特定于版本的问题。它还检查服务器配置
项,如是否存在多个索引文件、HTTP 服务器选项,并尝试标识已安装的 web 服务器
和软件。扫描项目和插件经常更新比较活跃并且可以自动更新。”
在这个小节中,将使用 Nikto 扫描 web 应用程序中的漏洞并分析结果。
二、任务实现
Nikto
是 Kali Linux 默认包含的命令行实用程序,打开终端开始扫描服务器:
1.将扫描 Peruggia 漏洞应用程序,并将结果导出到一个 HTML 报告文件,该命令
为:
nikto -h http://192.168.56.11/peruggia/ -o result.html
。输出是这样的:

-h
选项告诉 Nikto 扫描哪个主机,
-o
选项告诉它在哪里存储输出,文件的扩展
名决定它将采用的格式。在本例中,使用了.html 格式的结果报告。输出也可以是 CSV、
TXT 和 XML 格式。
2.完成扫描需要一些时间。当它完成时,可以打开 result.html 文件:

三、相关知识与技能
在此小节中,使用 Nikto 扫描应用程序并生成 HTML 报告。在这个工具中有更多
的选项用于执行特定的扫描或生成特定的输出格式。其中一些比较有用的是:
⚫
-h :
这是 Nikto 的帮助。
⚫
-config<file> :
在扫描中使用自定义配置文件。
⚫
-update :
这将更新插件数据库。
⚫
-Format<format> :
这定义了输出格式,它可以是 CSV、HTM、NBE (Nessus)、
SQL、TXT 或 XML。当希望将 Nikto 的结果作为其他工具的输入时,CSV、XML
和 NBE 等格式使用的比较多。
⚫
-evasion<technique> :
这使用了一些编码技术来帮助避免 web 应用程序防火
墙和入侵检测系统的检测。
⚫
-list-plugins :
查看可用的插件。
⚫
-port <portnumber> :
如果服务器使用非标准端口(80,443),需要使用该参
数来告诉 Nikto。
pwd 显示当前目录
uname -a(内核版本查看)
rpm -q centos-release(系统版本查看)
cat /proc/cpuinfo |grep "name" (cpu核心查看) // | 后面内容为信息过滤
cat /proc/meminfo |head -4 (查看内存信息)(前4行)
df -h (查看磁盘空间信息)
mkdir dir 在当前目录下创建目录
rmdir dir 删除空目录
touch file 创建文件
vi file 编辑文件
默认状态:命令行模式,可以用/去进行搜索
比如:/what 在命令行模式下,想找what,就去锁定
编辑模式:i
返回命令行模式:esc
保存 :w
退出: q!(不保存退出)
保存后退出:wq!
cat file [|grep “xxx][|head/tail -n] 查看文件内容
|gerp “xxx” 查看包含xxx的行
|head -n 查看前n行
|tail -n 查看后n行
rm -i file 询问删除
rm -f file 强制删除
rm -r dir 递归删除包含文件的目标
注: -i:询问用户是否确认删除,用y或者n来回答。
-r:删除目录时加该选项,删除目录及目录下的文件和目录,可以删除不为空的目录。
-f:强制删除,不用确认
任务 3 使用 Wapiti 发现漏洞
一、任务描述
Wapiti
是另一个基于终端的 Web 漏洞扫描程序,它将 GET 和 POST 请求发送到寻
找以下漏洞的目标站点(http://wapiti.sourceforge.net/):
⚫
文件纰漏
⚫
数据库注入
⚫
跨站点脚本(
XSS
)
⚫
命令执行检测
⚫
CRLF
注射
⚫
XML
外部实体(
XXE
)注入
⚫
使用已知的潜在危险文件
⚫
可绕过的弱
.htaccess
配置
⚫
存在提供敏感信息的备份文件(源代码公开)
在本文中,将使用 Wapiti 发现一个测试应用程序中的漏洞并生成扫描报告。
二、任务实现
Wapiti 是一个命令行工具, 在 Kali Linux 中打开终端并确保在开始之前运行
易受攻击的 VM:
1. 在终端中,执行 wapiti http://192.168.56.11/peruggia/ -o wapiti_result
-f html-m“-blindsql”扫描易受攻击的 VM 中的 Peruggia 应用程序,将输出以 HTML
格式保存在 wapiti_result 目录中,并跳过盲目的 SQL 注入测试。
2. 等待扫描完成并打开报告的目录,然后打开 index.html 文件, 那么,你会
看到这样的东西:

在这里,可以看到 Wapiti 发现了 12 个 XSS 和 5 个文件处理漏洞。
3. 现在,单击 CrossSite Scripting 以查看结果的详细信息。
4. 选择一个漏洞,然后单击 HTTP 请求,将选择第二个并选择并复制请求的 URL
部分

5.现在,将该 URL 粘贴到浏览器中并添加服务器部分(
http://192.168.56.11/peruggia/index.php?action=comment&pic_id=%3E%3C%
2F%3E%3Cscript%3Ealert%28%27wp6dpkajm%27%29%3C /脚本%3E), 结果应如下
所示:

发现确实存在一个
XSS
漏洞。
三、相关知识与技能
跳过了这个配置中的盲 SQL 注入测试(-m“-blindsql”),因为已经知道这个
应用程序很容易受到攻击。 当它达到计算基于时间的注入时,它会引发超时错误,
使 Wapiti 在扫描完成之前关闭,因为 Wapiti 通过注入 sleep()命令多次测试,直
到服务器超过超时阈值。
此外,选择了输出的 HTML 格式(-f html)和 wapiti_result 作为报告的目标目
录, 还可以使用其他格式,例如 JSON,OpenVas,TXT 或 XML。
Wapiti
的其他命令选项包括:
⚫
-x <URL>
:从扫描中排除指定的
URL
, 对注销和密码更改
URL
特别有用。
⚫
-i <file>
:从
XML
文件恢复以前保存的扫描。 文件名是可选的,因为如果省
略,
Wapiti
会从其扫描文件夹中获取文件。
⚫
-a <login
%
password>
:使用指定的凭据对应用程序进行身份验证。
⚫
--auth-method <method>
:定义
-a
选项的身份验证方法,
basic,digest, kerberos,
或
ntlm
。
⚫
-s <URL>
:定义用于开始扫描的
URL
。
⚫
-p <proxy_url>
:使用
HTTP
或
HTTPS
代理。
任务 4使用 Skipfish 检测安全漏洞
一、任务描述
Skipfish
(
https://code.google.com/archive/p/skipfish/
)由谷歌制作,于
2010
年对
外发布。
Skipfish
被描述是一个高效的
Web
应用程序的安全性检测工具,默认安装在
Kali Linux
中,它不仅仅是一款检测工具。它是一款完整的漏洞扫描工具。它有以下
特点:
⚫
高速:它可以达到每秒
400
多个请求,在高速局域网下可以到达每秒
2000
多
个请求
⚫
它的命令行选项简单易用
⚫
它可以检测出各种各样的漏洞问题,从简单的目录遍历和信息泄露到不同类型
的
SQL
注入和
XML
注入
在这小节中,将使用一个简单的例子来教会大家如何使用
Skipfish
并检查其结果。
二、任务实现
Skipfish
被默认安装在了
Kali
中,可以随时使用,将要用它来扫描
Peruggia
:
1.
打卡一个终端并执行以下命令:
skipfish -o skipfish_result -I peruggia http://192.168.56.11/peruggia/
2.
然后将会出现一些带有建议性的信息,敲击
Enter
键或者等待
60S
之后自动
开始
3.
扫描开始,然后将扫描统计信息展示出来。
CTRL+C
可以在任何时候停止它。
扫描时,终端会如下图所示:

4.
当扫描结束后,可以打开报告。在这个例子中,这份报告在运行的
Skipfish
的相对目录下:
skipfish_result/index.html
5.
在
“Issue type overview – click to expand”
部分:可以点击问题的名称,然后可
以准确地看到有效的
URL
地址和攻击载荷,如下图所示:

三、相关知识与技能
Skipfish
将首先通过爬行站点地图并可选地为目录和文件名使用字典来构建站点
地图。然后通过多个安全检查处理此映射。
在这个例子中,使用了
Peruggia
作为漏洞虚拟机。为了防止它扫面整个服务器,
使用了
“-I peruggia”
参数,设定不同的参数,将只会扫描该参数下指定扫描文本。使
用
“-o”
参数将告诉
Skipfish
将报告保存在哪里,设置的目路在扫描运行时必须不能存
在。
Skipfish
的主要缺点是自从
2012
年以来就没有更新过。对于一些新兴的技术它
并不适用于此。
任务 5 使用 WPScan 查找 WordPress 中的漏洞
一、任务描述
WordPress
是世界上最常用的内容管理系统
(CMS)
之一。
CMS
是一种应用程序
(
通
常是
web
应用程序
)
,它允许用户在没有或几乎没有编程知识的情况下轻松创建功能
齐全的网站。
WPScan
是一个专门检测
WordPress
站点漏洞的漏洞扫描器。
在这个小节中,将使用
WPScan
来识别安装在
OWASP BWA
虚拟机中的
WordPress
站点上的脆弱组件。
二、任务实现
WPScan
是一个命令行工具,打开终端开始使用:
1.
使用
WPScan http://192.168.56.11/wordpress/
命令对目标运行
WPScan
,
URL
是想要扫描的
WordPress
站点的位置。
2.
如果这是您第一次运行
WPScan
,它将要求更新数据库,这需要
internet
连接。
在实验设置中,
Kali Linux VM
没有
internet
连接,所以最好先更改其网络设置,更新
使用的工具,并在完成之后将其连接回来。要更新,只需回答
Y
并按回车即可。下
面的截图显示了预期的输出:

3.
更新完成后,
WPScan
将继续扫描目标站点。它会在终端内显示调查结果,例
如,在下面的截图中,可以看到它检测到了
web
服务器和
WordPress
版本,并且该版
本存在一些漏洞:

4.
有了关于现有漏洞的信息,可以跟踪引用并搜索已发布的漏洞,例如,如果
在用户注册表中搜索
CVE-2007-5106
,这是一个
XSS
漏洞,将在
Security Focus
中找
到一个漏洞:
https://www.securityfocus.com/bid/25769/exploit
。
5.
寻找其他漏洞,并尝试利用
WPScan
识别的漏洞。
三、相关知识与技能
WordPress
允许在开发
web
应用程序方面没有经验的用户通过添加插件来创建自
己的站点,这些插件可能是由其他用户创建的,并且不受主
CMS
的质量保证和测试
的约束,这意味着当其中一个插件或模块存在严重的安全缺陷时,成千上万的用户可
能已经在他们的站点上安装了易受攻击的代码,并暴露在可能危及整个服务器的互联
网环境下。
在本文中,使用
WPScan
来识别旧
WordPress
安装中的漏洞。首先更新工具的数
据库,这是在连接到互联网时自动完成的。更新完成后,继续扫描,识别安装的
WordPress
版本、用户和站点使用的插件,有了这些信息,
WPScan
就可以在其数据
库中搜索任何活动组件中的已知漏洞,并在终端中显示结果。扫描完成后,查找信息
并利用这些信息查找问题。对这些漏洞的进一步利用留给读者去做。
任务 6 使用 JoomScan 扫描 Joomla 中的漏洞
一、任务描述
另一个很受欢迎的
CMS
是
Joomala
,和
WordPress
一样,
Joomla
也是基于
PHP
的,它的目的是为了帮助没有技术的用户创建网站,尽管它可能并没有
WordPress
那
么友好,它更适合电子商务网站,而不是博客或者是新闻类的站点。
Kali Linux
中也包括一个漏洞扫描器专门用于查找
Joomla
中的漏洞,它就是
joomScan
。
在本任务中,将使用它来分析
Joomla
站点 使用的虚拟机是
VM_1
。
二、任务实现
和
kali linux
中的很多工具一样,同样是使用命令行来启动它。
1.
首先运行
joomscan -h
查它的使用选项:

2.
现在,根据提示,使用
-u
选项,后面跟上目标
URL
,当然也可以修改请求中
的其他参数,例如
user-agent
或者是
cookie
,使用
joomscan -u http://192.168.56.11/joomla/
269
命令来启动一个简单的扫描任务
3. JoomaScan
会开始扫描并显示结果,如下图所示,结果中给出了
Joomlia
的版
本,漏洞类型、
CVE
编号,以及一些对渗透测试人员非常有用的信息,比如可以利
用的公开漏洞。

4.
当扫描结束时,
joomScan
会显示出存储扫描结果的文件的所在路径,扫描结
果一般存储在
/user/share/joomscan/reports/192.168.56.11/
5.
报告是
HTML
格式的,如下图所示,

三、相关知识与技能
在本任务中,使用
joomscan
来识别漏洞,该工具可以识别
joomla
版本及其启动
的插件,并将这些信息与已知漏洞和漏洞数据库对比,并以
HTML
的格式将最终的
结果存储下来。
任务 7
使用
CMSmap
扫描
Drupal
一、任务描述
另一个流行的 CMS 是
Drupal
,它也是开源的并且基于 PHP,与之前的一样。 虽
然没有那么广泛,但根据其官方网站
(https://www.drupal.org/project/usage/drupal),它拥有相当大的市场份额,
有超过 100 万个网站使用它。
在本文中,将安装适用于 Drupal、WordPress 和 Joomla 的漏洞扫描程序
CMSmap
,
并使用它来识别靶机(蜜罐)中安装的 Drupal 版本中的漏洞,靶机(蜜罐)是实验
室中易受攻击的虚拟机之一。在找到相关的漏洞后,将利用它并在服务器上获得命令
执行。
CMSmap 未安装在 Kali Linux 中,也未包含在其官方软件存储库中; 但是,可以
轻松地从 GitHub 存储库中获取它。 打开终端并运行 git
clonehttps://github.com/Dionach/CMSmap.git; 这会将最新的源代码下载到
CMSmap 目录。由于它是用 Python 制作的,因此无需编译代码,因为它已准备好运行。
要查看用法示例和可用选项,请输入 CMSmap 目录并运行 python cmsmap.py 命令。 此
过程如以下屏幕截图所示:

二、任务实现
一旦准备好运行 CMSmap,启动 VM_1 靶机。在此示例中,它的 IP 地址
192.168.56.12。
1.浏览到 http://192.168.56.12/drupal/以验证是否有正在运行的 Drupal 版本。
结果应如下所示:

2.现在,针对该站点启动扫描程序。 打开终端,转到下载 CMSmap 的目录,然后
运行 python cmsmap.py -thttp://192.168.56.12/drupal 命令。以下屏幕截图显示:

搜索将告诉这是一个 SQL 注入,这个漏洞也被昵称为 Drupageddon。
3.现在,让看看是否有一种简单的方法来利用这个众所周知的缺陷。 打开
Metasploit 的控制台(msfconsole)并搜索 drupageddon; 你应该找到至少一个漏洞,
如下所示:
4.使用 multi/http/drupal_drupageddon 模块并使用通用反向 shell 根据场景设
置选项。 下一个屏幕截图显示了最终设置:


3.总结
在本文中,首先使用带有
clone
命令的
git
命令行客户端从其
GitHub
源代码存储
库下载
CMSmap
,该命令生成指定存储库的本地副本。安装
CMSmap
后,检查它已
准备好执行并查看使用选项,然后针对目标运行它。
在结果中,看到了一个被扫描程序评为高影响的漏洞,并在线查看有关它的信息,
发现它是一个带有多个公开可用漏洞的
SQL
注入。
该漏洞在
Drupal
的安全公告
SA-CORE-2014-005
中公开
https://www.drupal.org/forum/newsletters/security-advisories-for-drupal-core/2014-10-15
/sa-core-2014-005-Drupal-core-SQL
)。据此,它是一个
SQL
注入漏洞,可用于获取
权限提升,
PHP
执行,以及在示例中看到的,在受影响的主机上执行命令。
选择在
Metasploit
中查找现有漏洞。使用的漏洞有两种实现远程
shell
的方法:
在第一种方法中,它使用
SQLi
将恶意内容上传到
Drupal
的缓存并触发该缓存条目以
执行
payload
。这是漏洞使用的选项,因为没有更改
TARGET
参数(从
0
到
1
)。在
第二种方法中,它将在
Drupal
中创建一个管理员用户,并使用该用户上载要执行的
服务器的
PHP
代码。
最后,在服务器上获得了一个有限的 shell,可以执行非交互式的命令和检索信
息。