php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.03.2005, 16:26  
Gast
 
Beiträge: n/a
Standard [Erledigt] Sicherheitslücke bei Verwendung von include($var)

Hallo zusammen,
eine meiner Seiten wurde letzte Woche von einem hacker aufgesucht. Diese haben die Startseite ausgetauscht.
Durch ein wenig Glück konnte ich den Hacker (Gruppe aus Brasilien) per irc ausfindig machen und habe mal nachgefraht wie er das ganze angestellt hat.
Ich habe eine include Funktion mit einer Variable auf meiner Seite verwendet. Die variable habe ich über die url weitergegeben.
genau hier hat der Hacker angegriffen. Dieser hat über die variable in der url eine externe seite includet, die ein shell script aufgerufen hat, durch das die startseite ausgetauscht wurde.

Ich habe jetzt in meinen Scripts noch eine Abfrage eingebaut ob in der include-variablen http vorkommt, wenn dies der fall ist wird eine vordefinierte Seite includet, falls kein http darin enthalten ist wird die variable in den include Befehl übernommen.

Habt ihr auch schon solche erfahrungen gemacht? Wie habt ihr diese "Sicherheitslücke" geschlossen???
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.03.2005, 16:29  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard

Nein, ich habe die Erfahrung noch nie gemacht, da ich immer so die entsprechende Seite einbinde:
PHP-Code:
<?php
$include_sites 
= array( "start" => "start.php",
                        
"..." => "..."
                      
);
                      

if (!isset(
$_GET['site']) OR $_GET['site'] == "") {
    
$include_site "start";
} else {
    
$include_site $_GET['site'];
}

if (!
file_exists($include_sites[$include_site])) {
    echo 
"Error!";
} else {
    include(
$include_sites[$include_site]);

?>
Corvin ist offline   Mit Zitat antworten
Alt 19.03.2005, 16:31  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

sowas öffnet man nciht, man sollte allgemein nie

include mit $_GET-variablen verwenden.

einfach ein switch($_GET) einbauen oder z.b. mit file_exists testen ob die datei existiert, weil file_exists arbeitet nur beim dateisystem.

www.php.net/file_exists
Zitat:
Anmerkung: Diese Funktion kann nicht mit entfernten Dateien arbeiten, da der Zugriff auf die Datei, die bearbeitet werden soll, über das Dateisystem des Servers möglich sein muss.
mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 19.03.2005, 16:36  
Gast
 
Beiträge: n/a
Standard Re: Sicherheitslücke bei Verwendung von include($var)

Zitat:
Zitat von HeinerBremer
Habt ihr auch schon solche erfahrungen gemacht?
Nein. GET, POST und COOKIE fasse ich nur mit der Kohlenzange an.

Zitat:
Wie habt ihr diese "Sicherheitslücke" geschlossen???
12.11. Prüfe importierte Parameter. Traue niemandem
http://www.php-faq.de/q/q-sicherheit-parameter.html

PHP-Code:
<?php
define
('INC'dirname($_SERVER['DOCUMENT_ROOT']) . '/meine_includes/'); # das Include Verzeichnis als Konstante
$temp parse_url($_GET['variable']); # alles andere weglassen
$temp basename($temp['path']); # wir wollen nur den Namen
include ( INC $temp); # und nur das wird per include eingefügt
?>
  Mit Zitat antworten
Alt 19.03.2005, 16:36  
Gast
 
Beiträge: n/a
Standard

Ja die methode mit file_exists() hab ich nei neueren Seiten auch eingebaut.
Nur diese Seite hab ich programmiert als ich noch ziemlich am anfang mit php stand

Jetzt bin ich auch schlauer und hab die Lücke geschlossen.
  Mit Zitat antworten
Alt 19.03.2005, 16:40  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von robo47
einfach ein switch($_GET) einbauen oder z.b. mit file_exists testen ob die datei existiert, weil file_exists arbeitet nur beim dateisystem.
Der Sieger heißt SWITCH: haarklein die Werte auflisten, die erlaubt sind.
  Mit Zitat antworten
Alt 19.03.2005, 16:50  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

oder jenachdem was für ein system dahinter steht, knn man sich sowas auch ganz toll über die datenbank machen und dann aus der datenbank das ganze ziehn.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 19.03.2005, 16:52  
Gast
 
Beiträge: n/a
Standard

Gibt es diese Probleme auch bei werten die per POST übergeben werden??

Gibt es irgendwo ein Tutorial o.ä. das sich mit "Sicherheit in php" beschäftigt??
  Mit Zitat antworten
Alt 19.03.2005, 17:05  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von HeinerBremer
Gibt es diese Probleme auch bei werten die per POST übergeben werden?
Schrieb ich doch schon:

12.11. Prüfe importierte Parameter. Traue niemandem
http://www.php-faq.de/q/q-sicherheit-parameter.html

Zitat:
Gibt es irgendwo ein Tutorial o.ä. das sich mit "Sicherheit in php" beschäftigt??
Das beginnt da:
12. Sicheres Programmieren in PHP
http://www.php-faq.de/ch/ch-security.html

... und ist ein fortlaufender Prozeß, bei dem man alle "dokumentierten Einbrüche" analysiert, ob die eigenen Scripte ähnliche Hintertürchen bieten.
  Mit Zitat antworten
Alt 19.03.2005, 17:14  
Erfahrener Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 2.603
Corvin befindet sich auf einem aufstrebenden Ast
Standard

http://www.owasp.org
Corvin ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SMTP und sendmail_path bei Verwendung von XAMPP auf WinXP suendesizer Server, Hosting und Workstations 5 04.05.2009 01:12
Probleme bei Verwendung der reguären Ausdrücke SilentSight PHP Tipps 2008 11 16.05.2008 15:18
"Notice" wird trotz verwendung von @ angezeigt. Manuchau PHP Tipps 2007 6 15.12.2005 22:26
Richtige Verwendung von php PHP Tipps 2005-2 4 06.09.2005 15:02
Problem mit Sessions bei der Verwendung von flush (Php4) PHP-Fortgeschrittene 0 07.08.2005 00:36
[IDE] Problem mit Eclipse, bei Verwendung von PEAR imported_Ben PHP-Fortgeschrittene 4 22.04.2005 14:11
Verwendung von $GLOBALS DutziMan PHP-Fortgeschrittene 16 01.09.2004 10:00
Probleme mit IF-Bedingung bei verwendung in Mail-Formularen PHP-Fortgeschrittene 2 20.08.2004 11:48
[Erledigt] Reihenfolge des Resultset bei Verwendung von ..WHERE a IN () Datenbanken 3 29.07.2004 16:02

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
include sicherheitslücke, php include sicherheitslücke, sicheres include, php sicherheitslücke include, include($_get[\'site\']); sicherheitslücke, sicherheitslücke variable $inc, <include> sicherheitslücke, php code sicherheitslücken

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:25 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.