首先获得 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:80
https://192.168.1.1:8333
192.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 scan
SKIPPORTS=21 111
# User-Agent variables:
# @VERSION - Nikto version
# @TESTID - Test identifier
# @EVASIONS - List of active evasions
USERAGENT=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 DTD
NIKTODTD=/var/lib/nikto/docs/nikto.dtd
# the default HTTP version to try... can/will be changed as necessary
DEFAULTHTTPVER=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 retrieved
MAX_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 case
CIRT=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 method
CHECKMETHODS=HEAD GET
# If you want to specify the location of any of the files, specify them here
EXECDIR=/var/lib/nikto # Location of Nikto
PLUGINDIR=/var/lib/nikto/plugins # Location of plugin dir
DBDIR=/var/lib//nikto/databases # Location of database dir
TEMPLATEDIR=/var/lib/nikto/templates # Location of template dir
DOCDIR=/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 up
FAILURES=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 evasions
USERAGENT=Mozilla/5.00 (Nikto/@VERSION) (Evasions:@EVASIONS) (Test:@TESTID)
- Proxy settings: 代理设置
# Proxy settings -- still must be enabled by -useproxy
PROXYHOST=127.0.0.1
PROXYPORT=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