Archiv 20. Juli 2006

Donnerstag, 20. Juli 2006

Partyguide: Die Abstimmung

Zurecht werden sich meine Leser seit Montag gefragt haben, wo denn eigentlich nun die versprochenen Resultate der Umfrage unter meinen Leser bleibt?

Klar, werden meine Kritiker sagen: Die Resultate sind niederschmetternd, deshalb veröffentlicht er sie nicht. Falsch. Oder: think eMeidi benötigt noch ein wenig Zeit, um die Resultate zu fälschen. Seine abgrundtiefe Bösheit hat er ja bei drei Partyguide-Hacks unter Beweis gestellt – wieso sollte er hier anders handeln?

Nun, um es kurz zu machen – nichts von alledem ist wahr. Hier sind die Resultate:

  • Ja, such dir endlich ein richtiges Hobby! – 22
  • Nein, ohne Partyguide-Hacks ist das Leben todlangweilig! – 41

Quelle: Resultate der Umfrage

Das Resultat ist nicht berauschend, aber ich hätte nicht gedacht, dass mein Tun bei der Mehrheit der Abstimmenden nicht auf unverständliches Kopfschütteln stösst, wie das Partyguide-Fanboys immer darstellen möchten.

Scripts richtig absichern

Natürlich wäre es lächerlich, derart über die Unfähigkeit der Partyguide-Programmierer herzuziehen, und dann dieselben Böcke zu schiessen wie Oberprogrammierer Jason und seine Argonauten. Ich habe deshalb die bei mir üblichen Sicherheitsstandards auch bei diesem Mini-Script angewendet. Ich schlage vor, dass Jason und seine Scripting-Slaves nun ihre Ohren spitzen und genau mitlesen. Hier steht ganz, ganz, ganz viel wichtiges, wie man sichere Web-Scripts entwickelt (gilt nicht nur für PHP – die grundlegenden Regeln gelten für alle Scriptingsprachen):

  • register_globals = off. Jeder ernstzunehmende PHP-Programmierer, der persönliche Daten von Benutzern in seiner DB liegen hat, muss den entsprechenden Abschnitt im PHP-Manual gelesen haben. Wenn nicht: An die Wand mit ihm.
  • POST und nichts anderes. Die Formulardaten müssen in den $_POST-Variablen daherkommen. Ist das $_POST-Array leer, bricht das Script mit die(); ab. $_REQUEST und $_GET werden nicht beachtet (auf Partyguide übrigens schon …) Dies verhindert, dass Spassvögel wie Kollege fixnetdata (s. unten), die mit wget und GET-Variablen Amok laufen (Script-Kiddie halt), Schaden anrichten können.
  • <input type=“hidden“> Die Variable process des Submit-Buttons muss auch im $_POST-Array vorkommen, sonst ist etwas faul. Es wäre dann zu vermuten, dass die Abfrage nicht von einem Browser aus gesendet wurde.
  • Don’t trust GPC: Alles was von Clients kommt, betrachtet man per se als nicht vertrauenswürdig. Plausiblitätstest sind nötig (besonders beim dritten Partyguide-Hack mangelte es eben gerade an diesem Plausiblitätstest. Motto: „Der Client will das Feld passwort durchsuchen – dann durchsuchen wir es halt und geben es zurück. Er wird schon wissen, wieso er das will“.). Ich speichere also nicht einfach $_POST['value'] direkt in die Datenbank, sondern a) wandle es mit intval(); in einen Integer-Wert um und prüfe dann, ob der Wert 0 oder 1 entspricht. Falls nicht, stirbt das Script mit die();
  • Loggen, loggen, loggen: Man nimmt bei einer solchen Umfrage eben halt auch nicht einfach nur das Abstimmungsresultat entgegen. Ich loggte – sofern alle vorangegangen Tests bestanden wurden – folgende Informationen:
    • Datum & Uhrzeit: Sehr wichtig, vgl. Abschnitt Falschwähler in den Resultaten
    • IP-Adresse: Wer sendet die Anfrage? (beachte hierbei auch $_SERVER['X-FORWARDED-FOR'], das von einigen Proxy-Server mitgesendet wird und die tatsächliche IP-Adresse des Clients enthält. Sowohl bei proxy.unibe.ch wie auch proxy.hispeed.ch wird dieser Wert mitgesendet – von anonymen surfen als keine Spur, wenn auch kaum jemand dieses Feld mitloggt).
    • User Agent: Mit welchem Browser wird abgestimmt?

Der Witzbold von fixnetdata

Keine Ahnung, wer du bist, aber du hast noch viel zu lernen:

  • Zuerst stimmst du manuell 28 Mal ab.
  • Danach zeigst du dein wahres Können, indem du wget bemühst und doch tatsächlich meinst, dass ich GET-Variablen akzeptiere werde.

Gerade zweitere Abstimmungsfälschung fand ich sehr amüsant und machte mich mit der Vorgehensweise anhand der access.log kundig:

ibook:~/Desktop mario$ cat access_log.2006-07-12 | grep fixnet | grep HEAD | wc -l
    9562

9562 Aufrufe gab es also insgesamt von Herr … nennen wir ihn … fixnetdata (oder war es eine sie? dann sollten wir uns einmal kennen lernen … *grins*).

Hier ein Beispiel:

117-183.63-81.stat.fixnetdata.ch - - [12/Jul/2006:16:10:31 +0200] "HEAD /scripts/vote.php?value=0 HTTP/1.1" 200 - "-" "curl/7.13.1 (powerpc-apple-darwin8.0) libcurl/7.13.1 OpenSSL/0.9.7i zlib/1.2.3"
117-183.63-81.stat.fixnetdata.ch - - [12/Jul/2006:16:10:31 +0200] "HEAD / HTTP/1.1" 200 - "-" "curl/7.13.1 (powerpc-apple-darwin8.0) libcurl/7.13.1 OpenSSL/0.9.7i zlib/1.2.3"

Erkenntnis am Rande: Ist es nicht überaus Schade, dass solche Personen auch Mac-User sind?

Und wann startete und endete die Attacke eigentlich?

cat access_log.2006-07-12 | grep fixnet | grep HEAD | cut -d " " -f 4
[12/Jul/2006:15:51:55
...
[12/Jul/2006:16:10:37

Wenn das sein Arbeitgeber wüsste …

So, und jetzt nähme mich Wunder, was du dir dabei gedacht hast. Natürlich darfst du anonym antworten, das passt zu deinem Charakter.

Tags:
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 20. Juli 2006

Downgrading of Da Özel, ne?


Downgrading of Da Özel, ne?
Originally uploaded by emeidi.

Das von Kollege Darud befürchtete „Downgrade“ seines Kollegen Da Özel, ne? (meine Wenigkeit) zu einem Beziehungsmenschen rechtzeitig zur Rückkehr meiner in den weiten Afrikas ausharrenden Liebe ist früher eingetreten als gemeinhin erwartet. Anstelle aber persönlich downzugraden, kam mir meine IT-Hardware zuvor, weshalb ich mich bedenklich dem Niveau meines Fahrzeugs annähere. Aber hoffentlich nicht für lange …

Todesanzeige

Gestern Abend, gegen 19:00 Uhr MESZ, schied er von uns – mein geliebter, in den Ferien mit der Freundin oft vermisster PowerMac G5 Dual 1.8GHz mit 2GB RAM und zwei 160GB SATA-Platten. In seiner kurzen Lebenszeit vollbrachte er wahre Meisterleistungen, trug massgeblich zum prosperierenden Geschäft seines Besitzers bei und lief teilweise mehr als den halben Tag.

Todesursache

Zum Verhängnis wurde ihm entweder ein ausufernder Chat mit Kollege Torquenstein (weniger wahrscheinlich) oder aber der (bisher) heisseste Tag des Jahres. Nach einem Hänger (jaja, immer diese zweideutigen Wörter) kam er nicht mehr hoch, nicht einmal das geliebte Start-Chime ertönte mehr aus den Lautsprechern. Dafür blinkte die weisse Power-LED dreimal, um für einige Sekunden zu verharren, um danach erneut dreimal zu blinken. Gemäss Service Manual ein Zeichen für defekte RAM-Module.

Trotz Ausbau aller acht Module und wahlweisem Einsetzen derselben konnte die Maschine nicht mehr aus dem Koma erweckt werden.

Zur Zeit ist die stylish gelöcherte Alu-Kiste (sogar Torquie ist neidisch auf das Gehäuse – oder?) unterwegs nach Dietikon, um dort von einem Experten von Data Quest auseinandergenommen zu werden. Kosten dieses Spass: Da zweieinhalb Jährig, bezahle ich auf alle Fälle den Kostenvoranschlag von 176.–, um danach zu entscheiden, ob eine Notoperation gewagt werden sollte.

Erster Ersatz

Da dies bis zu drei Wochen dauern kann, habe ich in weiser Voraussicht die SATA-Festplatten des G5 ausgebaut und sie in einem blau-weissen PowerMac G3 300MHz (ich sehe schon die weinenden Augen meiner Leser – ja, ich meine es Ernst: 300MHz!!!), der sich über hier unerwähnt gelassene Wege aus Staatsbesitz in mein Eigentum übergeführt hat. Vor einigen Monaten habe ich – ohne die künftige Bedeutung des Kaufs zu erblicken – einen SATA-Adapter gekauft.

Nun bootet die Lotterkiste – ohne Änderungen an der Konfiguration – mit den G5-Platten, das gewohnte OS, nur bedeutend langsamer. Da will ich echt ein Windows-Futzi sehen, der seine Festplatte von einem Pentium IV in einen Pentium II zügelt und Windows da noch bootet … Mit Macs klappt das.

Sogar meine Dual-Monitor-Konfiguration (2x 19″) funktioniert (der rechte Monitor nur über analog, aber das merkt man kaum), der linke Eizo ist über DVI angeschlossen.

Das Wunder von Neuenegg, könntet man sagen. Meine Daten sind noch da, aber alles läuft wie eine Dia-Show ab. Keine Ahnung, ob ich diese Latenz drei Wochen lang ertragen werden kann?

Mögliche Lückenbüsser

Hätte Steve doch nur bereits die Mac Pros vorgestellt … Dann hätte ich mir evtl. eine solche Kiste gekauft. Vielleicht werde ich auch einfach den für Oktober (Studentenaktion Neptun) geplanten Kauf eines MacBooks (weiss, billigstes Modell) vorziehen.

Schicksalsschläge zu Hauf …

In dieser traurigen Stunde darf ich ganz besonders auf das Mitgefühl von Kollege Randy zählen, der erst gerade vor wenigen Wochen sein geliebtes Gefährt Lisi II dem Altmetall-Shredder übergeben musste – mit einem Dienstalter, von dem selbst gestandene Computer nur träumen können.

Tags:
Labels: Neuenegg

Keine Kommentare | neuen Kommentar verfassen