Weboldal keresés

Nikto – Webalkalmazás-sérülékenység és CGI-szkenner webszerverekhez


A Nikto Web Scanner egy másik jó eszköz a Linux rendszergazdák arzenáljához. Ez egy GPL-licenc alatt kiadott nyílt forráskódú webszkenner, amely átfogó tesztek elvégzésére szolgál webszervereken több elem, köztük több mint 6500 potenciálisan veszélyes fájl/CGI tekintetében. .

Javasolt olvasmány: WPSeku – Sebezhetőség-ellenőrző a WordPress biztonsági problémáinak felderítésére

Chris Solo és David Lodge írta a sebezhetőség értékelésére, ellenőrzi, hogy vannak-e elavult verziók több mint 1250 webszerveren és több mint 270 verzióspecifikus problémák. Ezenkívül megvizsgálja és jelentéseket készít az elavult webszerver-szoftverekről és bővítményekről.

A Nikto Web Scanner jellemzői

  1. Támogatja az SSL-t
  2. Támogatja a teljes HTTP-proxyt
  3. Támogatja a szöveget, a HTML-t, az XML-t és a CSV-t a jelentések mentéséhez.
  4. Több port keresése
  5. Több kiszolgálón is képes szkennelni azáltal, hogy bemeneteket vesz be olyan fájlokból, mint az nmap kimenet
  6. Támogassa a LibWhisker IDS-t
  7. Eléggé képes azonosítani a telepített szoftvereket fejlécekkel, fájlokkal és kedvenc ikonokkal
  8. A Metasploits naplói
  9. Jelentések a „szokatlan” fejlécekről.
  10. Apache és cgiwrap felhasználók felsorolása
  11. A gazdagépek hitelesítése Basic és NTLM segítségével
  12. A szkennelés egy adott időpontban automatikusan szüneteltethető.

Nikto követelmények

Az alapvető Perl, Perl modulok és OpenSSL telepítésű rendszernek lehetővé kell tennie a Nikto futtatását. Alaposan tesztelték Windows, Mac OSX és különféle Unix/Linux disztribúciókon, mint például a Red Hat, Debian, Ubuntu, BackTrack stb.

Nikto Web Scanner telepítése Linuxra

A legtöbb mai Linux rendszer előre telepített Perl, Perl Modules és OpenSSL csomagokkal érkezik. Ha nem tartalmazza, telepítheti őket az alapértelmezett yum vagy apt-get nevű rendszercsomagkezelő segédprogrammal.

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

Ezután klónozza a legújabb stabil Nikto forrásfájlokat a Github-tárhelyről, lépjen a Nikto/programs/ könyvtárba, és futtassa a perl használatával:

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

Az „Option host igényel argumentumot” egyértelműen jelzi, hogy a teszt során nem vettük fel a szükséges paramétereket. Tehát hozzá kell adnunk egy alapvető szükséges paramétert a teszt futtatásához.

Alapvető tesztelés

Az alapvető vizsgálathoz egy megcélozni kívánt gazdagépre van szükség, alapértelmezés szerint a 80 portot vizsgálja, ha nincs megadva. A gazdagép lehet egy rendszer gazdaneve vagy IP-címe. A gazdagépet a „-h ” opcióval adhatja meg.

Például egy 172.16.27.56 IP-címen szeretnék végezni egy vizsgálatot a 80 TCP-porton.

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

Ha másik portszámon szeretne szkennelni, adja hozzá a „-p ” [-port] opciót. Például a 172.16.27.56 IP-címen, a 443-as TCP-porton szeretnék végezni egy vizsgálatot.

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

Megadhat gazdagépeket, portokat és protokollokat is a teljes URL szintaxis használatával, és a rendszer megvizsgálja.

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

Szkennelhet bármilyen webhelyet. Például itt végeztem egy vizsgálatot a google.com oldalon.

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

A fenti parancs egy csomó http kérést (azaz több mint 2000 tesztet) hajt végre a webszerveren.

Több port tesztelése

Ugyanabban a munkamenetben több port vizsgálatát is végrehajthatja. Ha több portot szeretne megvizsgálni ugyanazon a gazdagépen, adja hozzá a „-p” [-port] opciót, és adja meg a portok listáját. A portok megadhatók tartományként (pl. 80-443) vagy vesszővel elválasztva (pl. 80 443). Például egy 80 és 443 portot szeretnék átvizsgálni a 172.16.27.56 gazdagépen.

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

Proxy használata

Tegyük fel, hogy egy rendszer, ahol a Nikto fut, csak HTTP proxyn keresztül fér hozzá a célállomáshoz, a tesztet továbbra is két különböző módon lehet végrehajtani. Az egyik a nikto.conf fájl használata, a másik módja pedig a közvetlen futtatás a parancssorból.

Nikto.conf fájl használata

Nyissa meg a nikto.conf fájlt bármelyik parancssori szerkesztővel.

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

Keresse meg a „PROXY” változót, és távolítsa el a „#” megjegyzést a sorok elejétől az ábrán látható módon. Ezután adja hozzá a proxy gazdagépet, a portot, a proxy felhasználót és a jelszót. Mentse és zárja be a fájlt.

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

Most hajtsa végre a Nikto parancsot a „-useproxy” opcióval. Kérjük, vegye figyelembe, hogy minden kapcsolat aHTTP proxyn keresztül kerül továbbításra.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -p 80 -useproxy
Minta kimenet
- 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
Parancssor használata

A Nikto futtatása közvetlenül a parancssorból a „-useproxy” opció használatával, a proxy argumentumként történő beállításával.

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

Nikto frissítése

A Nikto-t automatikusan frissítheti a legújabb bővítményekre és adatbázisokra, egyszerűen futtassa a „-update” parancsot.

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

Ha új frissítések állnak rendelkezésre, megjelenik a letöltött új frissítések listája.

+ 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

A Nikto bővítményeket és adatbázisokat manuálisan is letöltheti és frissítheti a http://cirt.net/nikto/UPDATES/ webhelyről.

Referencia hivatkozások

Nikto Honlap