Schwachstellen-Analyse Foren-Profil (User)

Aus THM-Wiki
Wechseln zu: Navigation, Suche
Important.png
Die Seite wird überarbeitet oder erweitert.
Important.png

Der folgende Bericht wurde im Rahmen der Veranstaltung „Web Security“ im Sommersemester 2008 erstellt. Thema dieses Artikels ist die Suche nach Sicherheitslücken innerhalb des eStudy-Moduls „Foren-Profil“ aus Sicht eines Users.

Screenshot forenprofil.jpg


Allgemein

Screenshot forenprofile markiert.jpg

Das Foren-Profil gibt dem Benutzer des Portals zusätzliche Möglichkeiten sich selbst anderen Mitgliedern im Forum zu repräsentieren:

  • über eine Signatur (Bild: blauer Rahmen)

und

  • über einen Avatar (Bild: grüner Rahmen)

Zusätzlich werden dem Beutzer seine abonnierten Boards/Themen angezeigt. Per Vorgabe werden alle eigenen Beiträge automatisch abonniert. (Bild: roter Rahmen)



Identifikation der zu dem Anwendungfall gehörenden Aktionen

Anwendungsfall Signatur

An erster Stelle des Foren-Profils steht die Signatur. Hier gibt es ein Textfeld in das man eine Signatur eintragen kann. Diese wird bei jedem vom Benutzer erstellten Beitrag angefügt.


Die Signatur hat zwei Einschränkungen:

  • maximal 5 Zeilen
  • aber nicht mehr als 600 Zeichen


Man hat die Möglichkeit die Signatur ein oder aus zu blenden. Dies geschieht über die Auswahl einer der Radiobuttons Ja oder Nein.


Anwendungsfall Avatar-Optionen

Hier hat man genau 3 Auswahlmöglichkeiten eines Avatars:

  1. kein Avatar
  2. Portal-Bild
  3. vorinstalliertes Avatar

Punkt 1. - 3. können aus einer Liste ausgewählt werden.

Als zusätzliches Feature bekommt man die Möglichkeit eine alternative Avatarquelle an zu geben.

alternative Avatarquelle

Um diese Option nutzen zu können, muss man in der Liste *Kein-Avatar* auswählen und eine URL zum gewünschten Avatar angeben. Dieser ist auf 120x120 Pixel beschränkt. Möchte man den Avatar abschalten oder einen aus der Liste wählen, muss man die Eingabezeile löschen.


Anwendungsfall Abonnierte Boards/Themen

In diesem Abschnitt des Foren-Profils, bekommt der Benutzer eine Liste von abonnierten Boards/Themen aufgelistet. Für jedes Abonnement wird der Benutzer via E-Mail benachrichtigt, falls jemand auf einen der Einträge antwortet.

Der Benutzer hat hier die Möglichkeit einzelne Abonnements ab zu bestellen.

Per Vorgabe erhält der Benutzer für jedes seiner erstellten Boards/Themen automatisch ein Abonnement. Hier hat er die Wahl, das Auto-Abonnement aus zu stellen.


Identifikation der jeweiligen Zugriffsrechte

Für alle Benutzergruppen gelten hier die selben Regeln. Jeder darf sein Foren-Profil ändern, gemäß der Anwendungsfälle die oben erwähnt wurden.

Fast jede Regel hat seine Ausnahme

In eStudy dürfen Benutzer, die der Gruppe Admin angehören, die Forenprofile anderer Benutzer betrachten und ändern. Dies wird ermöglicht, indem man dem Aufruf von ..../editprofile.php per GET den Parameter user mit entsprechend zugewiesener User-ID übergibt.

Bsp.: http://localhost:10001/forum/editprofile.php?user=4


Für diese Feststellung ergibt sich folgende Zugriffsmatrix:

Zugiffsmatrix Legende
Gruppe/Anwendungsfall Admin Student Dozent Sekretariat Alumnus Schüler Gast
CS x x x x x x x
SS x x x x x x x
CA x x x x x x x
UA x x x x x x x
AA x x x x x x x
EOP x
CS Change Signature
SS Show Signature
CA Change Avatar
UA Unsubscribe Abonnement
AA Auto Abonnement
EOP Edit Others Profile


Suche nach Sicherheitslücken

Hier unterscheide ich zwischen automatisierten und manuellen Verfahren zum auffinden von Sicherheitslücken.

Allgemein

Diese Analyse bezieht sich auf Revision 602 des eStudy Trunk.

Die beiden Dateien die bei allen Tests untersucht werden und für die Abfrage/Änderung des Forenprofils von Intersse sind heißen

  • editprofile.php

und

  • do_editprofile.php

und befinden sich im Verzeichnis ../web/forum/

Vorbereitungen

Avatare als root importieren

Man muss vorhandene Avatare importieren, um eine Liste auswählbarer Avatare im Vorenprofil zu erhalten. Vorallem aber benötigt man den Avatar noavatar.png auf dessen vorhanden sein im Quellcode überprüft wird. Ohne diesen ist es nicht möglich das Feature zu benutzen, welches einem erlaubt einen externen Avatar via einer URL seinem Forenprofil zu zu ordnen. Allerdings ist mir beim Test aufgefallen, das eine zweite Datei namens noavatar.gif beim importieren mit ausgewählt wird. Wird diese beim Import nicht explizit verboten kann man keinen externen Link angeben.

Deswegen habe ich einen entsprechenden Selenese-Test aufgezeichnet, der diesen Fall berücksichtigt und beim Importieren darauf achtet.

  • ../gui-tests/admin/Admin-Wartung-Avatare-Importieren-ohne-noavatar.gif.html


Boards als root anlegen

Um den vollen Umfang meines Moduls testen zu können, musste ich als Benutzer "root", der in der Gruppe "Admin" ist zunächst ein paar Boards erstellen. ( Denn ohne Boards und Foren die man abonnieren kann, kann man auch kein Abo beenden :] ) Ich entschloss mich dazu drei Boards an zu legen (TestBoard, TestBoard2 und TestBoard3).

Um später nicht wieder alles per Hand anlegen zu müssen, habe ich die Schritte um ein Board an zu legen per Selenium-IDE aufgenommen und als Selenesen-Test gespeichert. Diesen habe ich dann zweimal kopiert und die Namen der Boards entsprechend angepasst.

  • ../gui-tests/forum/forum-board-hinzufuegen-TestBoard.html
  • ../gui-tests/forum/forum-board-hinzufuegen-TestBoard2.html
  • ../gui-tests/forum/forum-board-hinzufuegen-TestBoard3.html

Ein entsprechender Test, der ein Board löscht existiert bereits.

Borads als root abonnieren

Benutzer die der Gruppe Admin angehören abonnieren angelegte Boards nicht automatisch. Deshalb musste ich den Benutzer root die angelegten Boards abonnieren lassen. (Der Sinn dieser Aktion erklärt sich später.)

Auch diese Aktion habe ich automatisiert. Für jedes Board gibt es einen entsprechenden Selenesen-Test, der dieses abonniert.

  • ../gui-tests/forum/forum-board-TestBoard-abonnieren.html
  • ../gui-tests/forum/forum-board-TestBoard2-abonnieren.html
  • ../gui-tests/forum/forum-board-TestBoard3-abonnieren.html

Um überprüfen zu können, ob Boards oder Forenthemen abboniert sind oder nicht habe ich zwei zusätzliche Tests aufgenommen.

  • ../gui-tests/user/selenese/profil-forenprofil-boards-abonniert.html
  • ../gui-tests/user/selenese/profil-forenprofil-keine-boards-abonniert.html

Beitrag als root erstellen

Damit ein Benutzer auch was zum Antworten hat, habe ich root einen "Ganz Wichtigen" Eintrag erstellen lassen. Hierzu wiedermal ein Test.

  • ../gui-tests/forum/forum-board-TestBoard-beitrag-GanzWichtig-erstellen.html

Reply als Peter Lustig erstellen

Als Test-Benutzer habe ich mir den existierenden Benutzer "Peter Lustig" (Login-Name: lustig) mit der Gruppenzugehörigkeit "Student" auserwählt. Diesen lasse ich auf einen Beitrag von root Antworten.

  • ../gui-tests/forum/forum-board-TestBoard-beitrag-GanzWichtig-reply-as-peter-lustig.html

Das Board lasse ich lustig anschliessend ebenfalls abonnieren. Dazu bediene ich mich dem bereits vorhandenen selenesen forum-board-TestBoard-abonnieren.html

Für den Nachfolgenden automatischen Test auf Sicherheitslücken lasse ich lustig auch das TestBoard2 abonnieren.


automatisiert

Nach den Vorbereitungen machte ich mich daran automatisierte Sicherheitsscans durch zu führen, die im Paros Proxy integriert sind, um evtl. erste Hinweise auf potentielle Sicherheitslücken zu bekommen.

Weder ein Scan mit einem Aufruf von editprofile.php oder do_editprofile lieferten irgendwelche hinweise.

manuell

Qsicon informativ.png Dieser Abschnitt wird erst ergänzt, wenn die gefundenen Sicherheitslücken im Produktivsystem behoben sind.