Xup.in schließt mehrere XSS Lücken

Xup.in ist seit mehren Jahren ein recht beliebter Filehoster, das liegt vor allem an der simplen Bedienungsoberfläche, welche trotzdem über viele Funktionen verfügt. So kann man alle Dateitypen hochladen und diese werden auch direkt wiedergegeben, bspw. Bilder angezeigt. Außerdem kann man Ordner anlegen oder Uploads mit einem Passwort schützen.

Bei einem Upload einer Datei überraschte uns eine Fehlermeldung, dessen Fehlertext Teil eines Parameters war. Der erste Verdacht bestätigte sich und wir wurden neugierig, abschließend endete der Upload in mehreren aufgedeckten Sicherheitslücken.

Wir waren erstaunt, wie schnell man entsprechende Hinweise berücksichtigte. Oft sind Filehoster für recht langsame Latenzzeiten bekannt, insbesondere in dem Bereich Abuse, oder Meldung von sonstigen Hinweise, wir waren in diesem Fall jedoch absolut positiv überrascht.

Bei einem Upload einer Datei eines Abends wurden wir auf eine Auffälligkeit auf der Webseite (xup.in) aufmerksam, welche Cross Site Scripting (XSS) ermöglichte. Abschließend fanden wir noch jeweils eine Post-XSS im Kontaktscript, sowie in der Member-internen Suche, welche auf ungefilterte Parameter schließen ließ.

Während weiteren Tests entdeckten wir eine XSS der etwas anderen Art: Beim Anlegen eines Ordners bzw. beim Hochladen einer Datei in einen Ordner wurde der folgende Parameter an die URL angehängt:

1
&album=YTo0OntpOjA7czo1OiIxNzAzNCI7aToxO3M6MzA6IjxpbWcgc3JjPScnIG9uZXJyb3I9YWxlcnQoMSkgPiI7aToyO2k6MTAwMDtpOjM7czoxMDoiODkyZjc5ZDUxOSI7fQ==

Offensichtlich wurden Daten per Base64 kodiert, und der Webseite übergeben. Ein Aufruf des kleinen Programms “base64 -d” zeigte uns folgendes Ergebnis:

1
2
3
Internet@Wache ~ % base64 -d
YTo0OntpOjA7czo1OiIxNzAzNCI7aToxO3M6MzA6IjxpbWcgc3JjPScnIG9uZXJyb3I9YWxlcnQoMSkgPiI7aToyO2k6MTAwMDtpOjM7czoxMDoiODkyZjc5ZDUxOSI7fQ== ^D
a:4:{i:0;s:5:"17034";i:1;s:30:"<img src='' onerror=alert(1) >";i:2;i:1000;i:3;s:10:"892f79d519";}

Wer schon einmal in PHP programmiert hat, dem könnte auffallen, dass es sich bei dem ausgebenen String um die Ausgabe der “serialize()”-Funktion handelt. Etwas leserlicher wird folgende Darstellung sein:

1
2
3
4
5
6
array (
  0 => '17034',
  1 => '<img src='' onerror=alert(1) >',
  2 => 1000,
  3 => '892f79d519',
)

In diesem Code haben wir das Beispiel-Exploit bereits im entsprechenden Feld eingetragen gehabt. Die XSS war in dieser Hinsicht sogar interessant, da diese an den XSS-Filtern der modernen Browser ohne Probleme vorbeigeschmuggelt werden konnte. Angreifer hätten so die Session ihrer Opfer übernehmen können, oder Phishing bzw. Drive-By Downloads ausführen können.

Wir meldeten die Lücken mit den entsprechenden Informationen am Abend vom 10.07.2013 und erhielten bereits am nächsten Morgen (11.07.2013) eine freundliche Antwort, dass man die Sicherheitslücken beheben werde. Nach kurzen 2 1/2 Stunden erhielten wir eine Rückmeldung, dass die genannten und weitere Lücken behoben wurden.

Wir danken dem Xup.in-Team für diese freundliche Kommunikation bzw. schnellen Fixes und wünschen allen Benutzern von Xup.in einen angenehmen Besuch bei diesem Filehoster.

Das Team der Internetwache.org

Screenshots

Screenshot der ersten Cross Site Scripting Lücke

Screenshot der zweiten Cross Site Scripting Lücke

Screenshot der dritten Cross Site Scripting Lücke

Screenshot der vierten Cross Site Scripting Lücke