Nikto - Kerentanan Aplikasi Web dan Pemindai CGI untuk Server Web


Nikto Web Scanner adalah alat lain yang bagus untuk dimiliki oleh administrator Linux mana pun. Ini adalah pemindai web sumber terbuka yang dirilis di bawah lisensi GPL, yang digunakan untuk melakukan pengujian komprehensif pada server Web untuk beberapa item termasuk lebih dari 6500 file/CGI yang berpotensi berbahaya .

Saran Baca: WPSeku – Pemindai Kerentanan untuk Menemukan Masalah Keamanan di WordPress

Ini ditulis oleh Chris Solo dan David Lodge untuk penilaian Kerentanan, memeriksa versi usang pada 1250 server Web dan lebih dari 270 masalah khusus versi. Itu juga memindai dan melaporkan perangkat lunak dan plugin server web yang ketinggalan jaman.

Fitur Pemindai Web Nikto

  1. Mendukung SSL
  2. Mendukung proksi HTTP penuh
  3. Mendukung teks, HTML, XML dan CSV untuk menyimpan laporan.
  4. Pindai beberapa port
  5. Dapat memindai di banyak server dengan mengambil input dari file seperti output nmap
  6. Mendukung IDS LibWhisker
  7. Cukup mampu untuk mengidentifikasi perangkat lunak yang diinstal dengan header, file, dan favicon
  8. Log untuk Metasploit
  9. Laporan untuk header “tidak biasa”.
  10. Pencacahan pengguna Apache dan cgiwrap
  11. Otentikasi host dengan Basic dan NTLM
  12. Pemindaian dapat dijeda secara otomatis pada waktu tertentu.

Persyaratan Nikto

Sistem dengan Perl dasar, Modul Perl, instalasi OpenSSL akan memungkinkan Nikto untuk berjalan. Ini telah diuji secara menyeluruh pada Windows, Mac OSX dan berbagai distribusi Unix/Linux seperti Red Hat, Debian, Ubuntu, BackTrack, dll.

Pemasangan Nikto Web Scanner di Linux

Sebagian besar sistem Linux saat ini dilengkapi dengan paket Perl, Modul Perl, dan OpenSSL yang telah diinstal sebelumnya. Jika tidak disertakan, Anda dapat menginstalnya menggunakan utilitas manajer paket sistem default yang disebut yum atau apt-get.

Di Red Hat/CentOS/Fedora
[root@tecmint ]# yum install perl perl-Net-SSLeay openssl
Di Debian/Ubuntu/Linux Mint
[root@tecmint ]# apt-get install perl openssl libnet-ssleay-perl

Berikutnya, kloning berkas sumber Nikto stabil terbaru dari repositori Github, pindahkan ke direktori Nikto/programs/ dan jalankan menggunakan Perl:

git clone https://github.com/sullo/nikto.git
cd nikto/programs
perl nikto.pl -h 
Contoh Keluaran
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.

Host opsi memerlukan argumen ” dengan jelas menyatakan bahwa kami tidak menyertakan parameter yang diperlukan saat melakukan pengujian. Jadi, kita perlu menambahkan parameter dasar yang diperlukan untuk melakukan uji coba.

Pengujian Dasar

Pemindaian dasar memerlukan host yang ingin Anda targetkan, secara default memindai port 80 jika tidak ada yang ditentukan. Host dapat berupa nama host atau Alamat IP suatu sistem. Anda dapat menentukan host menggunakan opsi “-h ”.

Misalnya saya ingin melakukan scan pada IP 172.16.27.56 pada port TCP 80.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56
Contoh Keluaran
- 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

Jika Anda ingin memindai pada nomor port yang berbeda, tambahkan opsi “-p ” [-port]. Misalnya saya ingin melakukan scan pada IP 172.16.27.56 pada port TCP 443.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 443
Contoh Keluaran
- 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

Anda juga dapat menentukan host, port dan protokol menggunakan sintaks URL lengkap, dan itu akan dipindai.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h http://172.16.27.56:80

Anda juga dapat memindai situs web apa pun. Sebagai contoh, di sini saya melakukan scan pada google.com.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h http://www.google.com
Contoh Keluaran
- 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)
….

Perintah di atas akan menjalankan banyak permintaan http (yaitu lebih dari 2000 pengujian) di server web.

Pengujian Beberapa Port

Anda juga dapat melakukan pemindaian beberapa port dalam sesi yang sama. Untuk memindai beberapa port pada host yang sama, tambahkan opsi “-p” [-port] dan tentukan daftar port. Port dapat didefinisikan sebagai rentang (yaitu, 80-443), atau dipisahkan dengan koma (yaitu, 80,443). Misalnya, saya ingin memindai port 80 dan 443 pada host 172.16.27.56.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 80,443
Contoh Keluaran
- 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.
.....

Menggunakan Proksi

Katakanlah sistem yang menjalankan Nikto hanya memiliki akses ke host target melalui proxy HTTP, pengujian masih dapat dilakukan menggunakan dua cara berbeda. Salah satunya adalah dengan menggunakan file nikto.conf dan cara lainnya adalah dengan menjalankan langsung dari baris perintah.

Menggunakan File Nikto.conf

Buka file nikto.conf menggunakan editor baris perintah apa pun.

[root@localhost nikto-2.1.5]# vi nikto.conf

Telusuri variabel “PROXY” dan hapus komentar pada '#' dari awal baris seperti yang ditunjukkan. Kemudian tambahkan host proxy, port, pengguna proxy dan kata sandi. Simpan dan tutup file.

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

Sekarang, jalankan Nikto menggunakan opsi “-useproxy”. Perlu diperhatikan bahwa semua koneksi akan diteruskan melalui proxy HTTP.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -p 80 -useproxy
Contoh Keluaran
- 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
Menggunakan Baris Perintah

Untuk menjalankan Nikto langsung dari baris perintah menggunakan opsi “-useproxy” dengan mengatur proxy sebagai argumen.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -useproxy http://172.16.16.37:8080/
Contoh Keluaran
- 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

Memperbarui Nikto

Anda dapat memperbarui Nikto ke plugin dan database terbaru secara otomatis, cukup jalankan perintah “-update”.

[root@localhost nikto-2.1.5]# perl nikto.pl -update

Jika pembaruan baru tersedia, Anda akan melihat daftar pembaruan baru yang diunduh.

+ 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

Anda juga dapat mengunduh dan memperbarui plugin dan basis data Nikto secara manual dari http://cirt.net/nikto/UPDATES/.

Tautan Referensi

Beranda Nikto