Nikto is an open-source web server scanner that detects vulnerabilities and misconfigurations. It sends HTTP requests and provides a detailed report.
Nikto is a free and open-source web server scanner that is widely used for detecting vulnerabilities and security issues in web applications. It is designed to perform comprehensive scans of web servers and identify potential security risks that could be exploited by attackers.
Nikto was developed in Perl and is distributed under the GPL license. It is capable of scanning web servers running on various operating systems, including Windows, Linux, and macOS. It is also compatible with a wide range of web servers, including Apache, IIS, and Nginx.
The tool is primarily used by security professionals, web developers, and system administrators to assess the security posture of web servers and web applications. Nikto uses a database of known vulnerabilities and attacks to detect potential security issues and provide a detailed report of its findings.
Some of the key features of Nikto include the ability to scan multiple web servers simultaneously, support for SSL encryption, integration with other security tools such as Nmap, and the ability to customize scans based on specific requirements. It also provides a command-line interface that can be used to perform automated scans.
Nikto scans web servers by sending HTTP requests to the server and analyzing the responses. It performs a range of tests to detect vulnerabilities such as outdated software, insecure configurations, default credentials, and other potential security issues. The tool also checks for common misconfigurations such as directory listings, insecure headers, and information leakage.
The output of Nikto is presented in a comprehensive report that includes a summary of the findings, detailed information about each vulnerability, and recommendations for remediation. The report also includes a severity rating for each vulnerability, which can be used to prioritize remediation efforts.
While Nikto is a powerful security tool, it is not without its limitations. It can produce a high number of false positives, which can make it difficult to distinguish between real vulnerabilities and false alarms. Additionally, the tool can be resource-intensive, and its scans can sometimes take a long time to complete.
Overall, Nikto is an essential tool for anyone involved in web application security. It is easy to use, highly customizable, and provides valuable insights into the security posture of web servers and web applications. By using Nikto to scan for vulnerabilities, security professionals can proactively identify and remediate security issues before they can be exploited by attackers.
Nikto Usage Example
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP: 192.168.0.102
+ Target Hostname: 192.168.0.102
+ Target Port: 80
+ Start Time: 2018-03-23 10:49:04 (GMT0)
---------------------------------------------------------------------------
+ Server: Apache/2.2.22 (Ubuntu)
+ Server leaks inodes via ETags, header found with file /, inode: 287, size: 11832, mtime: Fri Feb 2 15:27:56 2018
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ "robots.txt" contains 1 entry which should be manually viewed.
+ Uncommon header 'tcn' found, with contents: list
+ Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. See http://www.wisec.it/sectou.php?id=4698ebdc59d15. The following alternatives for 'index' were found: index.html
+ Apache/2.2.22 appears to be outdated (current is at least Apache/2.4.12). Apache 2.0.65 (final release) and 2.2.29 are also current.
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS
+ 371 requests: 0 error(s) and 9 item(s) reported on remote host
+ End Time: 2018-03-23 10:50:44 (GMT0) (100 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
:~#
:~# firefox report.html
Packages and Binaries:
nikto
Nikto is a pluggable web server and CGI scanner written in Perl, using rfp’s LibWhisker to perform fast security or informational checks.
Features:
Easily updatable CSV-format checks database
Output reports in plain text or HTML
Available HTTP versions automatic switching
Generic as well as specific server software checks
SSL support (through libnet-ssleay-perl)
Proxy support (with authentication)
Cookies support
Installed size:2.22 MBHow to install:sudo apt install nikto
Dependencies:
libnet-ssleay-perl
perl
nikto
Scan web server for known vulnerabilities
:~# nikto -h
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
-check6 Check if IPv6 is working (connects to ipv6.google.com or value set in nikto.conf)
-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
-followredirects Follow 3xx redirects to new location
-Format+ Save file (-o) format:
csv Comma-separated-value
json JSON Format
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 This help information
-host+ Target host/URL
-id+ Host authentication to use, format is id:pass or id:pass:realm
-ipv4 IPv4 Only
-ipv6 IPv6 Only
-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
-noslash Strip trailing slash from URL (e.g., '/admin/' to '/admin')
-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)
-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
-url+ Target host/URL (alias of -host)
-usecookies Use cookies from responses in future requests
-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)
-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.
+ requires a value
replay
:~# replay -h
replay.pl -- Replay a saved scan result
-file Parse request from this file
-proxy Send request through this proxy (format: host:port)
-help Help output