几乎每一个渗透测试项目都须要遵循严格的日程,多数由客户的需求或开发交谈日期决定。对于渗透测试者,拥有一种工具,它能够在很短的时间内执行单个应用上的多个测试,来尽量在排期内识别最多漏洞颇有帮助。自动化漏洞扫描器就是完成这种任务的工具,它们也用于发现替代的利用,或者确保渗透测试中不会遗漏了明显的事情。php
Kali 包含一些针对 Web 应用或特定 Web 漏洞的漏洞扫描器。这一章中,咱们会涉及到一些在渗透测试者和安全研究员中最普遍使用工具。html
每一个测试者的工具库中一定含有的工具就是 Nikto,它多是世界上使用最普遍的自由扫描器。就像它的网站(https://cirt.net/Nikto2)上所说的那样:web
Nikto 是开源(GPL)的 Web 服务器扫描器,它对 Web 服务器执行综合扫描,包含超过 6700 个潜在的危险文件或程序,检查超过 1250 个服务器的过时版本,以及超过 270 个服务器上的特定问题。它也会检查服务器配置项,例如多个首页文件的存在,HTTP 服务器选项,也会尝试识别安装的 Web 服务器和软件。扫描的项目和插件也会常常更新,并能够自动更新。正则表达式
这个秘籍中,咱们会使用 Nikto 来搜索 Web 服务器中的漏洞并分析结果、sql
Nikto 是个命令行工具,因此咱们打开终端。数据库
咱们会扫描 Peruggia 漏洞应用,并导出结果到 HTML 报告:api
nikto -h http://192.168.56.102/peruggia/ -o result.html
-h
选项告诉 Nikto 扫描哪一个主机,-o
选项告诉在哪里存放输出,文件的扩展名决定了接受的格式。这里,咱们使用.html
来得到 HTML 格式的结果报告。输出也能够以 CSV、TXT 或 XML 格式。浏览器
它须要一些时间来完成扫描。完成以后,我么能够打开result.html
文件:安全
这个秘籍中,咱们使用 Nikto 来扫描应用并生成 HTML 报告。这个工具拥有一些更多的选项,用于执行特定扫描或生成特定输出格式。一些最实用的选项是:ruby
-H
:这会显示 Nikto 的帮助。
-config <file>
:在扫描中用自定义的配置文件。
-update
:更新插件数据库。
-Format <format>
:这定义了输出格式,能够为CSV、HTML、NBE(Nessus)、SQL、TXT 或 XML。例如 CSV、XML 和 NBE 的格式在咱们打算将其用于其它工具的输入时很是实用。
-evasion <techique>
:这使用一些编码技巧来帮助避免 Web 应用防火墙和入侵检测系统的检测。
-list-plugins
:查看可用的测试插件。
-Plugins <plugins>
:选择在扫描中使用哪一个插件(默认为所有)。
-port <port number>
:若是服务器使用非标准端口(80,443),咱们可能会以这个选项来使用 Nikto。
Wapiti 是另外一个基于终端的 Web 漏洞扫描器,它发送 GET 和 POST 请求给目标站点,来寻找下列漏洞(
咱们能够从终端窗口打开 Wapiti,例如:
wapiti http://192.168.56.102/peruggia/ -o wapiti_result -f html -m "-blindsql"
咱们会扫描 vulnerable_vm 中的 Peruggia 应用,将输出保存为 HTML 格式,保存到wapiti_result
目录中,并跳过 SQL 盲注检测。
若是咱们打开了报告目录,和index.html
文件,咱们会看到一些这样的东西:
这里,咱们能够看到 Wapiti 发现了 12 个 XSS 和 20 个文件处理漏洞。
如今点击Cross Site Scripting
(跨站脚本)。
选项某个漏洞并点击HTTP Request
。咱们选择第二个,选中并复制请求的 URL 部分。
如今,咱们将 URL 粘贴到浏览器中,像这样:http://192.168.56.102/ peruggia/index.php?action=comment&pic_id=%3E%3C%2Fform%3E%3Cscr ipt%3Ealert%28%27wxs0lvms89%27%29%3C%2Fscript%3E
。
咱们确实发现了 XSS 漏洞。
这个秘籍中,咱们跳过了 SQL 盲注检测(-m "-blindsql"
),由于这个应用存在这个漏洞。它会触发超时错误,使 Wapiti 在扫描完成以前关闭,由于 Wapiti 经过输入 sleep()
命令来测试屡次,直到服务器超过了超时门槛。同时,咱们为输出选择了 HTML 格式(-o html
),wapiti_result
做为报告的目标目录,咱们也能够选择其余格式,例如,JSON、OpenVAS、TXT 或 XML。
Wapiti 拥有一些其它的有趣的选项,它们是:
-x <URL>
:从扫描中排除特定的 URL,对于登出和密码修改 URL 很实用。
-i <file>
:从 XML 文件中恢复以前保存的扫描。文件名称是可选的,由于若是忽略的话 Wapiti 从scan
文件夹中读取文件。
-a <login%password>
:为 HTTP 登陆使用特定的证书。
--auth-method <method>
:为-a
选项定义受权方式,能够为basic
,digest
,kerberos
或 ntlm
。
-s <URL>
:定义要扫描的 URL。
-p <proxy_url>
:使用 HTTP 或 HTTPS 代理。
OWASP ZAP 是咱们已经在这本书中使用过的工具,用于不一样的任务,而且在它的众多特性中,包含了自动化的漏洞扫描器。它的使用和报告生成会在这个秘籍中涉及。
在咱们使用 OWASP ZAP 成功执行漏洞扫描以前,咱们须要爬取站点:
打开 OWASP ZAP 并配置浏览器将其用做代理。
访问 192.168.56.102/peruggia/
。
遵循第三章“使用 ZAP 的蜘蛛”中的指南。
访问 OWASP ZAP 的Sites
面板,并右击peruggia
文件夹。
访问菜单中的Attack | Active Scan
。
新的窗口会弹出。这里,咱们知道咱们的应用和服务器使用哪一种技术,因此,访问Technology
标签页,并只勾选MySQL
、PostgreSQL
和Linux
,以及Apache
。
这里咱们能够配置咱们的扫描器的Scope
(从哪里开始扫描、在什么上下文中,以及其它)、Input Vectors
(选项是否你打算测试 GET 和 POST 请求、协议头、Cookie和其它选项)、Custom Vectors
(向原始请求中添加特定的字符或单词做为攻击向量)、Technology
(要执行什么技术特定的测试)、以及Policy
(为特定测试选项配置参数)。
点击Start Scan
。
Active Scan
标签页会出如今面板顶部,而且全部请求都会出如今那里。当扫描完成时,咱们能够在ALerts
标签页中检查结果。
若是咱们选项某个警告,咱们能够查看生成的请求,以及从服务器得到的响应。这容许咱们分析攻击并判断是不是真正的漏洞,或者是误报。咱们也可使用这个信息来模糊测试,在浏览器中重放这个请求,或者深刻挖掘以利用。为了生成 HTML 报告,就像前一个工具那样,在主菜单中访问Report
以后选择Generate HTML Report....
。
新的对话框会询问文件名和位置。例如,设置zap_result. html
而且在完成时打开文件:
OWASP ZAP 可以执行主动和被动漏洞扫描。被动扫描是 OWASP ZAP 在咱们浏览过、发送数据和点击连接程中进行的非入侵测试。主动测试涉及对每一个表单变量或请求值使用多种攻击字符串,以便检测服务器的响应是否带有咱们叫作“脆弱行为”的东西。
OWASP ZAP 使用多种技术生成测试字串,它对于首次识别目标所使用的技术很是实用,以便优化咱们的扫描并减小被检测到或致使服务崩溃的可能。
这个工具的另外一个有趣特性是,咱们能够产生于漏洞检测中的请求,并且它的相应响应在检测的时候会位于相同学口中。这容许咱们快读判断它是真正的漏洞仍是误报,以及是否要开发咱们的漏洞证实(POC)仍是开始利用。
咱们已经谈论到 Burp Suite。Kali 只包含了免费版本,它没有主动和被动扫描特性。强烈推荐你得到 Burp Suite 的专业版许可证,由于它拥有实用特性和免费版之上的改进,例如主动和被动漏洞扫描。
被动漏洞扫描在咱们使用 Burp Suite 做为浏览器的代理,并浏览网页时发生。Burp 会分析全部请求和响应,同时查找对应已知漏洞的模式。
在主动扫描中,Burp 会发送特定的请求给服务器并检查响应来查看是否对应一些漏洞模式。这些请求是特殊构造的,用于触发带有漏洞的应用的特定行为。
w3af 支持应用审计和攻击框架。它是开源的,基于 Python 的 Web 漏洞扫描器。它拥有 GUI 和命令行界面,都带有相同的功能。这个秘籍中,咱们会使用 w3af 的 GUI 配置扫描和报告选项来执行扫描。
为了启动 w3af 咱们能够从应用菜单栏选择它,经过浏览Applications | 03 Web Application Analysis | w3af
,或者从终端中:
w3af_gui
在Profiles
部分中,咱们选择full_audit
。
在插件部分中,访问crawl
并选择web_spider
(已经选择的项目)。
咱们不打算让扫描器测试全部服务器,而是咱们让它测试应用。在插件部分中,选中only_forward
选项并点击Save
。
如今,咱们会告诉 w3af 在完成时生成 HTML 报告。访问output
插件并选中html_file
。
为了选择文件名称和保存报告的位置,修改output_file
选项。这里咱们会指定根目录下的w3af_report.html
,点击Save
。
如今在Target
文本框中,输入打算测试的 URL,这里是http://192.168.56.102/WackoPicko/
,并点击Start
。
日志标签页会得到焦点,咱们可以看到扫描的进程。咱们须要等待它完成。
完成以后,切换到Results
标签页,像这样:
为了查看详细的报告,在浏览器中打开w3af_report.html
HTML 文件。
w3af 使用配置文件来简化为扫描选择插件的任务,例如,咱们能够定义只含有 SQL 注入的配置文件,它测试应用的 SQL 注入,不干其余的事情。full_audit
配置使用一些插件,它们执行爬虫测试、提取能够用做密码的单词列表、测试大多数相关的 Web 漏洞,例如 XSS、SQLi、文件包含、目录遍历以及其它。咱们修改了web_spider
插件来前向爬取,以便咱们能够专一于打算测试的应用,避免扫描到其它应用。咱们也修改了输出插件来生成 HTML 报告,而不是控制台输出和文本文件。
w3af 也拥有一些工具,例如拦截代理、模糊测试器、文本编解码器、以及请求导出器,它能够将原始的请求转换为多种语言的源代码。
w3af 的 GUI 有时会不稳定。在它崩溃以及不能完成扫描的状况下,它的命令行界面能够提供相同的功能。例如,为了执行咱们刚才执行的相同扫描,咱们须要在终端中作下列事情:
w3af_console
profiles
use full_audit back plugins output config html_file set output_file /root/w3af_report.html save back crawl config web_spider set only_forward True save back back target set target http://192.168.56.102/WackoPicko/ save back start
Vega 是由加拿大公司 Subgraph 制做的 Web 漏洞扫描器,做为开源工具分发。除了是扫描器以外,它也能够用做拦截代理,以及在咱们浏览器目标站点时扫描。
这个秘籍中,咱们会使用 Vega 来发现 Web 漏洞。
从应用菜单中选择它,访问Applications | Kali Linux | Web Applications | Web Vulnerability Scanners | vega
,或者经过终端来打开 Vega:
vega
点击“开始新扫描“按钮。
新的对话框会弹出。在标为Enter a base URI for scan
的输入框中,输入http://192.168.56.102/WackoPicko
来扫描应用。
点击Next
。这里咱们能够选择在应用上运行那个模块。让咱们保持默认。
点击Finish
来开始扫描。
当扫描完成时,咱们能够经过访问左边的Scan Alerts
树来检查结果。漏洞详情会在右边的面板中展现,像这样:
Vega 的工做方式是首先爬取咱们指定为目标的 URL,识别表单和其它可能的数据输入,例如 Cookie 或请求头。一旦找到了它们,Vega 尝试不一样的输入,经过分析响应并将它们与已知漏洞模式匹配来识别漏洞。
在 Vega 中,咱们能够扫描单个站点或范围内的一组站点。咱们能够经过选择在扫描中使用的模块,来选择要进行哪一种测试。一样,咱们可使用身份(预保存的用户/密码组合)或者会话 Cookie来为站点认证,而且从测试中排除一些参数。
做为重要的缺陷,它并无报告生成或数据导出特性。因此咱们须要在 Vega GUI 中查看全部的漏洞描述和详情。
Wmap 自己并非漏洞扫描器,他是个 Metasploit 模块,使用全部框架中的 Web 漏洞和服务器相关的模块,并使它们协调加载和对目标服务器执行。它的结果并不会导出为报告,可是会做为 Metasploit 数据库中的条目。
这个秘籍中,咱们会使用 Wmap 来寻找 vulnerable_vm 中的漏洞,并使用 Metasploit 命令行工具来检查结果。
在咱们运行 Metasploit 的控制台以前,咱们须要启动 所链接的数据库服务器,以便保存咱们生成的结果:
service postgresql start
启动终端并运行 Metasploit 控制台:
msfconsole
加载完成后,加载 Wmap 模块:
load wmap
如今,咱们向 Wamp 中添加站点:
wmap_sites -a http://192.168.56.102/WackoPicko/
若是咱们打算查看注册的站点:
wmap_sites -l
如今咱们将这个站点设为扫描目标:
wmap_targets -d 0
若是咱们打算插件所选目标,咱们可使用:
wmap_targets -l
如今,咱们执行测试:
wmap_run -e
咱们须要使用 Metasploit 的命令来检查记录的漏洞:
vulns wmap_vulns
Wmap 使用 Metasploit 的模块来扫描目标应用和服务器上的漏洞。它从 Metasploit 的数据库和模块中获取站点信息,并将结果发送到数据库中。这个集成的一个很是实用的层面是,若是咱们执行多个服务器上的渗透测试,而且在测试中使用 Metasploit,Wmap 会自动得到全部 Web 服务器的 IP 地址,和已知 URL,并将它们集成为站点,以便当咱们打算执行 Web 评估时,咱们只须要从站点列表中选择目标。
在执行wmap_run
的时候,咱们能够选择要执行哪一个模块。经过-m
选项和正则表达式。例如,下面的命令行会开启全部模块,除了包含dos
的模块,这意味着没有拒绝服务测试:
wmap_run -m ^((?!dos).)*$
另外一个实用的选项是-p
。它容许咱们经过正则表达式选择咱们打算测试的路径,例如,在下一个命令中,咱们会检查全部包含单词login
的 URL。
wmap_run -p ^.*(login).*$
最后,若是咱们打算导出咱们的扫描结果,咱们老是可使用 Metasploit 的数据库特性。例如,在 MSF 控制台中使用下列命令来将整个数据库导出为 XML 文件。
db_export -f xml /root/database.xml