目录
1 自动化扫描注意事项
通常我们用openvas和 nusses 等漏洞扫描器时,它会扫描目标系统的开放端口,并识别运行服务及版本,它不会发送恶意的payload。而 web漏洞扫描器提交参数时,即使扫描策略进行过测试,payload被认为是安全的,但有些数据依然有可能影响到程序的完整性和稳定性。因此,在利用自动化扫描工具时,需要特别小心。
下面将介绍一些在扫描之前需要注意的地方。
实战演练
在自动化扫描之前,需要考虑以下因素:
1.1优先选择测试环境,而不是生产环境。这样如果发生错误,就不会影响到真实的数据
1.2做好恢复机制,在发生问题时可以恢复数据和代码。
1.3定义扫描范围。虽然我们可以针对整个站点启动扫描,但仍然建议定义工具的配置,避免扫 描应用中脆弱或敏感的部分。
1.4熟悉要使用的工具,可以先花些时间在试验靶场里测试一下工具,了解它们的功能以及扫描 可能造成的影响。
1.5保持工具及其模块的更新,使结果与最新的漏洞披露和攻击技术一致。
1.6启动扫描之前确认扫描范围和参数,确保扫描不超出指定范围。
1.7记录全面的扫描过程,大多数工具都自带日志记录和生成报告的功能。
1.8扫描过程中不能无人看管,需要不断检查工作状态,做好造成影响的第一时间反应。
1.9不要依赖单一工具,每个人都有自己喜欢的一款工具,但是需要记住,没有一款工具能覆盖 到所有渗透测试的内容,所以交叉使用工具可以有效避免假阳性和假阴性的概率。
原理剖析
上面我们介绍了扫描中需要注意的关键点,以便在后期渗透测试中避免信息损害和服务中断。
需要采取这些措施的原因是web漏洞扫描器在扫描中偏向扫描整个站点,并使用爬行到的url和参数发起进一步的有效载荷测试,若web应用未对输入进行过滤,这些探测请求的参数可能会永久存在数据库中,这将导致完整性问题,或损害到服务状态。
为了防止这种破坏,我们建议采取一系列措施,重点是准备好测试环境,熟悉工具原理,并保持更新,仔细选择要扫描的内容,并对所有扫描行为进行记录。
2 使用Nikto进行扫描
每个测试人员必备的工具 Nikto,它是世界上使用最广泛的免费扫描仪。正如其官方网站(https:!icirt.net/Nikto2)所述:
“Nikto是一个开放源码(GPL)的 web服务器扫描器,它对web服务器上的多个项目执行全面的测试,包括超过6700个潜在的危险文件/程序,检查超过1250个服务器的过期版本,以及270多个服务器上的特定于版本的问题。它还检查服务器配置项,如是否存在多个索引文件、HTTP服务器选项,并尝试标识已安装的web服务器和软件。扫描项目和插件经常更新比较活跃并且可以自动更新。”
在这个小节中,我们将使用Nikto扫描web应用程序中的漏洞并分析结果。
实战演练
2.1 Nikto是kali linux默认包含的命令行实用程序,我们将用它扫描peruggia漏洞应用程序,打开终端,开始扫描服务器并将结果导出到一个HTML报告文件,该命令为:
# nikto -h http://192.168.107.129/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.
3 使用Wapiti发现漏洞
Wapiti是另一个基于终端的Web漏洞扫描程序,它将GET和POST请求发送到寻找以下漏洞的目标站点( http://wapiti.sourceforge.net/) :
文件纰漏
数据库注入
跨站点脚本(XSs)命令执行检测CRLF注射
XML外部实体(XXE))注入●使用已知的潜在危险文件·可绕过的弱.htaccess配置
存在提供敏感信息的备份文件(源代码公开)
在本文中,我们将使用Wapiti发现我们的一个测试应用程序中的漏洞并生成扫描报告。
实战演练
Wapiti是一个命令行工具,在kali linux中打开终端并确保在开始之前运行靶机
1.在终端中,执行
# wapiti -u http://192.168.107.129/peruggia/ -o wapiti_result -f html -m xss,file,blindsql
使用指定模块扫描靶机中的peruggia应用程序,将输出以html格式保存在wapiti_result目录中。
2.等待扫描完成并打开报告的目录,然后打开index.html文件,接着,你会看到这样的东西:
3.现在,单击CrossSite Scripting以查看结果的详细信息。
4.选择一个漏洞,然后单击http请求,我们将选择第二个并选择复制请求的URL部分
5.现在,我们将该URL粘贴到浏览器中并添加服务器部分
(http://192.168.107.129/peruggia/index.php?action=learn&type=LFI&paper=%2Fetc%2Fpasswd),结果应如下所示:
我们发现确实存在一个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代理。