首先获得metasploitable的ip地址:192.168.86.130
Kali的ip地址:192.168.86.134
然后访问Metasplotiabel的ip地址,进入Dvwa应用网站,选择DVWA Security的安全等级选择为low。
基于之前的渗透方法,现在要更进一步的减少与目标主机的交互。Htttrack可以将目标网站克隆下来,以实现离线分析目标网站
Nikto
Nikto是一个用来发现默认网页文件、检查网页服务器和CGI安全问题的工具,它是开源的,使用Perl开发,可以对网页服务器进行全面的多种扫描,包含超过3300种有潜在危险的文件CGIs;超过625种服务器版本;超过230种特定服务器问题;以及一些WEB Application层面的漏洞它也会去扫描。
避免404误判
很多服务器不遵守RFC标准,比如对于不存在的对象返回200相应代码。那么当扫描器遇到这种情况下便会产生误判。
扫描器是如何尝试解决的?
Nikto的解决方发是:在开始扫描以前,在每条命令执行之前,会在自己的数据库中将web中常见文件的扩展名提取出来,随机使用一些文件名拼接这些扩展名(这些随机的文件名+扩展名的文件对于目标服务器来说通常是不存在的)让后再向目标服务器发起请求。然后根据不同扩展名返回的信息,进行HASH摘要,以此得到该文件不存在时得到的响应信息。然后Nikto再开始真正的扫描发起。
如果这些还是不能得到404响应的真实性,那么最新版本的Nikto还会将得到的响应内容去除时间信息后取得MD5值进行hash校验。
同时也可以使用参数-no404,去掉前期判断,但是这种提高性能而舍弃准确率的做法,并不建议。
Nickto的使用
首先升级Nikto:
$: nikto -update
但是由于wall的存在,不一定能更新成功,此时可以访问到Nikto官网下载安装包:http://cirt.net/nikto/UPDATES.
nikto host 扫描
root@kali:~# nikto -host 192.168.86.130 -port 80
nikto 进行ssl扫描
root@kali:~# nikto -host www.baidu.com -port 443 -ssl
-ouput 将扫描结果输出保存
对host列表进行批量扫描
$: nikto host -host.txt
-host.txt 的文本格式如下:
192.168.0.1:80https://192.168.1.1:8333192.168.0.2
nmap配合nikto
将nmap获得的ip地址结果作为输出通过管道传送给nikto
$: nmap -p80 192.168.1.4/24 -oG - | nikto -host -
nikto代理
nikto可以通过代理扫描:
$: nikto -host https://www.baidu.com -useproxy htpp://localhost:1080
nikto的配置文件
有些网站需要登录以后才可以进行扫描,此时可以设置nikto的配置文件手动将cookie添加到nikto的中。nikto的配置文件如下:
$: vi /etc/nikto.conf########################################################################################################## CONFIG STUFF# $Id: config.txt 94 2009-01-21 22:47:25Z deity $########################################################################################################## default command line options, can't be an option that requires a value. used for ALL runs.# CLIOPTS=-g -a# ports never to scanSKIPPORTS=21 111# User-Agent variables: # @VERSION - Nikto version # @TESTID - Test identifier # @EVASIONS - List of active evasionsUSERAGENT=Mozilla/5.00 (Nikto/@VERSION) (Evasions:@EVASIONS) (Test:@TESTID)# RFI URL. This remote file should return a phpinfo call, for example: <?php phpinfo(); ?># You may use the one below, if you like.RFIURL=http://cirt.net/rfiinc.txt?# IDs never to alert on (Note: this only works for IDs loaded from db_tests)#SKIPIDS=# The DTDNIKTODTD=/var/lib/nikto/docs/nikto.dtd# the default HTTP version to try... can/will be changed as necessaryDEFAULTHTTPVER=1.0# Nikto can submit updated version strings to CIRT.net. It won't do this w/o permission. You should# send updates because it makes the data better for everyone ;) *NO* server specific information# such as IP or name is sent, just the relevant version information.# UPDATES=yes - ask before each submission if it should send# UPDATES=no - don't ask, don't send# UPDATES=auto - automatically attempt submission *without prompting*UPDATES=yes# Warning if MAX_WARN OK or MOVED responses are retrievedMAX_WARN=20# Prompt... if set to 'no' you'll never be asked for anything. Good for automation.#PROMPTS=no# cirt.net : set the IP so that updates can work without name resolution -- just in caseCIRT=107.170.99.251# Proxy settings -- still must be enabled by -useproxy#PROXYHOST=127.0.0.1#PROXYPORT=8080#PROXYUSER=proxyuserid#PROXYPASS=proxypassword# Cookies: send cookies with all requests# Multiple can be set by separating with a semi-colon, e.g.:# "cookie1"="cookie value";"cookie2"="cookie val" #STATIC-COOKIE=# The below allows you to vary which HTTP methods are used to check whether an HTTP(s) server # is running. Some web servers, such as the autopsy web server do not implement the HEAD methodCHECKMETHODS=HEAD GET# If you want to specify the location of any of the files, specify them hereEXECDIR=/var/lib/nikto # Location of NiktoPLUGINDIR=/var/lib/nikto/plugins # Location of plugin dirDBDIR=/var/lib//nikto/databases # Location of database dirTEMPLATEDIR=/var/lib/nikto/templates # Location of template dirDOCDIR=/var/lib/nikto/docs # Location of docs dir# Default plugin macros@@MUTATE=dictionary;subdomain@@DEFAULT=@@ALL;-@@MUTATE;tests(report:500)# Choose SSL libs: # SSLeay - use Net::SSLeay # SSL - use Net::SSL # auto - automatically choose whats available # (SSLeay wins if both are available) LW_SSL_ENGINE=auto# Number of failures before giving upFAILURES=20
- User-Agent: 默认的是firefox浏览器。此外还可以下载firefox的User-Agent插件,比如基于freifox浏览器的User-Agent Switcher可以进行移动端,PC端,以及操作系统的组合伪装。
# User-Agent variables: # @VERSION - Nikto version # @TESTID - Test identifier # @EVASIONS - List of active evasionsUSERAGENT=Mozilla/5.00 (Nikto/@VERSION) (Evasions:@EVASIONS) (Test:@TESTID)
- Proxy settings:代理设置
# Proxy settings -- still must be enabled by -useproxyPROXYHOST=127.0.0.1PROXYPORT=1080#PROXYUSER=proxyuserid#PROXYPASS=proxypassword
cookies设置
将已经登录网站的cookies存放再nikto.conf中,便可以登陆该网站了。
随便打开一个网站,对该网站启用Firebug,并启用cookies功能,登录该网站,分析cookies信息,比如百度,分析firebug的cookies项可以看到过期时间(Expires),将过期时间下对应的有会话(Session)字段的项中的名称(Name)和内容(Value)copy,添加到
/etc/nikto.conf中
# Cookies: send cookies with all requests# Multiple can be set by separating with a semi-colon, e.g.:"HBDRCVFR[Fc9oatPmwxn]="12345678";"BD_CK_SAM"="cookie val" ;"BD_HOME"="cookie val";"H_PS_PSSID"="cookie val";....""#STATIC-COOKIE=
-evasion IDS躲避技术
IDS(instruion Detection System) 入侵检测系统
IDS可以被定义为对计算机和网络资源的恶意使用行为进行识别和相应处理的系统,包括系统外部的入侵和内部用户的非授权行为,是为保证计算机系统的安全而设计与配置的一种能够及时发现并报告系统中未授权或异常现象的技术,是一种用于检测计算机网络中违反安全策略行为的技术。
所以当一个目标中存在IDS技术时可以使用参数-evasion来逃避,nikto的逃避方式一共有八种,可以同时指定多种:
- 1 随机URL编码(非utf-8)
- 2 自选择路径
- 3 过早结束的URL
- 4 优先考虑长随机字符串
- 5 参数欺骗
- 6 使用TAB作为命令的分隔符
- 7 使用变化的URL
- 8 使用Windows路径分隔符
例:
$: nikto -host http://192.168.1.34/dvwa/ -evasion 167