Nikto - Usa ka Web Application Vulnerability ug CGI Scanner alang sa mga Web Server


Ang Nikto Web Scanner usa pa ka maayo nga adunay himan alang sa bisan unsang arsenal sa tagdumala sa Linux. Kini usa ka Open source web scanner nga gipagawas sa ilawom sa lisensya sa GPL, nga gigamit sa paghimo sa komprehensibo nga mga pagsulay sa mga server sa Web alang sa daghang mga butang lakip ang kapin sa 6500 nga peligro nga mga file/CGI.

Gisulat kini ni Chris Solo ug David Lodge alang sa Vulnerability assessment, kini nagsusi sa mga outdated nga bersyon sa 1250 Web servers ug sa 270 nga bersyon nga piho nga mga problema. Kini usab nag-scan ug nagtaho alang sa wala na sa panahon nga web server software ug mga plugins.

Mga bahin sa Nikto Web Scanner

  1. Nagsuporta sa SSL
  2. Nagsuporta sa hingpit nga HTTP proxy
  3. Nagsuporta sa teksto, HTML, XML ug CSV aron makatipig og mga taho.
  4. Pag-scan sa daghang mga pantalan
  5. Mahimo mag-scan sa daghang mga server pinaagi sa pagkuha sa mga input gikan sa mga file sama sa output sa nmap
  6. Pagsuporta sa LibWhisker IDS
  7. Igo nga makahimo sa pag-ila sa na-install nga software nga adunay mga ulohan, mga file, ug mga favicon
  8. Mga log para sa Metasploits
  9. Mga report para sa “talagsaon” nga mga ulohan.
  10. Apache ug cgiwrap user enumeration
  11. Authenticate ang mga host gamit ang Basic ug NTLM
  12. Ang mga pag-scan mahimong Awtomatikong paghunong sa usa ka piho nga oras.

Mga Kinahanglanon sa Nikto

Ang usa ka sistema nga adunay sukaranan nga Perl, Perl Modules, OpenSSL nga pag-install kinahanglan nga makapahimo sa Nikto nga modagan. Gisulayan na kini pag-ayo sa Windows, Mac OSX ug lain-laing mga distribusyon sa Unix/Linux sama sa Red Hat, Debian, Ubuntu, BackTrack, ug uban pa.

Pag-instalar sa Nikto Web Scanner sa Linux

Kadaghanan sa mga sistema sa Linux karon adunay mga pre-install nga Perl, Perl Modules, ug OpenSSL nga mga pakete. Kung dili iapil, mahimo nimo kini i-install gamit ang default system package manager utility nga gitawag yum o apt-get.

 yum install perl perl-Net-SSLeay openssl
 apt-get install perl openssl libnet-ssleay-perl

Sunod, i-clone ang pinakabag-o nga stable nga Nikto source files gikan sa Github repository niini, ibalhin ngadto sa Nikto/programs/ directory ug ipadagan kini gamit ang perl:

$ git clone https://github.com/sullo/nikto.git
$ cd nikto/programs
$ perl nikto.pl -h 
Option host requires an argument

       -config+            Use this config file
       -Display+           Turn on/off display outputs
       -dbcheck            check database and other key files for syntax errors
       -Format+            save file (-o) format
       -Help               Extended help information
       -host+              target host
       -id+                Host authentication to use, format is id:pass or id:pass:realm
       -list-plugins       List all available plugins
       -output+            Write output to this file
       -nossl              Disables using SSL
       -no404              Disables 404 checks
       -Plugins+           List of plugins to run (default: ALL)
       -port+              Port to use (default 80)
       -root+              Prepend root value to all requests, format is /directory
       -ssl                Force ssl mode on port
       -Tuning+            Scan tuning
       -timeout+           Timeout for requests (default 10 seconds)
       -update             Update databases and plugins from CIRT.net
       -Version            Print plugin and database versions
       -vhost+             Virtual host (for Host header)
   		+ requires a value

	Note: This is the short help output. Use -H for full help text.

Ang \Option host nanginahanglan ug argumento klaro nga nagsulti nga wala namo giapil ang gikinahanglan nga mga parametro samtang naghimo sa pagsulay. Busa, kinahanglan namong idugang ang usa ka sukaranan nga gikinahanglan nga parameter aron mahimo ang pagsulay.

Ang sukaranan nga pag-scan nanginahanglan usa ka host nga gusto nimo i-target, pinaagi sa default gi-scan niini ang port 80 kung wala’y gipiho. Ang host mahimo nga usa ka hostname o usa ka IP Address sa usa ka sistema. Mahimo nimong itakda ang usa ka host gamit ang \-h nga kapilian.

Pananglitan, gusto kong mag-scan sa IP 172.16.27.56 sa TCP port 80.

 perl nikto.pl -h 172.16.27.56
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        80
+ Start Time:         2014-01-10 00:48:12 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ Retrieved x-powered-by header: PHP/5.3.3
+ The anti-clickjacking X-Frame-Options header is not present.
+ Server leaks inodes via ETags, header found with file /robots.txt, inode: 5956160, size: 24, mtime: 0x4d4865a054e32
+ File/dir '/' in robots.txt returned a non-forbidden or redirect HTTP code (200)
+ "robots.txt" contains 1 entry which should be manually viewed.
+ Apache/2.2.15 appears to be outdated (current is at least Apache/2.2.22). Apache 1.3.42 (final release) and 2.0.64 are also current.
+ Multiple index files found: index.php, index.htm, index.html
+ DEBUG HTTP verb may show server debugging information. See http://msdn.microsoft.com/en-us/library/e8z01xdh%28VS.80%29.aspx for details.
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3233: /phpinfo.php: Contains PHP configuration information
+ OSVDB-12184: /index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000: PHP reveals potentially sensitive information via certain HTTP requests that contain specific QUERY strings.
+ OSVDB-3092: /test.html: This might be interesting...
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ /connect.php?path=http://cirt.net/rfiinc.txt?: Potential PHP MySQL database connection string found.
+ OSVDB-3092: /test.php: This might be interesting...
+ 6544 items checked: 0 error(s) and 16 item(s) reported on remote host
+ End Time:           2014-01-10 00:48:23 (GMT5.5) (11 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Kung gusto nimo mag-scan sa lain nga numero sa port, unya idugang ang \-p [-port] nga kapilian. Pananglitan, gusto nako nga mag-scan sa IP 172.16.27.56 sa TCP port 443.

 perl nikto.pl -h 172.16.27.56 -p 443
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        443
---------------------------------------------------------------------------
+ SSL Info:        Subject: /O=*.mid-day.com/OU=Domain Control Validated/CN=*.mid-day.com
                   Ciphers: DHE-RSA-AES256-GCM-SHA384
                   Issuer:  /C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435
+ Start Time:         2014-01-10 01:08:26 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ Server leaks inodes via ETags, header found with file /, inode: 2817021, size: 5, mtime: 0x4d5123482b2e9
+ The anti-clickjacking X-Frame-Options header is not present.
+ Apache/2.2.15 appears to be outdated (current is at least Apache/2.2.22). Apache 1.3.42 (final release) and 2.0.64 are also current.
+ Server is using a wildcard certificate: '*.mid-day.com'
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ 6544 items checked: 0 error(s) and 8 item(s) reported on remote host
+ End Time:           2014-01-10 01:11:20 (GMT5.5) (174 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Mahimo usab nimo ipiho ang mga host, pantalan ug protocol gamit ang usa ka bug-os nga syntax sa URL, ug kini ma-scan.

 perl nikto.pl -h http://172.16.27.56:80

Mahimo usab nimo i-scan ang bisan unsang website. Pananglitan, dinhi ako nag-scan sa google.com.

 perl nikto.pl -h http://www.google.com
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          173.194.38.177
+ Target Hostname:    www.google.com
+ Target Port:        80
+ Start Time:         2014-01-10 01:13:36 (GMT5.5)
---------------------------------------------------------------------------
+ Server: gws
+ Cookie PREF created without the httponly flag
+ Cookie NID created without the httponly flag
+ Uncommon header 'x-frame-options' found, with contents: SAMEORIGIN
+ Uncommon header 'x-xss-protection' found, with contents: 1; mode=block
+ Uncommon header 'alternate-protocol' found, with contents: 80:quic
+ Root page / redirects to: http://www.google.co.in/?gws_rd=cr&ei=xIrOUomsCoXBrAee34DwCQ
+ Server banner has changed from 'gws' to 'sffe' which may suggest a WAF, load balancer or proxy is in place
+ Uncommon header 'x-content-type-options' found, with contents: nosniff
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ File/dir '/groups/' in robots.txt returned a non-forbidden or redirect HTTP code (302)
….

Ang naa sa ibabaw nga mando maghimo usa ka hugpong sa mga hangyo sa http (ie labaw pa sa 2000 nga mga pagsulay) sa web server.

Mahimo ka usab nga maghimo daghang mga port nga pag-scan sa parehas nga sesyon. Aron ma-scan ang daghang mga pantalan sa parehas nga host, idugang ang -p [-port] nga kapilian ug ipiho ang lista sa mga pantalan. Ang mga pantalan mahimong hubaron nga usa ka range (ie, 80-443), o ingon usa ka comma nga gibulag (ie, 80,443). Pananglitan, gusto nakong i-scan ang usa ka port 80 ug 443 sa host 172.16.27.56.

 perl nikto.pl -h 172.16.27.56 -p 80,443
- Nikto v2.1.5
---------------------------------------------------------------------------
+ No web server found on cmsstage.mid-day.com:88
---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        80
+ Start Time:         2014-01-10 20:38:26 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ Retrieved x-powered-by header: PHP/5.3.3
+ The anti-clickjacking X-Frame-Options header is not present.

---------------------------------------------------------------------------
+ Target IP:          172.16.27.56
+ Target Hostname:    example.com
+ Target Port:        443
---------------------------------------------------------------------------
+ SSL Info:        Subject: /O=*.mid-day.com/OU=Domain Control Validated/CN=*.mid-day.com
                   Ciphers: DHE-RSA-AES256-GCM-SHA384
                   Issuer:  /C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435
+ Start Time:         2014-01-10 20:38:36 (GMT5.5)
---------------------------------------------------------------------------
+ Server: Apache/2.2.15 (CentOS)
+ All CGI directories 'found', use '-C none' to test none
+ Apache/2.2.15 appears to be outdated (current is at least Apache/2.2.22). Apache 1.3.42 (final release) and 2.0.64 are also current.
.....

Ingnon ta nga ang usa ka sistema diin ang Nikto nagdagan lamang adunay access sa target host pinaagi sa usa ka HTTP proxy, ang pagsulay mahimo gihapon nga ipahigayon gamit ang duha ka lain-laing mga paagi. Ang usa naggamit nikto.conf file ug laing paagi mao ang pagdagan direkta gikan sa command line.

Ablihi ang nikto.conf file gamit ang bisan unsang command line editor.

 vi nikto.conf

Pangitaa ang variable nga PROXY ug i-uncomment ang '#' gikan sa sinugdanan sa mga linya sama sa gipakita. Dayon idugang ang proxy host, port, proxy user ug password. I-save ug isira ang file.

# Proxy settings -- still must be enabled by -useproxy
PROXYHOST=172.16.16.37
PROXYPORT=8080
PROXYUSER=pg
PROXYPASS=pg

Karon, ipatuman ang Nikto gamit ang -useproxy nga kapilian. Palihug timan-i nga ang tanan nga mga koneksyon ipadala pinaagi sa HTTP proxy.

[email  nikto-2.1.5]# perl nikto.pl -h localhost -p 80 -useproxy
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         2014-01-10 21:28:29 (GMT5.5)
---------------------------------------------------------------------------
+ Server: squid/2.6.STABLE6
+ Retrieved via header: 1.0 netserv:8080 (squid/2.6.STABLE6)
+ The anti-clickjacking X-Frame-Options header is not present.
+ Uncommon header 'x-squid-error' found, with contents: ERR_CACHE_ACCESS_DENIED 0
+ Uncommon header 'x-cache-lookup' found, with contents: NONE from netserv:8080

Sa pagpadagan sa Nikto direkta gikan sa command line gamit ang -useproxy nga kapilian pinaagi sa pagbutang sa proxy isip argumento.

[email  nikto-2.1.5]# perl nikto.pl -h localhost -useproxy http://172.16.16.37:8080/
- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         2014-01-10 21:34:51 (GMT5.5)
---------------------------------------------------------------------------
+ Server: squid/2.6.STABLE6
+ Retrieved via header: 1.0 netserv:8080 (squid/2.6.STABLE6)
+ The anti-clickjacking X-Frame-Options header is not present.
+ Uncommon header 'x-squid-error' found, with contents: ERR_CACHE_ACCESS_DENIED 0
+ Uncommon header 'x-cache-lookup' found, with contents: NONE from netserv:8080

Mahimo nimo nga i-update ang Nikto sa pinakabag-o nga mga plugins ug database nga awtomatiko, padagana lang ang -update nga sugo.

 perl nikto.pl -update

Kung adunay bag-ong mga update, imong makita ang usa ka lista sa mga bag-ong update nga na-download.

+ Retrieving 'nikto_report_csv.plugin'
+ Retrieving 'nikto_headers.plugin'
+ Retrieving 'nikto_cookies.plugin'
+ Retrieving 'db_tests'
+ Retrieving 'db_parked_strings'
+ Retrieving 'CHANGES.txt'
+ CIRT.net message: Please submit Nikto bugs to http://trac2.assembla.com/Nikto_2/report/2

Mahimo usab nimo nga mano-mano ang pag-download ug pag-update sa mga plugin ug database sa Nikto gikan sa http://cirt.net/nikto/UPDATES/.

Mga Reperensya nga Link

Nikto Homepage