| Webmaster-Security Fragen zur richtigen Serverkonfiguration oder Absicherung dynamischer Scripte gehören hier hinein. |
Diskussion: include breakout im Forum Webmaster-Security, in der Kategorie Security Area; Anzeige Hallo, Nen Kumpel von mit hat ne Website bei der templates per Include geladen werden. Auf meine Versuche ihm ...
![]() |
| | #1 (permalink) |
| Registriert seit: 15.01.05 ![]() Likes: 0 | Anzeige Hallo, Nen Kumpel von mit hat ne Website bei der templates per Include geladen werden. Auf meine Versuche ihm das auszureden hat er nicht reagiert und meinte ich solle ihm das Gegenteil beweisen. Lange Rede kurzer Sinn : Auf grund seiner Fehlermeldungen schließe ich auf folgenen Code : Code: $page = $_GET['page']
include('templates/'.$page.'.tpl') Ein Null wird irgentwie ( = \0) escaped.... |
| | |
| | #2 (permalink) |
| Senior Member | 1. include in php zu benutzen ist nichts schlimmes. Nur das falsche Benutzen wie hier in diesem Fall ist schlecht. 2. Um das tpl wegzubekommen, kannst du einfach ein php-script machen, welches auf tpl endet, z.B. http://www.deineseite.de/boesesscript.tpl Um das 'template/' wegzubekommen gibt es aber meines Wissens keine möglichkeit, da das 'template/' ja schon anzeigt, dass es sich um eine datei in einem lokalen Ordner handelt. Das einzige, was vielleicht hilfreich wäre, ist ein "../" zu beginn von $page. Damit kannst du in das übergeordnete verzeichnis wechseln. Vielleicht gelingt es dir dann irgendwie, von da aus andere dateien einzubinden |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 15.01.05 ![]() Likes: 0 | include ist nützlich, aber bitte doch nicht in nem Template ... Das ist so ziemlich das Problem das ich habe. Wenn ich eine Externe Datei einbinen will stört das "/templates" und andernfalls kann ich nur ".tpl" Dateien lesen, was nicht viel hilft ... |
| | |
| | #4 (permalink) |
| Registriert seit: 21.10.06 ![]() Likes: 0 | Code: $page = $_GET['page']
include('templates/'.$page.'.tpl') Dieser Code wäre schädlich, weil ich über http://lala.de?page=exploit.php unsicheren beziehungsweise Fremden Quellcode einfügen kann oder ? |
| | |
| | #5 (permalink) |
| Nein, zzumindest nicht so simpel, da deine exploit.php im Ordner "templates" gesucht werden würde und zusätzlich käme noch die Dateiendung ".tpl" hinzu. Dadurch kannst du (zumindest nicht auf diesem Wege, ob anders bin ich mir nicht sicher) keinen schädlichen Code einfügen. mfg soul
__________________ Der eigene Wille müsste stets ein wenig mächtiger sein, als es das eigene Selbst ist. Aber Wunschdenken stellt ein Risiko dar und so etwas können wir uns in einem Weltkapitalismus nicht leisten. | |
| | |
| | #6 (permalink) |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | Hallo, hänge %00 an, dann bekommst das .tpl weg. Aber natürlich ist solch ein Script auch sau gefährlich, selbst wenn es etwas (minimal) schwerer ist als ein include($_GET['page']) zu knacken. |
| | |
| | #7 (permalink) |
| Moderator ![]() | Wenn alle Zeichen außer /[a-z0-9]/ aus $_GET['page'] gefiltert werden, ist dagegen nix einzuwenden. Würde meine Energie lieber daran verschwenden als zu versuchen, ein Szenario zu entwickeln, wie man's exploiten kann. |
| | |
| | #8 (permalink) | |
| Registriert seit: 18.09.05 ![]() Likes: 0 | Versuche mal folgendes: Code: http://www.seite.de?foo=//www.google.de%00 // EDIT Zitat:
Notfalls kann man auch eine statische Liste verwenden. | |
| | |
| | #9 (permalink) |
| Registriert seit: 17.02.06 ![]() Likes: 0 | Zumindest ist es möglich, alle möglichen Dummheiten zu machen und Tests auszuführen, um zum Beispiel nach PHP-Dateien zu suchen. Das hat allerdings zugegebenermaßen für einfache gescriptete Angriffe wenig Sinn, wenn nicht auch Standard-Software auf dem Server läuft und man ansonsten die Dateien auf dem Server nicht kennt. Aber zumindest KANN man scannen, und mit etwas krimineller Energie und ausreichend Anreiz kann man blind nach Standard-Scripten suchen. Denn ALLES, was auf dem Server liegt, kann man erstmal einbinden lassen, indem für die freie Navigation vorn einfach ein "../" einbezogen wird und hinten die Endung mit einem Parameter- oder Anchor-Trenner ("?" oder "#") wirkungslos gemacht wird. Sobald allerdings irgendeine (schlecht programmierte) Standardsoftware (aufgrund irgendwelcher Anzeichen) gefunden wurde, gehen Scheunentore auf: Die enthält jede Menge weitere Scripte, die mit der hier genannten Parameterübergabe eingebunden werden können und mitunter nicht gegen direktes Einbinden dieser Art gesichert sind. Das größte Problem dabei: Standard-Scripte sind auch jedem Einbrecher zugänglich, und jeder Einbrecher kann diese beliebig gründlich nach Lücken absuchen, die einem normalen unbedarften Hobby-Admin nie auffallen würden. DIE können dann mit ziemlicher Wahrscheinlichkeit weitere Scripte von außen einbinden - WENN nicht ein paar zusätzliche Sicherheitsmaßnahmen getroffen wurden. Also: Es ist durchaus möglich, daß der Server trotz der direkten Übernahme von Parametern sicher sein KANN. Aber es ist nicht sehr wahrscheinlich. Es sei denn, er ist tatsächlich NUR mit individuell programmierten Scripten gefüllt UND die sind streng geheim gehalten UND der Server ist ansonsten komplett in einem sicheren Modus. Der erste und der letzte Teil des letzten Absatzes schließen sich allerdings gewöhnlich gegenseitig aus. |
| | |
| | #10 (permalink) | |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | Hallo, Zitat:
Siehe dazu: Post 1 Post 2 (gleicher Thread) Wenn man dies auf einen Ordner eingretzt, mag dies evt. funktionieren, das Arbeiten über eine Datenbank ist aber deutlich besser. | |
| | |
| | #11 (permalink) |
| Guest Likes: | Entfernte Dateien wird man so sicherlich nicht includen koennen, das ist wahr. Gegen lokale Dateien, wie Elderan schon sagte, ist jedoch nichts einzuwenden. Zu Elderans Beispielen kann man eigentlich nurnoch hinzufuegen, dass, sollte man nicht auf Zeichen wie /, ., ... ueberpruefen, man sich schnell andere Software einfangen kann. Z.b. kann ueber einen Anonymous-Zungang jegliche Software geuploadet werden, die daraufhin wieder im Skript ausgefuehrt werden kann: http://name.tld/page.php?datei=../.....vilcode.php%00 Genauso können z.b. Server, die von versch. Usern benutzt werden, das Ziel einer solchen Attacke sein, da man hier leicht die Sicherheitsluecken von versch. Seiten ausnutzen kann. Natuerlich spielen hier auch die Serverrechte eine weitere Rolle, aber wieviel "Admins" gibt es, die zu faul dazu sind. Genauso kannst du es deinem Freund sagen: Wenn er seinen Code nicht vollstaendig absichert ist er selbst schuld, wenn etwas passiert. Eine statische Liste von Dateien, welche "Included" werden dürfen ist hier sicherlich die beste Wahl. Desweiteren wuerde ich mich fragen, ob bei einem solchen Codestil nicht noch weitere Fehler sind, z.b. bei fopen(..), usw |
|
| | #12 (permalink) |
| Themenstarter Registriert seit: 15.01.05 ![]() Likes: 0 | Danke für eure Antworten, aber es ging hier wirklich nur um diese Spezielle Situation. Es ist logisch das das völlig falsch ist, ich fühlte mich nur ertappt, da ich auf die schnelle kein Beispiel Produzieren konnte. %00 habe ich probiert, es wird jedoch escaped ... |
| | |
| | #13 (permalink) | |
| Moderator ![]() | Zitat:
| |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| include bei C und C++ | DragonRPA | Code Kitchen | 7 | 15.08.09 11:06 |
| include breakout | THRALL | (Web-) Design und webbasierte Sprachen | 10 | 15.04.08 22:29 |
| g++ und "#include "~/file" | RedEagle | Applikationen | 4 | 26.02.08 13:37 |
| php include | haX | (Web-) Design und webbasierte Sprachen | 7 | 15.06.07 17:41 |
| php include | haX | Code Kitchen | 6 | 15.06.07 13:41 |