Nikto – žiniatinklio programų pažeidžiamumas ir CGI skaitytuvas, skirtas žiniatinklio serveriams


Nikto Web Scanner yra dar vienas geras įrankis bet kurio Linux administratoriaus arsenale. Tai atvirojo kodo žiniatinklio skaitytuvas, išleistas pagal GPL licenciją, kuris naudojamas atlikti išsamius daugelio elementų, įskaitant daugiau nei 6500 potencialiai pavojingų failų/CGI, bandymus žiniatinklio serveriuose. .

Siūlomas skaitymas: WPSeku – pažeidžiamumo skaitytuvas, skirtas „WordPress“ saugos problemoms rasti

Ją parašė Chrisas Solo ir David Lodge, kad įvertintų pažeidžiamumą. Ji tikrina, ar nėra pasenusių versijų daugiau nei 1250 žiniatinklio serverių ir daugiau nei 270 versijos problemų. Jis taip pat nuskaito ir praneša apie pasenusią žiniatinklio serverio programinę įrangą ir papildinius.

Nikto Web Scanner savybės

  1. Palaiko SSL
  2. Palaiko visą HTTP tarpinį serverį
  3. Palaiko tekstą, HTML, XML ir CSV, kad būtų išsaugotos ataskaitos.
  4. Ieškoti kelių prievadų
  5. Gali nuskaityti keliuose serveriuose, gaudamas įvestis iš failų, pvz., nmap išvesties
  6. Palaikykite LibWhisker IDS
  7. Pakankamai pajėgi identifikuoti įdiegtą programinę įrangą su antraštėmis, failais ir adresynais
  8. „Metasploits“ žurnalai
  9. Ataskaitos apie „neįprastas“ antraštes.
  10. Apache ir cgiwrap vartotojų sąrašas
  11. Autentifikuokite pagrindinius kompiuterius naudodami „Basic“ ir NTLM
  12. Nuskaitymą galima automatiškai pristabdyti nurodytu laiku.

Nikto reikalavimai

Sistema su pagrindiniu Perl, Perl modulių, OpenSSL diegimu turėtų įgalinti Nikto paleidimą. Jis buvo kruopščiai išbandytas Windows, Mac OSX ir įvairiuose Unix/Linux platinimuose, pvz., Red Hat, Debian, Ubuntu, BackTrack ir kt.

Nikto Web Scanner įdiegimas Linux sistemoje

Daugumoje šiandieninių Linux sistemų yra iš anksto įdiegti Perl, Perl moduliai ir OpenSSL paketai. Jei neįtraukta, galite juos įdiegti naudodami numatytąją sistemos paketų tvarkyklės priemonę yum arba apt-get.

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

Tada klonuokite naujausius stabilius Nikto šaltinio failus iš „Github“ saugyklos, perkelkite į Nikto/programs/ katalogą ir paleiskite jį naudodami perl:

git clone https://github.com/sullo/nikto.git
cd nikto/programs
perl nikto.pl -h 
Pavyzdžio išvestis
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.

Parinkties priegloba reikalauja argumento“ aiškiai nurodo, kad atlikdami testą neįtraukėme reikiamų parametrų. Taigi, norėdami atlikti bandomąjį paleidimą, turime pridėti pagrindinį būtiną parametrą.

Pagrindinis testavimas

Norint atlikti pagrindinį nuskaitymą, reikia prieglobos, pagal kurią norite taikyti, pagal numatytuosius nustatymus jis nuskaito prievadą 80, jei nieko nenurodyta. Priegloba gali būti sistemos prieglobos serverio pavadinimas arba IP adresas. Galite nurodyti pagrindinį kompiuterį naudodami parinktį -h.

Pavyzdžiui, noriu nuskaityti IP 172.16.27.56 TCP prievade 80.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56
Pavyzdžio išvestis
- 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

Jei norite nuskaityti naudodami kitą prievado numerį, pridėkite parinktį „-p ” [-port]. Pavyzdžiui, noriu nuskaityti IP 172.16.27.56 TCP prievade 443.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 443
Pavyzdžio išvestis
- 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

Taip pat galite nurodyti prievadus, prievadus ir protokolus naudodami visą URL sintaksę ir jis bus nuskaitytas.

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

Taip pat galite nuskaityti bet kurią svetainę. Pavyzdžiui, čia aš nuskaitau google.com.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h http://www.google.com
Pavyzdžio išvestis
- 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)
….

Aukščiau pateikta komanda žiniatinklio serveryje atliks daugybę http užklausų (t. y. daugiau nei 2000 testų).

Kelių prievadų testavimas

Taip pat galite atlikti kelių prievadų nuskaitymą toje pačioje sesijoje. Jei norite nuskaityti kelis to paties pagrindinio kompiuterio prievadus, pridėkite parinktį „-p“ [-port] ir nurodykite prievadų sąrašą. Prievadus galima apibrėžti kaip diapazoną (pvz., 80–443) arba kaip atskirtą kableliu (t. y. 80 443). Pavyzdžiui, noriu nuskaityti prievadus 80 ir 443 priegloboje 172.16.27.56.

[root@tecmint nikto-2.1.5]# perl nikto.pl -h 172.16.27.56 -p 80,443
Pavyzdžio išvestis
- 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.
.....

Tarpinio serverio naudojimas

Tarkime, kad sistema, kurioje veikia Nikto, turi prieigą tik prie tikslinės prieglobos per HTTP tarpinį serverį, testą vis tiek galima atlikti dviem skirtingais būdais. Vienas iš jų naudoja failą nikto.conf, o kitas būdas yra paleisti tiesiai iš komandinės eilutės.

Naudojant Nikto.conf failą

Atidarykite nikto.conf failą naudodami bet kurią komandų eilutės redagavimo priemonę.

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

Ieškokite kintamojo „PROXY“ ir panaikinkite „#“ komentarą nuo eilučių pradžios, kaip parodyta. Tada pridėkite tarpinio serverio prieglobą, prievadą, įgaliotinį naudotoją ir slaptažodį. Išsaugokite ir uždarykite failą.

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

Dabar paleiskite Nikto naudodami parinktį -useproxy. Atminkite, kad visi ryšiai bus perduodami per HTTP tarpinį serverį.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -p 80 -useproxy
Pavyzdžio išvestis
- 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
Komandinės eilutės naudojimas

Norėdami paleisti Nikto tiesiai iš komandinės eilutės, naudodami parinktį -useproxy, nustatydami tarpinį serverį kaip argumentą.

root@localhost nikto-2.1.5]# perl nikto.pl -h localhost -useproxy http://172.16.16.37:8080/
Pavyzdžio išvestis
- 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 atnaujinimas

Galite automatiškai atnaujinti Nikto į naujausius papildus ir duomenų bazes, tiesiog paleiskite komandą -update.

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

Jei yra naujų naujinimų, pamatysite atsisiųstų naujų naujinimų sąrašą.

+ 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

Taip pat galite rankiniu būdu atsisiųsti ir atnaujinti Nikto papildinius ir duomenų bazes iš http://cirt.net/nikto/UPDATES/.

Nuorodų nuorodos

Nikto pagrindinis puslapis