Nikto - The powerful WEBSERVER Scanner





Nikto is an Open Source (GPL) web server scanner. It can perform comprehensive tests against web servers for multiple items, for over 6700 potentially dangerous files/programs and can check for outdated versions of over 1250 servers, and version specific problems on over 270 servers. It will also checks for server configuration items such as the presence of multiple index files, HTTP server options, and will attempt to identify installed web servers and software. Scan items and plugins are frequently updated or it can be automatically updated.

Nikto is not a stealthy tool. It will test a web server in the quickest time possible, and will generate logs in in log files or an IPS/IDS.

Not every check is a security problem, though most are. There are some items that are "info only" type checks that look for things that may not have a security flaw, but the webmaster or security engineer may not know are present on the server. These items are usually marked appropriately in the information printed. There are also some checks for unknown items which have been seen scanned for in log files.



Options:
-ask+             Whether to ask about submitting updates
                              yes     Ask about each (default)
                              no      Don't ask, don't send
                              auto    Don't ask, just send
-Cgidirs+         Scan these CGI dirs: "none", "all", or values like "/cgi/ /cgi-a/"
-config+          Use this config file
-Display+        Turn on/off display outputs:
                               1     Show redirects
                               2     Show cookies received
                               3     Show all 200/OK responses
                               4     Show URLs which require authentication
                               D     Debug output
                               E     Display all HTTP errors
                               P     Print progress to STDOUT
                               S     Scrub output of IPs and hostnames
                               V     Verbose output
-dbcheck        Check database and other key files for syntax errors
-evasion+       Encoding technique:
                                1      Random URI encoding (non-UTF8)
                                2      Directory self-reference (/./)
                                3      Premature URL ending
                                4      Prepend long random string
                                5      Fake parameter
                                6      TAB as request spacer
                                7      Change the case of the URL
                                8      Use Windows directory separator (\)
                                A      Use a carriage return (0x0d) as a request spacer
                                B      Use binary value 0x0b as a request spacer
-Format+         Save file (-o) format:
                                csv    Comma-separated-value
                                htm   HTML Format
                                nbe    Nessus NBE format
                                sql     Generic SQL (see docs for schema)
                                txt      Plain text
                                xml     XML Format
                               (if not specified the format will be taken from the file extension passed to -output)
-Help                 Extended help information
-host+               Target host
-404code           Ignore these HTTP codes as negative responses (always). Format is "302,301".
-404string          Ignore this string in response body content as negative response (always). Can be a regular expression.
-id+                    Host authentication to use, format is id:pass or id:pass:realm
-key+                 Client certificate key file
-list-plugins         List all available plugins, perform no testing
-maxtime+          Maximum testing time per host (e.g., 1h, 60m, 3600s)
-mutate+            Guess additional file names:
                                    1       Test all files with all root directories
                                    2       Guess for password file names
                                    3       Enumerate user names via Apache (/~user type requests)
                                    4        Enumerate user names via cgiwrap (/cgi-bin/cgiwrap/~user type requests)
                                    5        Attempt to brute force sub-domain names, assume that the host name is the parent domain
                                    6        Attempt to guess directory names from the supplied dictionary file
-mutate-options   Provide information for mutates
-nointeractive      Disables interactive features
-nolookup            Disables DNS lookups
-nossl                   Disables the use of SSL
-no404                 Disables nikto attempting to guess a 404 page
-Option                Over-ride an option in nikto.conf, can be issued multiple times
-output+              Write output to this file ('.' for auto-name)
-Pause+               Pause between tests (seconds, integer or float)
-Plugins+             List of plugins to run (default: ALL)
-port+                  Port to use (default 80)
-RSAcert+           Client certificate file
-root+                  Prepend root value to all requests, format is /directory
-Save                   Save positive responses to this directory ('.' for auto-name)
-ssl                       Force ssl mode on port
-Tuning+              Scan tuning:
                                     1         Interesting File / Seen in logs
                                     2         Misconfiguration / Default File
                                     3         Information Disclosure
                                     4         Injection (XSS/Script/HTML)
                                     5         Remote File Retrieval - Inside Web Root
                                     6         Denial of Service
                                     7         Remote File Retrieval - Server Wide
                                     8         Command Execution / Remote Shell
                                     9         SQL Injection
                                     0         File Upload
                                     a         Authentication Bypass
                                     b         Software Identification
                                     c         Remote Source Inclusion
                                     d         WebService
                                     e         Administrative Console
                                     x         Reverse Tuning Options (i.e., include all except specified)
-timeout+          Timeout for requests (default 10 seconds)
-Userdbs            Load only user databases, not the standard databases
                                   all        Disable standard dbs and load only user dbs
                                   tests     Disable only db_tests and load udb_tests
-useragent        Over-rides the default useragent
-until                 Run until the specified time or duration
-update             Update databases and plugins from CIRT.net
-useproxy         Use the proxy defined in nikto.conf, or argument http://server:port
-Version            Print plugin and database versions
-vhost+             Virtual host (for Host header)
            
+ requires a value


Basic Testing

The most basic Nikto scan requires simply a host to target, since port 80 is selected if no specific port is given. The host can either be an IP or a hostname of a machine, and is specified using the -h (-host) option. This will scan the IP 192.168.0.1 on TCP port 80:
nikto -h 192.168.0.1
To check a specific port , specify the port number with the -p (-port) option. This will scan the IP 192.168.0.1 on TCP port 443:
nikto -h 192.168.0.1 -p 443
Hosts, ports and protocols may also be specified by using a full URL syntax, and it will be scanned:
nikto -h https://192.168.0.1:443/
There is no need to specify that port 443 may be SSL, as Nikto will first test regular HTTP and if that fails, HTTPS. If you are sure it is an SSL server, specifying -s (-ssl) will speed up the test.
nikto -h 192.168.0.1 -p 443 -ssl
More complex tests can be performed using the -mutate parameter, as detailed later. This can produce extra tests, some of which may be provided with extra parameters through the -mutate-options parameter. For example, using -mutate 3, with or without a file attempts to brute force usernames if the web server allows ~user URIs:
nikto -h 192.168.0.1 -mutate 3 -mutate-options user-list.txt

Multiple Port Testing

Nikto can scan multiple ports in the same scanning session. To test more than one port on the same host, specify the list of ports in the -p (-port) option. Ports can be specified as a range (i.e., 80-90), or as a comma-delimited list, (i.e., 80,88,90). This will scan the host on ports 80, 88 and 443.
nikto -h 192.168.0.1 -p 80,88,443

Multiple Host Testing

Nikto support scanning multiple hosts in the same session via a text file of host names or IPs. Instead of giving a host name or IP for the -h (-host) option, a file name can be given. A file of hosts must be formatted as one host per line, with the port number(s) at the end of each line. Ports can be separated from the host and other ports via a colon or a comma. If no port is specified, port 80 is assumed.

A host file may also be an nmap output in "greppable" format (i.e. from the output from -oG).
A file may be passed to Nikto through stdout/stdin using a "-" as the filename. For example:
nmap -p80 192.168.0.0/24 -oG - | nikto -h -

Using a Proxy

If the machine running Nikto only has access to the target host (or update server) via an HTTP proxy, the test can still be performed. There are two ways to use a proxy with Nikto, via the nikto.conf file or directly on the command line.
To use the nikto.conf file, set the PROXY* variables (as described in section 4), and then execute Nikto with the -useproxy option. All connections will be relayed through the HTTP proxy specified in the configuration file.
nikto -h localhost -p 80 -useproxy
To set the proxy on the command line, use the -useproxy option with the proxy set as the argument, for example:
./nikto -h localhost -useproxy http://localhost:8080/


Comments

  1. nice post
    https://www.digimarkbd.com/
    < a href="https://www.digimarkbd.com/">DigimarkBD

    ReplyDelete

Post a Comment

Popular posts from this blog

How to Repair Kali Linux grub after installing Windows in Dual boot System

PDFCrack - Password Cracking Tool for PDF-files

Avet – Open Source Anti-Virus Evasion Tool