Owasp ZAP

Owasp ZAP

Cos’è OWASP ZAP

Open Web Application Security Project Zed Attack Proxy è un tool sviluppato per analizzare, testare ed effettuare attacchi ad applicazioni web. E’ multi-piattaforma, dunque disponibile anche per Windows e iOS. Ha tutto l’essenziale per poter effettuare test di web-app:

  • Crawler
  • Proxy di intercettazione
  • Scanner Attivo
  • Scanner Passivo
  • Generatore di rapporti.

Come Funziona

Per poter avviare OWASP ZAP basta digitare in terminale con utente root:

owasp-zap

oppure:

zaproxy

Al primo avvio dobbiamo accettare i termini e condizioni d’uso dell’applicativo.

Vi si presenterà questa schermata:

Selezioniamo il tipo di sessione, se persistente o meno e iniziamo.

Da avvio rapido possiamo scegliere se avviare una scansione attiva, o lanciare uno dei nostri browser sotto proxy di intercettazione:

Dopo aver avviato il nostro browser iniziamo a navigare all’interno del sito da testare. Nel mio caso utilizzerò http://testphp.vulnweb.com/ reso vulnerabile volutamente e destinato al testing.

Possiamo notare che durante la navigazione OWASP Zap rileva e identifica numerose vulnerabilità.

Come puoi notare abbiamo un’ampia panoramica abbastanza dettagliata delle vulnerabilità e delle parti del codice interessate, con una buona descrizione.

 

ATTENZIONE: Testare un applicazione web senza autorizzazione scritta è illegale, quanto scritto è solo a scopo didattico e informativo, non mi assumo nessuna responsabilità dell’uso che ne farete.

JoomScan e WPScan

JoomScan e WPScan

Cosa sono JoomScan e WPScan:

JoomScan e WPScan sono strumenti di analisi e scansione per l’individuazione di vulnerabilità e informazioni utili dei più utilizzati CMS, intendo WordPress e Joomla.

Per poterli utilizzare dobbiamo ovviamente sapere in anticipo il CMS di un sito web, per rilevare il tipo di CMS basta utilizzare questo servizio online, una volta individuato possiamo eseguire joomscan e wpscan in base alle esigenze.

JoomScan

Per utilizzarlo basta eseguire in terminale:

joomscan -u http://www.dominiojoomla.xyz

JoomScan Help

Help :

Usage:  joomscan [options]

--url | -u <URL>                |   The Joomla URL/domain to scan.
--enumerate-components | -ec    |   Try to enumerate components.

--cookie <String>               |   Set cookie.
--user-agent | -a <User-Agent>  |   Use the specified User-Agent.
--random-agent | -r             |   Use a random User-Agent.
--timeout <Time-Out>            |   Set timeout.
--about                         |   About Author
--help | -h                     |   This help screen.
--version                       |   Output the current version and exit.

WPScan

Per utilizzarlo basta eseguire in terminale:

wpscan -u http://www.dominiowordpress.xyz

WPScan Help

Help :

Some values are settable in a config file, see the example.conf.json

--update                            Update to the database to the latest version.
--url       | -u <target url>       The WordPress URL/domain to scan.
--force     | -f                    Forces WPScan to not check if the remote site is running WordPress.
--enumerate | -e [option(s)]        Enumeration.
  option :
    u        usernames from id 1 to 10
    u[10-20] usernames from id 10 to 20 (you must write [] chars)
    p        plugins
    vp       only vulnerable plugins
    ap       all plugins (can take a long time)
    tt       timthumbs
    t        themes
    vt       only vulnerable themes
    at       all themes (can take a long time)
  Multiple values are allowed : "-e tt,p" will enumerate timthumbs and plugins
  If no option is supplied, the default is "vt,tt,u,vp"

--exclude-content-based "<regexp or string>"
                                    Used with the enumeration option, will exclude all occurrences based on the regexp or string supplied.
                                    You do not need to provide the regexp delimiters, but you must write the quotes (simple or double).
--config-file  | -c <config file>   Use the specified config file, see the example.conf.json.
--user-agent   | -a <User-Agent>    Use the specified User-Agent.
--cookie <String>                   String to read cookies from.
--random-agent | -r                 Use a random User-Agent.
--follow-redirection                If the target url has a redirection, it will be followed without asking if you wanted to do so or not
--batch                             Never ask for user input, use the default behaviour.
--no-color                          Do not use colors in the output.
--wp-content-dir <wp content dir>   WPScan try to find the content directory (ie wp-content) by scanning the index page, however you can specified it.
                                    Subdirectories are allowed.
--wp-plugins-dir <wp plugins dir>   Same thing than --wp-content-dir but for the plugins directory.
                                    If not supplied, WPScan will use wp-content-dir/plugins. Subdirectories are allowed
--proxy <[protocol://]host:port>    Supply a proxy. HTTP, SOCKS4 SOCKS4A and SOCKS5 are supported.
                                    If no protocol is given (format host:port), HTTP will be used.
--proxy-auth <username:password>    Supply the proxy login credentials.
--basic-auth <username:password>    Set the HTTP Basic authentication.
--wordlist | -w <wordlist>          Supply a wordlist for the password brute forcer.
--username | -U <username>          Only brute force the supplied username.
--usernames     <path-to-file>      Only brute force the usernames from the file.
--threads  | -t <number of threads> The number of threads to use when multi-threading requests.
--cache-ttl       <cache-ttl>       Typhoeus cache TTL.
--request-timeout <request-timeout> Request Timeout.
--connect-timeout <connect-timeout> Connect Timeout.
--max-threads     <max-threads>     Maximum Threads.
--help     | -h                     This help screen.
--verbose  | -v                     Verbose output.
--version                           Output the current version and exit.
Golismero

Golismero

Cos’è Golismero

Golismero è un tool di analisi orientato alla scansione di applicazioni web capace di rilevare vulnerabilità “a tutto tondo”.

Come funziona

Esegue una scansione utilizzando una serie di tool separati:

  • Attacchi di forza bruta (bruteforce)
    • brute_directories: Tenta di scoprire directory nascoste
    • brute_dns: Tenta di scoprire dns nascosti (DNS Brute)
    • brute_url_extensions: Tenta di scoprire file (Brute estenzione)
    • brute_url_permutations Tenta di scoprire file (Brute permutazione)
    • brute_url_predictables Tenta di scoprire file (Brute prevedibile)
    • brute_url_prefixes: Tenta di scoprire file (Brute prefisso)
    • brute_url_suffixes: Tenta di scoprire file (Brute suffisso)
  • Nikto
  • Nmap
  • Openvas
  • Plecost: Analizza le vulnerabilità di wordpress
  • sslscan: Esegue un’analisi dei certificati ssl
  • zone_transfer: Trova ed esegue exploit sulle vulnerabilità DNS

Per eseguirlo basta digitare in terminale:

golismero scan http://www.dominio.xyz
golismero scan 192.168.1.1
golismero scan -i [directory/file_di_input] -o [directory/file_di_output]

Help

golismero -h
usage: golismero.py COMMAND [TARGETS...] [--options]

  SCAN:
    Perform a vulnerability scan on the given targets. Optionally import
    results from other tools and write a report. The arguments that follow may
    be domain names, IP addresses or web pages.

  PROFILES:
    Show a list of available config profiles. This command takes no arguments.

  PLUGINS:
    Show a list of available plugins. This command takes no arguments.

  INFO:
    Show detailed information on a given plugin. The arguments that follow are
    the plugin IDs. You can use glob-style wildcards.

  REPORT:
    Write a report from an earlier scan. This command takes no arguments.
    To specify output files use the -o switch.

  IMPORT:
    Import results from other tools and optionally write a report, but don't
    scan the targets. This command takes no arguments. To specify input files
    use the -i switch.

  DUMP:
    Dump the database from an earlier scan in SQL format. This command takes no
    arguments. To specify output files use the -o switch.

  UPDATE:
    Update GoLismero to the latest version. Requires Git to be installed and
    available in the PATH. This command takes no arguments.

examples:

  scan a website and show the results on screen:
    golismero.py scan http://www.example.com

  grab Nmap results, scan all hosts found and write an HTML report:
    golismero.py scan -i nmap_output.xml -o report.html

  grab results from OpenVAS and show them on screen, but don't scan anything:
    golismero.py import -i openvas_output.xml

  show a list of all available configuration profiles:
    golismero.py profiles

  show a list of all available plugins:
    golismero.py plugins

  show information on all bruteforcer plugins:
    golismero.py info brute_*

  dump the database from a previous scan:
    golismero.py dump -db example.db -o dump.sql
Nikto

Nikto

Cos’è Nikto

Nikto è uno scanner per Web Server capace di rilevare programmi e file potenzialmente pericolosi, verifica delle versioni obsolete, controllo degli elementi di configurazione e identificazione delle caratteristiche del server e dei software installati.

A cosa serve

Nikto sostanzialmente serve a determinare se un server è vulnerabile sotto uno o più aspetti sopracitati, in modo da rilevare e fissare eventuali falle. E’ facile intuire che oltre a un uso etico può essere utilizzato per compiere illeciti.

Come usarlo

Prima di avviare nikto è buona norma aggiornarlo dunque eseguiamo il comando:

nikto -update

Per una semplice scansione di un host sulla porta 80 eseguiamo in terminale il comando:

nikto -h https://www.dominio.xyz

Nel caso in cui vogliamo specificare una porta differente basta inserire -p subito dopo il comando precedente seguito dalla porta:

nikto -h https://www.dominio.xyz -p 789

Nel caso in cui vogliamo scansionare piu porte:

nikto -h https://www.dominio.xyz -p 80,127,789

E’ possibile eseguire solo alcune scansioni, per fare questo basta inserire -Tuning oppure -t seguito dal numero o lettera riguardante la tipologia di scansione da eseguire:

  • 1     Interesting File / Seen in logs
  • 2     Misconfiguration / Default File
  • 3     Information Disclosure / File utili ad un attacco
  • 4     Injection (XSS/Script/HTML)
  • 5     Remote File Retrieval – All’interno di file root
  • 6     Denial of Service
  • 7     Remote File Retrieval – Server Wide
  • 8     Command Execution / Remote Shell
  • 9     SQL Injection
  • 0     File Upload
  • a     Bai-passare l’autenticazione
  • b     Software Identification
  • c     Remote Source Inclusion
  • d     WebService
  • e     Administrative Console
  • x     Inverte l’opzione Tuning (-t) ossia tutte le tipologie di scansioni tranne quella indicata dopo x

Eseguire un test Denial of Service

nikto -h -Tuning 6 https://www.dominio.xyz

Eseguire tutto tranne un test Denial of Service

nikto -h -t x 6 https://www.dominio.xyz

Nel caso in cui vogliamo eseguire una scansione salvando i risultati e controllare in terminale l’andamento della scansione (In questo caso un SQL Inj.)

nikto -Display V -o risultati.html -Format htm -t 9 -h domindio.xyz

Nikto Help

   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