Zum Inhalt springen

Exploits - Bufferoverflow ?!


Empfohlene Beiträge

Geschrieben

Hi ihr.

Vorweg:

Ich bin nicht auf der Suche nach einer Anleitung für Exploits oder sonst irgendwelchen Tools mit denen man Bufferoverflows hervorrufen kann.

Meine Frage beschränkt sich eher auf die Entdeckung solcher Fehler.

Also da ich mich in letzter Zeit etwas intensiver mit Shellcode u. Exploits beschäftige, stellt sich für mich die Frage wie man solche Zeilen überhaupt im Code findet und diese dann ausnutzt.

Dieser Fehler im Code kann doch nur ausgenutzt werden wenn ich es schaffe den ausführbaren Code im Stack so zu platzieren und den passenden Rücksprung auf diesen Teil schaffe.

Nun meine Frage:

Wie komme ich nun darauf das genau an dieser Stelle ein solcher Fehler möglich ist ?

Gut es gibt gewissen Funktionen mit denen so etwas möglich ist ( strcp ) aber ich meine man muss doch irgendwie den Code übergeben können um so etwas herauszufinden ?!

Geht man da wirklich Zeile für Zeile den Code durch und schaut sich an wo so etwas möglich sein könnte ? oder wie funktioniert so eine Suche nach einer verwundbaren Stelle im Code ?!

Und wie übergebe ich meinen Wert dann genau in diese Stelle ?!

z.B. beim Apache über die URL aber da muss man ja auch erstmal draufkommen das wenn ich den Wert so übergebe er dann irgendwann im Codefehler landet ?!

Debuggt man dann wirklich das komplette Programm durch und schaut wo welcher Input landet ?!

Bei kleineren Programmen ist es ja mit dem gcc auf Assambler ziemlich angenehm aber bei riesigen Programmen wird man doch dabei ziemlich schnell dumm :)

Könnte mir vllt. mal jemand erklären wie das funzt ?! ich kann mir das nicht im geringstem vorstellen...

Und BITTE keine Anleitung wie ich so einen Code etc.. schreibe denn ich will nicht das dieser Thread geschlossen wird sondern nur Infos wie man solche Codestellen aufspürt ...

Vielen Dank :) hoffe jemand kann mir da weiterhelfen

Geschrieben

Hallo,

Im Prinzip musst Du tatsaechlich den kompletten Quellcode durchgehen und nach moeglichen Bufferoverflows suchen. Es gibt jedoch einige Funktions bzw. Konstrukte, die besonders anfaellig sind (weil beispielsweise eine Bibliotheksfunktion keinerlei Laengernueberpruefung der Argumente durchfuehrt). Das erleichtert die Suche natuerlich um einiges. Es gibt auch Software, die Programme auf Speicherfehler hin untersucht. Das die Suche nach Overflows nicht trivial ist, zeigt auch die Tatsache, dass regelmaessig exploits von Programmen veroeffentlich werden, die bereits seit Jahren als "sicher" gelten.

Eine einfache - und vereinfachte - Variante eines Bufferoverflows sieht folgendermassen aus:

In Deinem Programm tritt folgende Code-Sequenz auf:

char meinBuffer[100];

char rootCommand="/bin/irgendwas";

meinBuffer ist ein Stueck speicher, in dem Du beispielsweise Benutzereingaben zwischenspeicherst. rootCommand ist ein Kommando, welches ueber "system" zu einem bestimmten Zeitpunkt innerhalb des Programms mit root-rechten ausgefuehrt wird. Schaut man sich das Speicherlayout an, wird man feststellen, dass beide Speicherbereiche direkt aneinander grenzen (vereinfacht ausgedrueckt, in der Praxis kann es da noch ein paar feine Unterschiede geben). Wenn jetzt einen Nutzereingabe ohne Laengenueberpruefung in "meinBuffer" kopiert wird, kann es passieren dass der String in "rootCommand" mit einem Teil der Eingabe ueberschrieben wird, sofern diese laenger als der reservierte Speicher ist. D.h., dass im spaeteren Verlauf des Programms nicht mehr /bin/irgendwas ausgefuehrt wird sondern der Teil der Eingabe, der am Ende des Nutzerstrings stand.

Nic

Geschrieben

Hi.

Damit hast du mir schonmal viel weiter geholfen.

Aber ein Frage habe ich noch:

Bei einer CString Variable könnte das Problem aber nicht auftreten oder ?

Sondern nur bei fest vorgegebenen Größen eine Variable ....

Geschrieben

Hallo,

das Problem kann auch bei Variablen auftreten, die dynamisch allociert werden (Overflow auf dem Stack), allerdings dürfte das deutlich schwieriger nachzuvollziehen sein, da das Stack-Layout erst zur Laufzeit fest steht.

Nic

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...