SSLyze - SSL Server Einstellungen per Kommandozeile überprüfen

Die richtigen SSL/TLS Einstellungen für Server zu finden ist nicht immer leicht. Eine etablierte Prüfvariante wird von SSL Labs gestellt. Auf deren Webseite können Server auf Herz und Nieren geprüft werden und bekommen im Optimalfall ein A+ Rating, wenn Techniken wie beispielsweise HTTP Strict Transport Security aktiv sind.

Seit kurzen stellt Qualys mit ssllabs-scan ein Tool auf Github zur Verfügung, welches einen Server Test via Kommandozeile erlaubt. Das Tool basiert auf der vorhandenen Technik und greift somit auch immer auf die Qualys Server zurück.

Als Alternative bietet sich das ebenfalls etablierte Phyton Script SSLyze an. Anders als ssllabs-scan unterstützt der SSL Scanner bereits SMTP, XMPP, LDAP, POP, IMAP, RDP und FTP und steht auch für Windows Nutzer zur Verfügung.

Download SSLyze

SSLyze unter Ubuntu Server 14.04, 16.04, 20.04 LTS verwenden

Installation

sudo apt install python-pip
pip install --upgrade setuptools
pip install sslyze
pip install --upgrade setuptools
pip install --upgrade sslyze
python -m sslyze --regular www.yahoo.com:443 www.google.com "[2607:f8b0:400a:807::2004]:443"

Alle Funktionen anzeigen

./sslyze.py --help

     Usage: sslyze.py [options] target1.com target2.com:443 etc...

Normaler Scan

Prüfung auf die Protokolle SSLv2.0, SSLv3.0, TLS1.0/1.1/1.2 Heartbleed, CipherSuites und andere Einstellungen.

Die reguläre Methode fast quasi eine Befehlskette zusammen "--sslv2 --sslv3 --tlsv1 --reneg --resum --certinfo=basic --hide_rejected_ciphers --http_get"

python -m sslyze --regular url.de:443

REGISTERING AVAILABLE PLUGINS
 -----------------------------
  PluginSessionRenegotiation
  PluginCompression
  PluginSessionResumption
  PluginHSTS
  PluginOpenSSLCipherSuites
  PluginChromeSha1Deprecation
  PluginCertInfo
  PluginHeartbleed

 CHECKING HOST(S) AVAILABILITY
 -----------------------------

   url.de:443                        => 127.0.0.1:443

 SCAN RESULTS FOR url.DE:443 - 127.0.0.1:443
 ---------------------------------------------------

  Deflate Compression:
      OK - Compression disabled

  Session Renegotiation:
      Client-initiated Renegotiations:   OK - Rejected
      Secure Renegotiation:              OK - Supported

  OpenSSL Heartbleed:
      OK - Not vulnerable to Heartbleed

  Session Resumption:
      With Session IDs:                  OK - Supported (5 successful, 0 failed, 0 errors, 5 total attempts).
      With TLS Session Tickets:          OK - Supported

  Certificate - Content:
      SHA1 Fingerprint:                  xxxxxxxxxxxxxxxx
      Common Name:                       url.com
      Issuer:                            url Internet xxxxxxxxx G2
      Serial Number:                     xxxxxxxxxxxxx
      Not Before:                        
      Not After:                         
      Signature Algorithm:               sha1WithRSAEncryption
      Key Size:                          2048 bit
      Exponent:                          xxxxxx (0x10001)
      X509v3 Subject Alternative Name:
 * Certificate - Trust:
      Hostname Validation:               FAILED - Certificate does NOT match url.de
      "Mozilla NSS - 08/2014" CA Store:  OK - Certificate is trusted
      "Microsoft - 08/2014" CA Store:    OK - Certificate is trusted
      "Apple - OS X 10.9.4" CA Store:    OK - Certificate is trusted
      "Java 6 - Update 65" CA Store:     OK - Certificate is trusted
      Certificate Chain Received:        ['url.com', ']

  Certificate - OCSP Stapling:
      NOT SUPPORTED - Server did not send back an OCSP response.

  SSLV2 Cipher Suites:
      Server rejected all cipher suites.

...........

Mit dem Zusatz "--hide_rejected_ciphers" lassen sich abgelehnte CipherSuites ausblenden, was die Übersicht erhöht.

Scan auf SHA-1

Eine ebenso praktische Scanvariante ist der Test auf SHA-1.

Die Hasfunktion SHA-1 wird beispielsweise von Google Chrome inzwischen als unsicher gemeldet.

python -m sslyze --chrome_sha1 url.de:443

 REGISTERING AVAILABLE PLUGINS
 -----------------------------

  PluginSessionRenegotiation
  PluginCompression
  PluginSessionResumption
  PluginHSTS
  PluginOpenSSLCipherSuites
  PluginChromeSha1Deprecation
  PluginCertInfo
  PluginHeartbleed

 CHECKING HOST(S) AVAILABILITY
 -----------------------------

  url.de:443                        => xxxxxxxxx:443

 SCAN RESULTS FOR url.DE:443 - xxxxxxxx:443
 ------------------------------------------------

  Google Chrome SHA-1 Deprecation Status:
      OK - Certificate chain does not contain any SHA-1 certificate.

Prüfung auf  HTTP Strict Transport Security HSTS Unterstützung

Auch das bereits oben erwähnte HSTS lässt sich überprüfen.

python -m sslyze --hsts url.de:443

Test auf StartTLS für SMTP oder XMPP Server

Gleiches gilt für XMPP oder SMTP Server.

python -m sslyze --starttls=smtp url

python -m sslyze --starttls=xmpp url

Zu den genannten Befehlen gibt es noch zig weitere Möglichkeiten SSL Server auf Konfiguration zu testen. Hier sei für alle Funktionen auf die Hilfe verwiesen, welche alle Befehle auflistet und erklärt. (Die Scanausgaben wurden zugunsten der Übersicht gekürzt).

Fazit

Anders als SSL Lab zeigt SSLyze kein Ranking und macht keine Überprüfung auf Browserunterstützung, dafür werden mehr Protokolle unterstützt. Je nach Einsatzgebiet werden wohl beide Tools benötigt. Auf einem Server ohne Browser und Co bietet sich SSLyze natürlich an.

Das Tool ist auf gängigen Linux Distributionen wie Kali Linux, die für Pentesting und andere Sicherheitschecks verwendet werden, mit an Bord.

Eine Übersicht, auf welche Wege SSL/TLS Cipher Suites gestetet werden können, bietet Oswap.

WPScan - Wordpress Schwachstellen Scanner auf Ubuntu installieren

Eine der meistverwendeten Blogsysteme im Netz ist sicherlich Wordpress. Wie so oft bei beliebter Software, ist Wordpress auch ein begehrtes Angriffsziel für Hacker und Co.

Um diesen vorzugreifen ist ein regelmäßiger Test auf Sicherheitslücken sinnvoll. Ein perfektes Tool für solche Penetrationstests ist WPScan. Der WordPress Security Scanner ist auf bekannten Sicherheitsdistributionen wie Kali Linux oder BackBox vorhanden, lässt sich aber auch recht einfach auf einem Ubuntu Server 14.04 in Betrieb nehmen.

wpscan

Installation WordPress Security Scanner auf Ubuntu Server 14.04 LTS

Zunächst wird Ruby benötigt. Damit die Installation aktuell ist, wird dazu das Brightbox Repository verwendet. Danach werden weitere Pakete installiert, um dann den WPScanner via git zu laden.

Installation

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get install ruby2.2 ruby2.2-dev git libxml2 libxml2-dev libxslt1-dev libcurl4-gnutls-dev

 

WPScan von Github herunterladen

sudo git clone https://github.com/wpscanteam/wpscan.git
cd wpscan/
sudo su
   gem install bundler && bundle install --without test

Successfully installed bundler-1.8.3
Parsing documentation for bundler-1.8.3
Done installing documentation for bundler after 3 seconds
1 gem installed
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root users on this machine.
Fetching gem metadata from https://rubygems.org/.........
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Installing addressable 2.3.7
Installing ffi 1.9.6
Installing ethon 0.7.3
Installing json 1.8.2
Installing mini_portile 0.6.2
Installing nokogiri 1.6.6.2
Installing ruby-progressbar 1.7.1
Installing terminal-table 1.4.5
Installing typhoeus 0.7.1
Using bundler 1.8.3
Bundle complete! 10 Gemfile dependencies, 10 gems now installed.
Gems in the group test were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

Update der WPScan Datenbank

sudo ./wpscan.rb --update
_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.6
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[i] Updating the Database ...
[i] Update completed.

wpscan_logo

Schwachstellen Scan auf installierte Themes oder Plugins

Die Überprüfung einer vorhandenen Wordpress Installation erfolgt über den Befehl --"url" gefolgt von der Scan Methode "--enumerate vt" überprüft in diesem Fall Templates auf Schwachstellen (momentan über 300).

Das "v" steht für den Verbose Mode und gibt etwas mehr Infos auf der Kommandozeile aus.

Ein Scan auf installierte Plugins würde beispielsweise mit dem Schlüssel "--enumerate -vp" gestartet. Hier befinden sich zurzeit über 2000 in der Datenbank.

Als Beispiel habe ich einen Scan auf Sicherheitslücken installierter Themes gewählt.

sudo ./wpscan.rb --url www.url.de --enumerate vt
 
_______________________________________________________________
        __          _______   _____
        \ \        / /  __ \ / ____|
         \ \  /\  / /| |__) | (___   ___  __ _ _ __
          \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
           \  /\  /  | |     ____) | (__| (_| | | | |
            \/  \/   |_|    |_____/ \___|\__,_|_| |_|

        WordPress Security Scanner by the WPScan Team
                       Version 2.6
          Sponsored by Sucuri - https://sucuri.net
   @_WPScan_, @ethicalhack3r, @erwan_lr, pvdl, @_FireFart_
_______________________________________________________________

[+] URL: http://www.url.de/
[+] Started: Thu xxx x xxx:xx:xx xxxx

[+] robots.txt available under: 'http://www.url.de/robots.txt'
[!] The WordPress 'http://www.url.de/readme.html' file exists exposing a version number
[!] Full Path Disclosure (FPD) in: 'http://www.url.de/wp-includes/rss-functions.php'
[+] Interesting header: SERVER: nginx/x.x.x
[+] Interesting header: X-POWERED-BY: PHP/x.x.x
[+] XML-RPC Interface available under: http://www.url.de/xmlrpc.php
[i] This may allow the GHOST vulnerability to be exploited, please see: https://www.rapid7.com/db/modules/auxiliary/scanner/http/wordpress_ghost_scanner

[+] WordPress version 4.0.1 identified from rss generator

[+] Enumerating plugins from passive detection ...
 | 3 plugins found:

[+] Name: 2-click-socialmedia-buttons - v1.6.4
 |  Location: http://www.url.de/wp-content/plugins/2-click-socialmedia-buttons/
 |  Readme: http://www.url.de/wp-content/plugins/2-click-socialmedia-buttons/readme.txt

[+] Name: font-awesome - v3.2.1
 |  Location: http://www.url.de/wp-content/plugins/font-awesome/
 |  Readme: http://www.url.de/wp-content/plugins/font-awesome/readme.txt

[+] Name: redactor - v3.1.45
 |  Location: http://www.url.de/wp-content/plugins/redactor/
 |  Readme: http://www.url.de/wp-content/plugins/redactor/readme.txt

[+] Enumerating installed themes (only vulnerable ones) ...

   Time: 00:01:10 <=================================================================================================================================================> (325 / 325) 100.00% Time: 00:01:10

[+] We found 309 themes:
[+] Name: 5star
 |  Location: http://www.url.de/wp-content/themes/5star/
 |  Style URL: http://www.url.de/wp-content/themes/5star/style.css
 |  Description:

[+] We could not determine a version so all vulnerabilities are printed out

[!] Title: 5star - Templatic Theme CSRF File Upload Vulnerability
    Reference: https://wpvulndb.com/vulnerabilities/7484
    Reference: http://1337day.com/exploit/22091

 

Troubleshooting

Fehlende Rechte bei der Installation von bundler, bringen folgende Meldung zu Tage.

Gelöst werden kann dies beispielsweise mit dem Wechsel in die Root Umgebung.

??? ERROR REPORT TEMPLATE ???????????????????????????????????????????????????????
- What did you do?
- What did you expect to happen?
- What happened instead?

Error details

    Errno::EACCES: Permission denied @ dir_s_mkdir - /scan/wpscan/.bundle
    /usr/lib/ruby/2.2.0/fileutils.rb:252:in `mkdir'
    /usr/lib/ruby/2.2.0/fileutils.rb:252:in `fu_mkdir'
    /usr/lib/ruby/2.2.0/fileutils.rb:226:in `block (2 levels) in mkdir_p'
    /usr/lib/ruby/2.2.0/fileutils.rb:224:in `reverse_each'
    /usr/lib/ruby/2.2.0/fileutils.rb:224:in `block in mkdir_p'
    /usr/lib/ruby/2.2.0/fileutils.rb:210:in `each'
    /usr/lib/ruby/2.2.0/fileutils.rb:210:in `mkdir_p'

Fazit

Wer Wordpress im Einsatz hat, sollte die Installation aktuell halten, Sicherheitsplugins installieren und auf vorhandene Lücken testen. Mit WPScan ist ein brauchbares OpenSource Tool auf Github für einen Penetrationstest vorhanden.