Top 5 Stupid Captcha Implementations

Top 5 Stupid Captcha Implementations

Marc Ruef
by Marc Ruef
time to read: 4 minutes

Der grundlegende Nutzen eines Computers ist, dass repetitive Augaben automatisiert sowie grosse Datenmengen verarbeitet werden können. Gewiefte Angreifer nutzen die Möglichkeit der Automatismen, um ihre dubiosen Aktivitäten durchzusetzen.

Um zum Beispiel zu verhindern, dass fortwährend in Foren mittels Bots Werbung für Viagra und Pornoseiten gemacht werden, werden sogenannte CAPTCHA (Completely Automated Public Turing Test to tell Computers and Humans Apart) eingesetzt. Bei diesen muss der Benutzer vor dem Absenden des Formulars eine Tätigkeit durchführen, die sich nur schwer automatisieren lässt. Gängige CAPTCHA-Implementierungen erfordern, dass man den auf einem zufällig generierten Bild dargestellten Code eingibt.

Intelligent umgesetzte CAPTCHAs sind durchaus schwierig zu umgehen. Wird ein hohes Mass an Dynamik sowie komplexe Mechanismen eingesetzt, ist eine automatisierte Verarbeitung im Rahmen eines Angriffs mit sehr viel Aufwand verbunden. Dennoch sehen wir bei Web Application Penetration Tests immerwieder Implementierungen, bei denen die Entwickler offensichtlich das Konzept von CAPTCHA missverstanden haben. Die fünf lustigsten Fehler wollen wir hier zusammenfassen:

Bild erlaubt einfache OCR-Verarbeitung

Traditionelle CAPTCHA generieren ein Bild, in dem eine zufällige Zeichenkombination enthalten ist. Um eine Weiterverarbeitung durch OCR (Optical Character Recognition) zu erschweren, werden dabei unterschiedliche Schriftarten sowie zufällige Störmuster verwendet. Wird auf solche verzichtet, kann das Bild sehr einfach eingelesen und ausgewertet werden. Eine automatisierte Weiterverarbeitung ist damit sehr einfach durchsetzbar.

Statischer Zufallcode

Um einem Angreifer einen automatisierten Angriff auf das CAPTCHA zu erschweren, sollte dies bei jeder Eingabe – auch bei einer Falscheingabe – neu geladen werden. So mancher Programmierer verzichtet darauf und generiert erst bei erfolgreicher Verarbeitung der CAPTCHA-Eingabe einen neuen Zufallscode. Dies erlaubt das Umsetzen einer linearen Bruteforce-Attacke, die gerade bei kurzen CAPTCHA-Werten (4-stellig) relativ schnell zum Erfolg führen können.

Zufallscode in Dateiname

Wird ein Zufallscode generiert, sollte sich dieser nur mit erheblichem Aufwand (z.B. OCR) auslesen lassen. So mancher Programmierer macht es sich jedoch sehr einfach und legt die generierten Bilder auf dem Webserver ab (z.B. zwecks Caching). Dabei wird der eigentlich geschützte Inhalt (NX7GQ) als Dateiname (captcha_nx7gq.jpg) verwendet. Durch das simple Einlesen des Dateinamens kann auf die komplexe Weiterverarbeitung des Bildinhalts verzichtet werden.

Zufallscode ist nicht zufällig

Ein CAPTCHA entspricht weitestgehend einem Challenge-Response-Verfahren. Dies bedeutet aber auch, dass die ausgegebene Challange vermerkt bzw. die erwartete Response vorhersehbar sein muss. Auf dem Server müssen entsprechende Mechanismen implementiert sein, um dieses Tracking durchführen zu können. Manche Programmierer machen es sich besonders einfach, indem sie den Zufallscode nicht stetig wirklich zufällig ausgeben lassen, sondern mit vorhersehbaren Werten arbeiten. Zum Beispiel mit einem Funktionsaufruf von $captcha=md5($_SERVER['REMOTE_ADDR'].time());, der sich durch eine Kryptoanalyse mit endlichem Aufwand ermitteln und damit vorausberechnen lässt.

Javascript-Validierung aktiviert Send-Button

Es ist die Aufgabe eines CAPTCHA, dass die Datenannahme bzw. -weiterverarbeitung erst dann stattfindet, wenn der Zufallscode richtig zurückgegeben wurde. Manche Programmierer lagern diesen Mechanismus mittels Javascript zum Client aus und vollziehen da die Validierung der Eingabe. Indem der Send-Button des Formulars deaktiviert und erst nach der CAPTCHA-Überprüfung wieder aktiviert wird, will ein Absenden ohne richtige Eingabe verhindert werden. Durch das Manipulieren des Javascript-Codes bzw. dem Absetzen von direkten HTTP-Anfragen lassen sich solche Einschränkungen einfach umgehen.

About the Author

Marc Ruef

Marc Ruef has been working in information security since the late 1990s. He is well-known for his many publications and books. The last one called The Art of Penetration Testing is discussing security testing in detail. He is a lecturer at several faculties, like ETH, HWZ, HSLU and IKF. (ORCID 0000-0002-1328-6357)

Links

Are you interested in a Penetration Test?

Our experts will get in contact with you!

×
Specific Criticism of CVSS4

Specific Criticism of CVSS4

Marc Ruef

scip Cybersecurity Forecast

scip Cybersecurity Forecast

Marc Ruef

Voice Authentication

Voice Authentication

Marc Ruef

Bug Bounty

Bug Bounty

Marc Ruef

You want more?

Further articles available here

You need support in such a project?

Our experts will get in contact with you!

You want more?

Further articles available here