Archive for the ‘Internet’ Category

XSS vulnerability on vimeo.com

Last week I discovered a cross-site scripting vulnerability on the famous video platform vimeo.com. It is based in the search-module, which uses some kind of CSRF-protection (which doesn’t work pretty well, by the way). The problem is that search-links are only valid once and when you try to request the page a second time, an error will be raised. So, what’s the problem? Vimeo outputs the search term unfiltered – I guess you know how that story goes…

The sad thing about this bug is that I reported it seven days ago to the vimeo-team but didn’t get any response yet (except for an email-address via their team’s twitter-account). I’ve also recorded a screencast demonstrating the problem. Maybe some publicity will get the team to fix the bug.

Vimeo XSS vulnerability from Lukas Klein on Vimeo.

Note: The “feature” doesn’t handle old URLs like I said in the video, it’s basically something like a CSRF-protection (whyever), so that the link only works one time.

Thoughts on privacy

Yesterday a scientist from Lüneburg published details about his webcrawler which he used to crawl about 1.6 million datasets from the social network SchuelerVZ including the name, the name of the school, the school id and the url of the profile picture. So, how did he do this? He created over 800 accounts which he used to bypass the request-limits. He and the media called this a “Datenleck”.

You have to know that all the information he crawled is visible to everyone who’s in possession of an user account. He hasn’t bypassed any data protection mechanisms except for the request-limit. Is this really a “Datenleck”? I don’t think so. I think it’s rather a problem of our society than of SchuelerVZ. On the one hand we’re all trying to hide our private life from our neighbours by building fences and so on, but on the other hand we’re publishing everything, really everything, to social networks like Twitter or the mentioned SchuelerVZ. So why are the people complaining that someone copied the data they voluntarily published to the web? In my opinion you have to accept that someone can copy the data you decide to publish. If a human can read the data, a crawler can do so, too. There’s no effective way of preventing data from beeing accessed by non-humans. Of course you can use captchas and other techniques, but I think they’re rather annoying than helpful. Another method are request-limits like those that SchuelerVZ already uses. But as you can see, it’s easy to bypass them. You could also limit the requests per IP, but that makes the crawler in the best case just slower, in the worst it spreads over multiple hosts with different IPs.

Instead of thinking about how data can be hidden from robots, we should think about what data we are publishing to the web. Even if this means an additional cost of educational work, the result will be much more satisfying than any existing or upcoming turing-test.

T-Shirt-Aktion von 3Dsupply

Der in der Netzwelt schon oft positiv aufgefallene Anbieter 3Dsupply hat eine Aktion am laufen, bei der sie ein frei wählbares T-Shirt verschenken. Ich finde die Aktion richtig super und nehme natürlich auch teil! Ausgesucht habe ich mir das “Das Schlimmste an Zensur ist…”-T-Shirt ausgesucht, welches ich mir eh anschaffen wollte. Der Spruch bringt es auf den Punkt und ist eine gute Zusammenfassung der Zensursula-Censilia-T-Shirts.

Hier könnt ihr auch an der Aktion teilnehmen.

XSS in Etherpad

Es ist wieder soweit, es gibt von einer XSS-Lücke zu berichten. Diesesmal aber keine spezielle Website, sondern gleich ganz viele. Nämlich alle, die Etherpad einsetzen. Das Team ist informiert, nur reagieren tut keiner. Die offizielle Seite schliesst ja eh bald.

Entdeckt wurde der Bug übrigens von @NineBerry im Piratenpad. Also, machen wir es kurz, die Lücke befindet sich in der Datei /src/static/js/broadcast_slider.js in Zeile 145. Dieser Codebereich sorgt für die Ausgabe der Autorenliste im Timeslider. Unter anderem wird dort für Autoren, die ihren Namen angegeben haben, folgender Code ausgeführt:

        var nametd = $('<td></td>');
        nametd.html(author.name || "unnamed");

Wie man in der zweiten Zeile sehen kann, wird der author.name unescaped als HTML in das Element gepackt.

An alle, die einen Etherpad Server betreiben: Ihr müsst nur diese Zeile ändern in

        nametd.text(author.name || "unnamed");

, also aus dem .html ein .text machen! Dann wird der Name nicht mehr ungefiltert ausgegeben.

Google Checkout und dubiose iPhonianer

Hui, es ist da, das iPhone OS 4! Also zumindest die Featurelist und die Developer-Version. Um letztere dreht sich auch dieser Blogpost, zumindest als Einleitung. Ach whatever, jedenfalls hat gerade @michelb einen Link auf Twitter getweetet, der zu einem “UDID activation service” für das erwähnte iPhone OS 4 führt. Laut der Seite kann man sich bei denen sein iPhone für die OS4-Beta freischalten lassen und so die $79 Developer-Account-Gebühr bei Apple sparen. Aber nur auf den ersten Blick.

Auf den zweiten springt einem nämlich folgender Textausschnitt ins Auge:

An Example UDID is: SXQncyB0aW1lIGZvciBJViB0byB1bmxlYXNoIGl0J3MgcG93ZXJzLg==

was daran so auffällig ist? Die =-Zeichen, die auf eine Base64-Verschlüsselung hindeuten. Entschlüsselt steht dort dann

It’s time for IV to unleash it’s powers.

wer oder was auch immer diese[r/s] “IV” ist. Und auch auf der FAQ-Seite gibt es so einige komische Sachen. Als erstes stellt man fest, dass der auf den ersten Blick kostenlos aussehende Service garnicht so kostenlos ist:

We do all this for a one-time fee of $10.

Tjoa, aus der Traum vom unkomplizierten kostenlosen iPhone OS 4. Weiterhin steht dort noch

Q. I live in the U.S. Do I have to use ATT to use Beta 4.0?
A. Absolutely. Failure to do so will give you a $500 paperweight.

äh ja, wünschen wir uns nicht alle einen $500 Briefbeschwerer?

Ok, von der Seite lassen wir dann mal besser die Finger. Aber etwas anderes ist doch noch ganz interessant: Die Seite nutzt Google Checkout. Ich hab das noch nie benutzt und weiß auch recht wenig darüber, allerdings ist mir folgender Codeschnippsel ins Auge gesprungen:

<input name="item_price_1" value="10.00" type="hidden">
<input name="item_currency_1" value="USD" type="hidden">

Moment, kann man da nicht, mit Firebug… Ja, kann man:

Secure checkout with Google

(klick zum größer machen)

Und schon wär’ man Millionär oder wie? Ich kenn mich wie gesagt mit Google Checkout nicht so wirklich aus, hat da einer Erfahrungen? Beim Heise Live-Hacking auf der CeBit hab’ ich mal erfahren, dass jeder weitere Schritt jetzt nicht mehr so ganz legal wäre, also lass ich das mit dem Ausprobieren mal lieber.

Django auf dem iPod touch

Einige von euch werden wohl einen iPod touch bzw. ein iPod besitzen. Und einige werden ihn/es gejailbreaked haben. Dann kann man nämlich so einige lustige Sachen machen. Die beiden nützlichsten Programme sind – wir ich finde – Terminal und openSSH. Beide jeweils über Cydia installierbar. Nachdem ich das “virtuelle Innenleben” meines iPods gründlich untersucht hatte, dachte ich: “Hey, was ist mit Django?”. Gedacht, getan. Als erstes habe ich über Cydia Python installiert. Dann habe ich mir den Django Tarball heruntergeladen und auf dem Touch extrahiert. Danach habe ich einfach “python setup.py install” aufgerufen – wie gewohnt. Gegen meine Erwartungen verlief alles reibungslos ohne Fehler. Als danach auch noch das Anlegen eines Projekts und das Starten des Dev Servers geklappt hat, wusste ich echt nicht mehr ob ich nun träume oder nicht.

Meine Session dokumentiert:

Lukas–iPod:~ root# pwd
/var/root
Lukas–iPod:~ root# cd Django-1.0.2-final/
Lukas–iPod:~/Django-1.0.2-final root# ls
AUTHORS  INSTALL  LICENSE  MANIFEST.in  PKG-INFO  README  django/  docs/  examples/  extras/  scripts/  setup.cfg  setup.py
Lukas–iPod:~/Django-1.0.2-final root# python setup.py install
running install
running build
running build_py
creating build
[..]
running install_egg_info
Writing /usr/lib/python2.5/site-packages/Django-1.0.2_final-py2.5.egg-info
Lukas–iPod:~/Django-1.0.2-final root# python
Python 2.5.1 (r251:54863, xx/xx/xx, xx:xx:xx)
[GCC 4.2.1 (Based on Apple Inc. build 5555)] on darwin
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import django
>>> django.VERSION
(1, 0, 2, ‘final’, 0)
>>> exit()
Lukas–iPod:~/Django-1.0.2-final root# cd ..
Lukas–iPod:~ root# ls
Django-1.0.2-final/  Library/  Media/
Lukas–iPod:~ root# mkdir djangoprojects
Lukas–iPod:~ root# cd djangoprojects
Lukas–iPod:~/djangoprojects root# django-admin.py startproject firsttest
Lukas–iPod:~/djangoprojects root# cd firsttest/
Lukas–iPod:~/djangoprojects/firsttest root# ls
__init__.py  manage.py  settings.py  urls.py
Lukas–iPod:~/djangoprojects/firsttest root# ./manage.py runserver 0.0.0.0:8000
-sh: ./manage.py: Permission denied
Lukas–iPod:~/djangoprojects/firsttest root# chmod +x manage.py
Lukas–iPod:~/djangoprojects/firsttest root# ./manage.py runserver 0.0.0.0:8000
Validating models…
0 errors found

Django version 1.0.2 final, using settings ‘firsttest.settings’
Development server is running at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[21/Feb/2009 20:24:05] “GET / HTTP/1.1″ 200 2059

Und ein “Beweisbild” gibt es auch noch:

Emojis – Unsinn aus Japan – jetzt auch auf dem iPhone!

Nein, nicht aus Japan. Von Apple. Aber FÜR Japan. Die stehen wohl auf sowas. Gemeint sind diese kleinen Smilie-ähnlichen Bildchen, die jedoch nicht nur Smilies enthalten.

Jedenfalls kann man sich diese Bilder durch ein Easter Egg im iPhone freischalten. Hier zeige ich wie’s geht – auf eigene Verantwortung! Für entstehende seelische Schäden übernehme ich keine Verantwortung!

1. Ladet euch die kostenlose App Spell Number:

Dann müsst ihr sie öffnen. Wer hätte es gedacht. Und da ich Screenshots sooo liebe:

Dann gebt ihr die “geheime” Nummer 9876543.21 ein:

Jetzt beendet ihr die Applikation über den Home-Button und geht in die Einstellungen. Dort geht ihr nach General->Keyboard->International Keyboards->Japanese und aktiviert “Emoji”. Das ganze schön dokumentiert:

Ab jetzt könnt ihr die sinnfreien Bildchen überall verwendet. Klickt dazu bei der Tastatur auf das “International-Symbol” unten links:

Und dann… Augen zu, da sind sie:

Auf den ersten Blick: Ok, kitschige Smilies. Aber denkste! Unten in den Tabs gibts noch mehr, z.B.:

In diesem Sinne: Seht zu wir ihr damit klar kommt :P

EinsLive Ticker Dashboard Widget

ELTDW. Geile Abkürzung. Nein, die ist unpraktisch. Jedenfalls habe ich heute erste Gehversuche mit Dashcode gemacht und herausgekommen ist ein EinsLive Dashboard Widget, welches den Ticker der Website anzeigt. Dadrin stehen so gut wie immer die aktuell spielenden Titel.

Machen wir es kurz, und Bilder sagen eh mehr als 1000 Worte.

Eine schöne Rückseite um die Einstellungen vorzunehmen gibt es natürlich auch:

Aber denkt dran: Die Aktualisierungsrate sollte so hoch wie möglich gewählt sein, um die 1Live Server zu entlasten. 55 Sekunden sind sowohl bei dem Widget als auch auf einslive.de Standard.

Fast hätte ich ihn vergessen: Der Download-Link!

(Hilfe), GDrive kommt!

Es passiert ja des öfteren, dass die absurdesten Albträume wahr werden. Doch dass Google jetzt echt einen Dropbox Klon rausbringt…

Es gibt ja dadrüber schon seit mehreren Jahren Gerüchte, doch jetzt scheint es semi-amtlich geworden zu sein: GDrive kommt wohl über die Google Apps, und wird auch auf Deutsch verfügbar sein.

Der “Beweis”: http://pack.google.com/cistrings.js

// Localized product category of GDrive
_CI_messages.CI_GDRIVE_CATEGORY = 'Online-Sicherung und -Speicherung von Dateien';
// Localized short description of GDrive (1st
// of 2 description lines)
_CI_messages.CI_GDRIVE_DESCRIPTION_1 = 'GDrive bietet eine zuverlässige Speicherung Ihrer Dateien, einschließlich Fotos, Musik und Dokumente.';
// Localized short description of GDrive (2nd
// of 2 description lines)
_CI_messages.CI_GDRIVE_DESCRIPTION_2 = 'GDrive ermöglicht Ihnen den Zugriff auf Ihre Dateien von jedem beliebigen Ort zu jeder beliebigen Zeit und von jedem beliebigen Gerät aus, sei es von Ihrem Desktop, Ihrem Webbrowser oder Ihrem Mobiltelefon.';

Und auch für das einschleusen via Apps gibt es einen “Beweis”:

// Header text within the page, shown after GDrive is downloaded and
// installed.
_CI_ciintText.ci_gdrive.PART_OF_PACK = 'GDrive ist Teil von Google Pack';
// Text above the eula on the integrated eula page for GDrive.
_CI_ciintText.ci_gdrive.PACK_WILL_INSTALL = 'Installieren von GDrive mit Google Updater';

[thx]

Die YouTube Benutzung ist illegal. Oder so.

Wenn man sich mal die YouTube terms of use anguckt stößt man auf so manche merkwürdige Passagen. So zum Beispiel unter 5 – “Your Use of Content on the Site”:

Content on the Website is provided to you AS IS for your information and personal use only and may not be downloaded, copied, reproduced, distributed, transmitted, broadcast, displayed, sold, licensed, or otherwise exploited for any other purposes whatsoever without the prior written consent of the respective owners.

Auf Deutsch: “Alles meins, du darfst nichts”. Was ich aber viel fragwürdiger finde: Da steht, dass man bei denen nichts “downloaden”, also herunterladen darf. Nur was macht denn ein Browser? Genau! Er lädt Daten von denen herunter. Sonst wäre YouTube leer. Also nichts. Die terms of use dürfte man irgendwie auch nicht lesen, denn auch diese wurden vom Browser temporär heruntergeladen.

Ich tauch dann mal unter bevor die erste Abmahnung kommt, denn ich hab nicht nur die terms of use heruntergeladen, sondern auch noch gecopied. Ganz böse also.

Nachtrag: Ich hatte den Koffer schon gepackt, da hab ich mir das nochmal durchgelesen. WHAT-THE-FUCK?! Man darf die Informationen nicht “displayen”, also anzeigen? Ist Google echt so stark von der Finanzkrise betroffen, dass sie jetzt schon theoretisch JEDEN besucher der Seite abmahnen müssen?!