Sicherheitstests - Pufferüberläufe

Ein Pufferüberlauf tritt auf, wenn ein Programm versucht, mehr Daten in einem temporären Datenspeicherbereich (Puffer) zu speichern, als es aufnehmen sollte. Da Puffer so erstellt werden, dass sie eine begrenzte Datenmenge enthalten, können die zusätzlichen Informationen in benachbarte Puffer überlaufen und so die darin enthaltenen gültigen Daten beschädigen.

Beispiel

Hier ist ein klassisches Beispiel für einen Pufferüberlauf. Es zeigt einen einfachen Pufferüberlauf, der durch das erste Szenario verursacht wird, in dem externe Daten zur Steuerung des Verhaltens verwendet werden. Es gibt keine Möglichkeit, die vom Benutzer eingegebene Datenmenge zu begrenzen, und das Verhalten des Programms hängt davon ab, wie viele Zeichen der Benutzer eingegeben hat.

...
   char bufr[BUFSIZE]; 
   gets(bufr);
   ...

Hände an

Step 1- Wir müssen uns mit Name und Zimmernummer anmelden, um den Internetzugang zu erhalten. Hier ist der Szenario-Schnappschuss.

Step 2 - Wir werden auch "Versteckte Formularfelder einblenden" in Burp Suite aktivieren, wie unten gezeigt -

Step 3- Jetzt senden wir eine Eingabe in das Feld Name und Zimmernummer. Wir versuchen auch, eine ziemlich große Zahl in das Feld für die Zimmernummer einzufügen.

Step 4- Die ausgeblendeten Felder werden wie unten gezeigt angezeigt. Wir klicken auf Bedingungen akzeptieren.

Step 5 - Der Angriff ist so erfolgreich, dass er aufgrund eines Pufferüberlaufs die benachbarten Speicherstellen liest und dem Benutzer wie unten gezeigt angezeigt wird.

Step 6- Jetzt melden wir uns mit den angezeigten Daten an. Nach der Protokollierung wird die folgende Meldung angezeigt:

Vorbeugende Mechanismen

  • Codeüberprüfung
  • Entwicklerschulung
  • Compiler-Tools
  • Sichere Funktionen entwickeln
  • Periodisches Scannen