Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Webmaster-Security Fragen zur richtigen Serverkonfiguration oder Absicherung dynamischer Scripte gehören hier hinein.

include breakout

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 ...

Antwort
Alt 15.04.08, 17:12   #1 (permalink)
 
Registriert seit: 15.01.05
THRALL Leistung: Facit NTK
Likes: 0
Standard include breakout

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')
Irgentwelche gescheite Ideen wir ich das .tpl (bzw. "templates" für http) weg bekomme ?
Ein Null wird irgentwie ( = \0) escaped....
THRALL ist offline   Mit Zitat antworten
Alt 15.04.08, 17:37   #2 (permalink)
Senior Member
 
Registriert seit: 29.07.05
Heinzelotto Leistung: Facit NTK
Heinzelotto eine Nachricht über ICQ schicken
Likes: 0
Standard

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
Heinzelotto ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 15.04.08, 18:11   #3 (permalink)
Themenstarter
 
Registriert seit: 15.01.05
THRALL Leistung: Facit NTK
Likes: 0
Standard

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 ...
THRALL ist offline   Mit Zitat antworten
Alt 15.04.08, 20:05   #4 (permalink)
 
Registriert seit: 21.10.06
weau Leistung: Facit NTK
Likes: 0
Standard

Code:
$page = $_GET['page']
include('templates/'.$page.'.tpl')
Kurz zum Verständnis :

Dieser Code wäre schädlich, weil ich über http://lala.de?page=exploit.php
unsicheren beziehungsweise Fremden Quellcode einfügen kann oder ?
weau ist offline   Mit Zitat antworten
Alt 15.04.08, 20:10   #5 (permalink)
 
Benutzerbild von $oul
 
Registriert seit: 19.12.04
$oul Leistung: Z3
$oul eine Nachricht über ICQ schicken
Likes: 2
Standard

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.
$oul ist offline   Mit Zitat antworten
Alt 15.04.08, 20:39   #6 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

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.
Elderan ist offline   Mit Zitat antworten
Alt 15.04.08, 20:47   #7 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Arrow

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.
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
Alt 15.04.08, 20:51   #8 (permalink)
 
Benutzerbild von Plexo
 
Registriert seit: 18.09.05
Plexo Leistung: Facit NTK
Likes: 0
Standard

Versuche mal folgendes:

Code:
http://www.seite.de?foo=//www.google.de%00
Habe irgendwie sowas letztens bei Heise Security gelesen.


// EDIT

Zitat:
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.
dito

Notfalls kann man auch eine statische Liste verwenden.
Plexo ist offline   Mit Zitat antworten
Alt 15.04.08, 21:04   #9 (permalink)
 
Registriert seit: 17.02.06
Harry Boeck Leistung: Facit NTK
Likes: 0
Standard

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.
Harry Boeck ist offline   Mit Zitat antworten
Alt 15.04.08, 22:10   #10 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hallo,
Zitat:
Original von LX
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.
dies ist falsch! Das includieren von beliebigen Dateien birgt ungeahnte Gefahren, selbst wenn man nur einfache Dateinamen zufällst.

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.
Elderan ist offline   Mit Zitat antworten
Alt 15.04.08, 22:29   #11 (permalink)
fetzer
Guest
 
Likes:
Standard

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 .
  Mit Zitat antworten
Alt 16.04.08, 00:02   #12 (permalink)
Themenstarter
 
Registriert seit: 15.01.05
THRALL Leistung: Facit NTK
Likes: 0
Standard

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 ...
THRALL ist offline   Mit Zitat antworten
Alt 16.04.08, 00:51   #13 (permalink)
LX
Moderator
 
Registriert seit: 14.02.06
LX Leistung: Z3
LX eine Nachricht über ICQ schicken LX eine Nachricht über AIM schicken LX eine Nachricht über Yahoo! schicken
Likes: 21
Arrow

Zitat:
Original von Elderan
Das includieren von beliebigen Dateien birgt ungeahnte Gefahren, selbst wenn man nur einfache Dateinamen zufällst.

Siehe dazu:
Post 1
Post 2 (gleicher Thread)
Ähm ja, wer in das Template-Verzeichnis Dateien legt, die Code beinhalten, der sicherheitsrelevant ist, hat erstens das Konzept "Template" nicht verstanden und ist zweitens selber Schuld. Gegen das Einbinden der "falschen" Templates hilft dann auch keine Whitelist oder Datenbank
__________________
"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

JS BB LX UP
LX ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Security Area » Webmaster-Security » include breakout
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ä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


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61