我们对目标网站进行了足够的信息收集之后,我们就要进行主动扫描,从而获得更多信息,而web上的扫描工具一般支持两种模式。
- 代理截断模式
- 直接扫描模式
手动扫描
基本上有一个浏览器就够了,人工去点击目标的每一个页面,去提交表单。
自动扫面
基于字典的对其中存在的页面去爬取。
扫描工具只是为了我们更好的渗透测试
Web Penetration Testing with Kali Linux
对于初学者来说,是一本不错的工具书。缺点是设计方面比较广泛,所以每项内容不是很详细。其中一些工具在kali 2.0中也已经移除。
Nikto
是Perl语言开发的开源web安全扫描器,有些扫描器只会扫描网络层和操作系统层的漏洞,大部分web扫描器不会包含这些功能,他们的重点是web应用程序代码的扫描。
- 这个工具会扫描web服务器使用的软件版本,并比较可能有哪些漏洞
- 会搜索存在安全隐患文件,比如有些安全员的将网络备份的压缩文件放在web目录下,这样通过扫描器就可以扫描,并得到这个文件,进行代码审计,带来更大的危险。
- 还会扫描服务器配置漏洞。
- 常见的WEB Application层面的安全隐患也会检查,例如sql注入和xss。
- 所有的扫描器的主要任务首先是找到所有页面,早期都是通过访问返回信息来判断的,有很多服务器不遵循RFC标准,有些页面不存在也可能会返回200响应码,扫描器就会误判,后来扫描器就开始判断文件内容,通过关键字判断页面是否存在,这样其实还是存在弊端,一方面是无法将所有关键字概括全面,另一方面是不同后缀名的文件返回信息不同,比如html与jsp,所以也不好判断,而nikto会将提前所有可能存在的扩展名进行数据库存储,然后以随机文件名去提交从而判断返回信息,去除时间信息后的内容取MD5值。
- -no404 这个命令就不会进行上述尝试,而是直接对服务器去请求判断。准确性有所下降,但是速度会有所提升。
使用
我们在终端中直接输入
nikto
会将主要的参数进行显示,如果我们想看到更多的参数和帮助信息,我们可以使用:
man nikto
升级数据库及插件
nikto -update
这个命令会使nikto从cirt.net升级它的数据库及插件。建议大家使用前进行升级。但是受国内运营商的限制,大部分无法进行升级。会提示:
ERROR (302): Unable to get cirt.net/nikto/UPDATES/2.1.6/versions.txt
我们可以通过:
https://cirt.net/nikto/UPDATES/
去下载最新及历史版本进行使用
查看所有插件
我们可以使用
nikto -list-plugins
查看插件类型
其中要提及的是shellshock这是一个破壳漏洞,也可以用nikto去扫描。
基本扫描命令
nikto -host 目标
我们这里用靶机进行演示:
nikto -host 192.168.238.136
这里我们可以看到已经开始扫描了,当然一般我们使用的时候有两种方式进行扫描:
URL方式
nikto -host http://192.168.238.136/dvwa/
这里我们就可以对dvwa这个确定的目录进行扫描
IP+端口形式
nikto -host 192.168.238.136 -port 80,443
可以跟多个端口,之间用都好隔开。
https
它还可以对ssl,也就是https进行扫描,同样可以用上述两种方式进行扫描。
nikto -host www.baidu.com -port 443 -ssl
默认是443端口
我们可以看到端口,域名,IP,证书,以及证书加密方式和颁发者信息。
同时扫描多个目标
我们可以将多个目标写到一个txt文本中,进行扫描。
nikto -host host.txt
文本格式:
192.168.1.1:80
https://192.168.1.1:8443
192.168.1.1
默认是80端口
与nmap结合
nmap -p80 192.168.238.0/24 -oG - | nikto -host -
即先用nmap 扫描在192.168.238.0/24这个网段中开启80端口的目标,输出以后用管道传输到nikto再进行详细的扫描。
如果提示中有No CGI的时候我们可以加上-C all参数去进行详细的目录扫描。
使用代理
nikto -host http://192.168.238.136/dvwa -useproxy http://localhost:8087
vhost
虚拟主机,我们一个ip上可以部署多个网站都,可以用ip区分,也可以用端口区分,还有一种方式是通过主机头区分,这里ip也相同,端口也不同,类似于一个是www.abc.com,另一个是www.bcd.com我们就可以把-host改成-vhost,后面只能用域名方式了。