title: Nikto
date: 2016-07-3 20:13
tags: Kali滲透測(cè)試 Web滲透測(cè)試
Dvwa
Dvwa是metasplotiable中的一個(gè)應(yīng)用網(wǎng)站,該應(yīng)用網(wǎng)站集成了大量的網(wǎng)站漏洞,值得我們探索和研究。
首先我們獲得metasploitable的ip地址:192.168.86.130
Kali的ip地址:192.168.86.134
然后訪問(wèn)Metasplotiabel的ip地址,進(jìn)入Dvwa應(yīng)用網(wǎng)站,選擇DVWA Security的安全等級(jí)選擇為low。
0x01
基于之前的滲透方法,現(xiàn)在要更進(jìn)一步的減少與目標(biāo)主機(jī)的交互。Htttrack可以將目標(biāo)網(wǎng)站克隆下來(lái),以實(shí)現(xiàn)離線分析目標(biāo)網(wǎng)站。
0x02 手動(dòng)掃描
除了使用掃描工具之外,還可以人為的去觀察目標(biāo)網(wǎng)站,作為一個(gè)客戶去訪問(wèn)該網(wǎng)站顯示存在的漏洞,但是純手動(dòng)的掃描一般只能看到網(wǎng)站開(kāi)發(fā)者能讓你看到的頁(yè)面,這時(shí)便可以使用掃描工具來(lái)提高手動(dòng)掃描的效率,去發(fā)現(xiàn)一些鮮為人知的頁(yè)面。
0x03 NIKTO
Nikto是一個(gè)用來(lái)發(fā)現(xiàn)默認(rèn)網(wǎng)頁(yè)文件、檢查網(wǎng)頁(yè)服務(wù)器和CGI安全問(wèn)題的工具,它是開(kāi)源的,使用Perl開(kāi)發(fā),可以對(duì)網(wǎng)頁(yè)服務(wù)器進(jìn)行全面的多種掃描,包含超過(guò)3300種有潛在危險(xiǎn)的文件CGIs;超過(guò)625種服務(wù)器版本;超過(guò)230種特定服務(wù)器問(wèn)題;以及一些WEB Application層面的漏洞它也會(huì)去掃描。
Nikto的作者是Chris Sullo,他是開(kāi)放安全基金會(huì)(Open Security Foundation) 的財(cái)務(wù)總監(jiān)。
避免404誤判
很多服務(wù)器不遵守RFC標(biāo)準(zhǔn),比如對(duì)于不存在的對(duì)象返回200相應(yīng)代碼。那么當(dāng)掃描器遇到這種情況下便會(huì)產(chǎn)生誤判。
掃描器是如何嘗試解決的?
Nikto的解決方發(fā)是:在開(kāi)始掃描以前,在每條命令執(zhí)行之前,會(huì)在自己的數(shù)據(jù)庫(kù)中將web中常見(jiàn)文件的擴(kuò)展名提取出來(lái),隨機(jī)使用一些文件名拼接這些擴(kuò)展名(這些隨機(jī)的文件名+擴(kuò)展名的文件對(duì)于目標(biāo)服務(wù)器來(lái)說(shuō)通常是不存在的)讓后再向目標(biāo)服務(wù)器發(fā)起請(qǐng)求。然后根據(jù)不同擴(kuò)展名返回的信息,進(jìn)行HASH摘要,以此得到該文件不存在時(shí)得到的響應(yīng)信息。然后Nikto再開(kāi)始真正的掃描發(fā)起。
如果這些還是不能得到404響應(yīng)的真實(shí)性,那么最新版本的Nikto還會(huì)將得到的響應(yīng)內(nèi)容去除時(shí)間信息后取得MD5值進(jìn)行hash校驗(yàn)。
同時(shí)也可以使用參數(shù)-non404,去掉前期判斷,但是這種提高性能而舍棄準(zhǔn)確率的做法,并不建議。
Nickto的使用
首先升級(jí)Nikto:
$: nikto -update
但是由于偉大的墻的存在,不一定能更新成功,此時(shí)可以訪問(wèn)到Nikto官網(wǎng)下載安裝包:http://cirt.net/nikto/UPDATES.
nikto host 掃描
root@kali:~# nikto -host 192.168.86.130 -port 80
nikto 進(jìn)行ssl掃描
root@kali:~# nikto -host www.baidu.com -port 443 -ssl
-ouput 將掃描結(jié)果輸出保存
對(duì)host列表進(jìn)行批量掃描
$: nikto host -host.txt
-host.txt 的文本格式如下:
---host.txt---
192.168.0.1:80
https://192.168.1.1:8333
192.168.0.2
nmap與nikto
$: nmap -p80 192.168.1.4/24 -oG - | nikto -host -
將nmap獲得的ip地址結(jié)果作為輸出通過(guò)管道傳送給nikto
nikto代理
同樣nikto可以通過(guò)代理掃描:
$: nikto -host https://www.baidu.com -useproxy htpp://localhost:1080
-vhost
當(dāng)一個(gè)網(wǎng)站存在多個(gè)端口時(shí)可以使用-vhost遍歷所有網(wǎng)站進(jìn)行掃描
nikto的配置文件
有些網(wǎng)站需要登錄以后才可以進(jìn)行掃描,此時(shí)可以設(shè)置nikto的配置文件手動(dòng)將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:\ 默認(rèn)的是firefox瀏覽器。此外還可以下載firefox的User-Agent插件,比如基于freifox瀏覽器的User-Agent Switcher可以進(jìn)行移動(dòng)端,PC端,以及操作系統(tǒng)的組合偽裝。
# 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:用于驗(yàn)證遠(yuǎn)程文件的正確性
Proxy settings:代理設(shè)置
# Proxy settings -- still must be enabled by -useproxy
PROXYHOST=127.0.0.1
PROXYPORT=1080
#PROXYUSER=proxyuserid
#PROXYPASS=proxypassword
- cookies設(shè)置
將已經(jīng)登錄網(wǎng)站的cookies存放再nikto.conf中,便可以登陸該網(wǎng)站了。
隨便打開(kāi)一個(gè)網(wǎng)站,對(duì)該網(wǎng)站啟用Firebug,并啟用cookies功能,登錄該網(wǎng)站,分析cookies信息,比如百度,分析firebug的cookies項(xiàng)可以看到過(guò)期時(shí)間(Expires),將過(guò)期時(shí)間下對(duì)應(yīng)的有會(huì)話(Session)字段的項(xiàng)中的名稱(Name)和內(nèi)容(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躲避技術(shù)
IDS(instruion Detection System) 入侵檢測(cè)系統(tǒng)
IDS可以被定義為對(duì)計(jì)算機(jī)和網(wǎng)絡(luò)資源的惡意使用行為進(jìn)行識(shí)別和相應(yīng)處理的系統(tǒng),包括系統(tǒng)外部的入侵和內(nèi)部用戶的非授權(quán)行為,是為保證計(jì)算機(jī)系統(tǒng)的安全而設(shè)計(jì)與配置的一種能夠及時(shí)發(fā)現(xiàn)并報(bào)告系統(tǒng)中未授權(quán)或異?,F(xiàn)象的技術(shù),是一種用于檢測(cè)計(jì)算機(jī)網(wǎng)絡(luò)中違反安全策略行為的技術(shù)。
所以當(dāng)一個(gè)目標(biāo)中存在IDS技術(shù)時(shí)可以使用參數(shù)-evasion來(lái)逃避,nikto的逃避方式一共有八種,可以同時(shí)指定多種:
- 隨機(jī)URL編碼(非utf-8)
- 自選擇路徑
- 過(guò)早結(jié)束的URL
- 優(yōu)先考慮長(zhǎng)隨機(jī)字符串
- 參數(shù)欺騙
- 使用TAB作為命令的分隔符
- 使用變化的URL
- 使用Windows路徑分隔符
比如:
$: nikto -host http://192.168.1.34/dvwa/ -evasion 167