3D - Grafik und Animation
Software
Joomla
Internet
Projekte
Google / 4Stats Statistik
Anmelden
Finden
| Sicherheitslücke in EasyBook |
|
|
Leider ist eine Sicherheitslücke in dem von mir bevorzugten Gästebuch für Joomla aufgetreten, die es Angreifern erlaubt beliebigen HTML- und Scriptcode einzuspeisen. EasyBook ist ein beliebtes Gästebuchsystem für Joomla (Content - Management - System). Details dazu siehe z.B.: Sicherheitslücke in EasyBook Wie funktioniert das Ganze?Der Angreifer macht einen Eintrag in das Gästebuch. Mit diesem Eintrag wird der Programmcode eingeschleust. Dieser steht dann auch in der Datenbank. Wird nun dieses Feld als Link angezeigt - wird ein JAVA-Script, welches z.B. als MouseOver angehängt ist, im Browser der Besucher ausgeführt, die mit der Maus über dieses Feld gehen. Für meinen Test habe ich ein simples Alert() drangehängt, leider hat das funktioniert Ich möchte mir lieber nicht ausmalen, was das so möglich gewesen wäre ... Allerdings ist mein Gästebuch durch ein Captcha und eine zwingend vorgeschriebene Freigabe durch den Admin geschützt. Ich hatte mich schon gewundert über den seltsamen Anstieg der Seitenaufrufe für mein Gästebuch auf einer meiner Seiten, bei denen dann aber kein einziger Eintrag getätigt wurde. Damit kann ich auch nicht sicher sein, dass es sich dabei um versuchte Angriffe gehandelt hat. Die Vermutung liegt aber nahe. Wie kann ich mich dagegen schützen?Ich habe zunächst mal die ganze Seite offline geschaltet, um das Problem zu analysieren. Feld Homepage deaktivierenDas betroffene Feld zu deaktivieren, bis ein Patch für dieses Sicherheitsproblem kommt ist für das Erste eine gute Lösung. Leider ist dieses Patch noch nicht in Aussicht, da der Entwickler z.Z. noch weitere Baustellen, u.a. Zivildienst hat. Automatisches Veröffentlichen ausschaltenDas automatische Veröffentlichten auszuschalten, ist nur die Halbe Miete. Vor der Freigabe sollte dann unbedingt der Eintrag kontrolliert werden und das unerwünschte Script entfernt werden, wenn eins vorhanden ist. Vorsicht, im Backend werden auch Links angezeigt, d.h. je nach "Bösartigkeit" des Scriptes würde bei der Kontrolle im Backend der Ärger schon losgehen, d.h. in diesem Fall muss der Script direkt in der Datenbank bereinigt werden, ist also nicht für jeden geeignet. Eintrag (im Feld Homepage) beim Abspeichern in die Datenbank bereinigenDas Abspeichern der Daten in die Datenbank erfolgt in Joomla über das Model-Viewer-Controller - Prinzip. Bei einem neuen Eintrag in das Gästebuch (Easybook) kann im Modell in der Funktion: Validierung ( function validate(&$data)) Model: entry.php Zeile: 189) eine zusätzliche Plausibilisierung der Daten erfolgen. Hier habe ich den Code:
// wenn eine Homepage eingetragen wurde, pruefen
if(!empty($data['gbpage']))
{
$muster_url = '/^[a-zA-Z0-9]{3,100}\.[a-zA-Z]{2,5}[a-zA-Z0-9\?\=\&\.\/\%\:\-\+]{0,100}$/';
if (preg_match($muster_url, $data['gbpage']) == 0){
$data['gbcomment'] ='Versuch Code einzubinden: '.$data['gbpage'];
$data['gbpage'] ='';
}
}
nach der Zeile 222 hinzugefügt. Entspricht die eingegebene URL nicht dem Schema, wird der Eintrag nach Kommentar weggeschrieben und anschl. das Feld Homepage geleert. Das Wegschreiben in den Kommentar bietet sich nur an, wenn die Einträge nicht sofort veröffentlicht werden. Wie gut meine Gültigkeitsprüfung für URL´s ist weiss ich nicht, deshalb habe ich die ggf. gefährlichen Einträge in das Feld Comment weggeschrieben, dann kann ich da noch nachbessern. Soweit ich das bis jetzt geprüft habe sind leider auch alle Messenger-Felder potentiell gefährdet. Easybook Schwachstellen XSS (auf englisch)Prinzipiell könnte ich auch jedes andere Feld prüfen, für das es ein fest definierte Muster gibt. Wie diese Muster für die Felder oben aussehen werde ich ggf. später noch prüfen. Aktuelle zeige ich diese Felder nicht an. BBCodeBBCode mit angehängten Code in der Nachricht selbst, ist schon schwieriger zu entfernen. Das folgende Beispiel (Quelle: jeffchannel.com Easybook Schwachstellen XSS (auf englisch)) [img]fake.png" onerror="alert(String.fromCharCode(88,83,83))[/img]direkt im Text eingetragen, die Optionen: BBCode zulassen und Abbildungen / Bilder zulassen müssen dazu beide erlaubt sein, führt bei Aufruf der Seite zur Ausführung des Codes. Hier wird "nur" eine Message-Box mit dem Text "XXS" ausgegeben, aber echte Angreifer werden sich wohl kaum auf eine nervige Meldung beschränken. Hier ist so ziemlich alles möglich, was man in einem JavaScript programmieren kann. Ich erlaube aktuell auch keinen BBCode, damit bin ich hier auf der sicheren Seite. Als Programmierer interessiert mich allerdings auch hierfür eine Lösung. Ein erster Ansatz ist das Durchsuchen des Textes nach [img] und [/img] und die Prüfung des Textes dazwischen auf ein definiertes Muster. Alternativ dazu könnte ich auch alle "bösen" Texte, wie onError, onMouseOver usw. wegfiltern. Darüber denke ich dann nochmal in Ruhe nach. Gefahren für die Besucher einer Seite, die so angegriffen wird?Angriffe solcher Art sind keine unmittelbare Gefahr für die normalen Besucher einer Seite. Besucher, die sich auf der Seite angemeldet haben sind allerdings prinzipiell gefährdet, da ihre Accounts einfach übernommen werden können. Besonders sind Administratoren und Benutzer mit erweiterten Zugriffsrechten gefährdet, weil hier der Angreifer diese Berechtigungen im Falle einer Übernahme gleich mit übernimmt und diese zu seinen Zwecken missbrauchen kann. ZusammenfassungWer EaysBook aktuell einsetzt, sollte vorübergehend folgende Optionen deaktivieren:
PSWenn Sie mein Gästebuch vermissen sollten! Hier war nie eins. Wenn mir jemand eine Nachricht hinterlassen möchte gibt es ja E-Mails und ein Kontaktformular. Wenn da mehrere Anfragen kämen, würde ich natürlich auch ein Gästebuch installieren und zwar das von EasyBook, nur eben mit der Anpassung für die Homepage und ohne die übrigen gefährdeten Felder, aber eben nur, wenn auch ein paar Leute etwas reinschreiben wollen. Nur für bösartige Robots und Spammer muss ich das nun wirklich nicht tun. PS2: Hilfe für EasyBookEigentlich wollte ich ja mich da irgendwo anmelden, und meine Unterstützung anbieten, aber irgendwie wußte ich nicht wo und wie. Leider ist auch meine Zeit begrenzt und mein Sonntag ist bereits für die Analyse des Problems draufgegangen, trotzdem werde ich es dieser Tage nochmal versuchen, kann ja nicht so schwer sein da einen passenden Link zu finden. |
Interessantes
Gedanken zu ...
Joomla
- Sicherheitslücke in EasyBook
- Joomla - Downloads
- Joomla-Kontaktformular mit Eintrag in die Datenbank
- Joomla eigene Beiträge verlinken
- Ugrade auf JoomlaWatch 1.2.9
- Joomla - Voting geht nicht
- mce_src - Editor TinyMCE ist nicht mehr W3C-konform
- Content Management System (CMS)
- Link zu mir
- Joomla - Modul
- Martina Major - Webdesign | Newsletter - Communicater
- Plugin Titel ändern in Joomla 1.5
- Newsfeed
- YSlow - Add-on-Firefox
- Martina Major - Webdesign | Favicon
