# 800,- Kosten für Sicherheitsmangel?



## TinaX (20. August 2005)

Hallo Leute!

Ich hab vor ca. 1 Jahr eine PHP-Page für eine befreundete Firma gebastelt.
Diese Page wurde vor 2 Wochen gehackt und eine FTP-Zugangssoftware am Server installiert. Nun haben wir vom Provider eine Rechnung über 800 Euro bekommen, weil die der Meinung sind, daß alles unsere Schuld ist. Genaue Schäden am Server wurden uns nicht mitgeteilt.

Nun meine Frage: Kann mich mein Provider für sowas belagen? Oder ist er nicht selbst für die Serversicherheit zuständig?

Der Codeteil, um den es geht, sieht ca. so aus:
	
	
	



```
if( $_REQUEST['page'] == '' ) {
	$page = 'news';
} else {
	$page = $_REQUEST['page'];
}
```
Aufruf im Browser wäre dann: www.domain.com/index.php?page=$page

Das habe ich aus folgendem Grund so gewählt: Die Seite wird über ein CMS gewartet und erweitert - d.h. $page ist wirklich dynamisch - ich hatte nicht wirklich die Möglichkeit, alle möglichen Varianten anzuführen.

Daß das nicht ganz sauber war, ist mir jetzt auch klar. Allerdings hab ich bei nem anderen (viel größeren) Provider zig solcher Pages liegen - und da ist noch nie was passiert bzw. was beanstandet worden.

Kernfrage: Kann mich mein Provider dafür belangen, daß über meine Seite von dritter Hand Programme am Server installiert wurden?

Bräuchte die Antwort ziemlich dringend - würd mich also über rasches Feedback freuen.

Danke, LG, TinaX


----------



## Sven Mintel (20. August 2005)

Die Frage ansich kann/darf dir nur ein Jurist beantworten....

mein Gefühl aber sagt mir, dass ich es da auf jeden Fall auf einen Rechtstreit ankommen lassen würde.
Wenn du Webspace mietest, dann ist es nicht unbedingt dein Job, für die Serversicherheit zu sorgen.

Wenn deine Skripte Zugriff ausserhalb deines Webspaces ermöglichen, liegt das Problem bei denen, nicht bei dir. Sollte dir durch die installierte Software Schaden entstanden sein, würde ich eher überlegen, ob du Schadensersatz verlangen kannst(obwohl ich mal annehme, dass die Geschäftsbedingungen das ausschliessen werden).

Die Skripte auf dem anderen Server solltest du aber unbedingt mal überarbeiten(wie war noch die genaue Adresse? :suspekt: )


----------



## TinaX (20. August 2005)

Hey, danke mal fürs flotte Feedback. Sowas in die Richtung hab ich mir eh auch schon überlegt. Lt. AGB´s des Anbieters distanzieren sie sich nur davon Schäden zu begleichen, die SIE nicht zumindest GROB fahrlässig verursacht haben. D.h., wenn meine Page, Datenbank, Backups am Server weg sind, und ich ihnen nicht zumindest GROBE Fahrlässigkeit anhängen kann, dann geh ich leer aus. 

Kundenseitig steht aber nix drin (außer halt Pornographiegesetz, Urheberschutz, üble Nachrede, blabla). Von einem vorgeschriebenen Programmierstil steht aber nix drin.

Danke nochmal - vielleicht hat ja noch jemand gegenteiliges zu gehaupten - ich will da nicht unwissend in Verhandlungen gehen.

Danke, LG, TinaX


----------



## Dennis Wronka (20. August 2005)

```
if ($_REQUEST[page]=="") { $page="news"; } else { $page=$_REQUEST[page]; };
```
Der Codeschnipsel ist tendenziell Cross-Site-Scripting gefaehrdet, das geht auf Deine Kappe.
Man kann aber Cross-Site-Scripting mit einer simplen Einstellung in der php.ini unmoeglich machen, diese Einstellung ist allow_url_fopen. Wenn das off ist kann dort als $page auch gerne http://www.boesehackerseite.com/fiesesscript.php angegeben werden. Dann gibt es halt einen Fehler und gut ist.
Dass dies offensichtlich nicht der Fall war, geht nicht auf Deine Kappe, ausser Du hast denen auch PHP installiert oder darauf bestanden (aus welchen Gruenden auch immer), dass es on ist.

Ich wuerde sagen, dass bei Dir zwar eine Teilschuld aufgrund nicht ganz sicherer Software liegt, jedoch solltest Du dafuer nicht belangt werden koennen. Ansonsten koennte ja 3/4 der Menschheit Microsoft verklagen. 
Ich sehe das Sicherheitsproblem auch weniger bei Deinem Script, sondern eher bei unwissenden Admins, wie dort offensichtlich zugange sind.
Jetzt wollen die ihre Fehler und vor allem ihre Unwissenheit auf Dich abwaelzen.

Auf jeden Fall solltest Du mal mit dem Rechtsverdreher Deines Vertrauens sprechen und gucken wie der Dich da raushauen kann.

Alle Angaben ohne Gewaehr und Gummibaerchen.


----------



## michel_tr (20. August 2005)

Ich denke es kommt drarauf an wie diese 800,- € zustande kommen. Wenn es sich hierbei um Traffic, der über euren Account angefallen ist handelt, werdet ihr wohl die Rechnung bezahlen müssen.

  Ansonsten würde ich euren Provider fragen, was denn genau passiert ist und wie sie auf die 800,- € kommen. 
 Soweit ich was von Webserver Sicherheit verstehe, kann deine Sicherheitslücke nur durch eine "schlampige" Server Konfiguration richtig ausgenützt werden.

  Hast du dir denn schon die AGBs von eurem Provider durchgelesen?



> Das habe ich aus folgendem Grund so gewählt: Die Seite wird über ein CMS gewartet und erweitert - d.h. $page ist wirklich dynamisch - ich hatte nicht wirklich die Möglichkeit, alle möglichen Varianten anzuführen.


 Warum nicht? Wenn eine neue Seite angelegt wird, kannst du doch gleichzeitig eine neue "Variante" erlauben (eine Lösung von vielen).



> Daß das nicht ganz sauber war, ist mir jetzt auch klar. Allerdings hab ich bei nem anderen (viel größeren) Provider zig solcher Pages liegen - und da ist noch nie was passiert bzw. was beanstandet worden.


 Dass bei deinen anderen Seiten noch nichts passiert ist, liegt nur daran, dass noch keiner deine Sicherheitslücke ausgenützt hat. Schließe sie bitte!


----------



## TinaX (20. August 2005)

Hi reptiler!

Hab grad auf die Serverconfig geschaut - da ist allow_url_fopen JETZT zumindest auf OFF. Heißt das etwa, daß diese Option während des Serverangriffs auf ON gewesen sein muss?


----------



## Dennis Wronka (20. August 2005)

Ich denke schon.
Ich weiss nicht genau wie Du $page verarbeitest, aber ich denke mit include().

Damit include() Dateien per HTTP oder FTP includen kann *muss* allow_url_fopen on sein.



			
				php.net hat gesagt.:
			
		

> If "URL fopen wrappers" are enabled in PHP (which they are in the default configuration), you can specify the file to be included using a URL (via HTTP or other supported wrapper - see Appendix M for a list of protocols) instead of a local pathname.


----------



## TinaX (20. August 2005)

michel_tr hat gesagt.:
			
		

> Ich denke es kommt drarauf an wie diese 800,- € zustande kommen. Wenn es sich hierbei um Traffic, der über euren Account angefallen ist handelt, werdet ihr wohl die Rechnung bezahlen müssen.


 
Da gehts nicht um Traffic, sondern um (ungefragte) Supportarbeiten, um den Fehler zu beheben (1/2 Stunde Servertechnik, 1/2 Stunde Programmierer).
Der Provider dürfte seine "Technik" extern beziehen, sprich: wenns am Server brennt, dann wird eine externe Firma hinzugeschaltet, um das Problem zu beheben.


Aber ich denke trotzdem, daß sicherheitsrelevante Einstellungen am Server getroffen werden müssen. So war´s doch auch mit den register-globals. Seiten haben von heute auf morgen nicht mehr funktioniert, weil eben Sicherheitslücken entdeckt wurden...


----------



## Dennis Wronka (20. August 2005)

Kleine Tipp:
So laeuft das mit dem includen der Unterseiten bei mir:

```
$subsite=$_GET["subsite"];
if ($subsite)
	{
		if ((strpos($subsite,"index.php")>-1) || (strpos($subsite,"http:")>-1) || (strpos($subsite,"https:")>-1) || (strpos($subsite,"ftp:")>-1))
			{
				header("Location:index.php");
			}
		else
			{
				include($subsite);
			}
	}
else
	{
		include("welcome.php");
	}
```


----------



## TinaX (20. August 2005)

reptiler hat gesagt.:
			
		

> Ich denke schon.
> Ich weiss nicht genau wie Du $page verarbeitest, aber ich denke mit include().
> 
> Damit include() Dateien per HTTP oder FTP includen kann *muss* allow_url_fopen on sein.


 
Naja, ich hab einfach eine index.php, auf der sich alles abspielt. Per Button geb ich die Variable $page weiter - also wenn ich z.b. auf "News" klicke, dann lautet der Aufruf index.php?page=news - und in die index.php wird im vorgegebenen Bereich die Datei "news.php" geladen.

Bei dem Hack ist laut Mail vom Provider folgendes passiert:

Email

wie besprochen hier der problematische Codeteil:
########################################################

```
<?php
if ($_REQUEST[page]=="") {
$page="aktuelles";
} else {
$page="$_REQUEST[page]";
}
include "$page.php";
?>
```

########################################################
In der "index.html" werden die includes per Variable nachgeladen.

$_REQUEST[page] kann ich selbst übergeben, also Code nachladen, in diesem 

Fall eine PHP-Shell von einem anderen Server

(http://mitglied.lycos.de/b0mbed/cse.gif) , die sich im /tmp installiert 

hat. Durch diesen Zugriff wurde auf

"http://www.meineseite.com" * ein FTP Programm installiert.

* Domain möchte ich hier nicht bekanntgeben - nicht, daß da noch weitere Server- bzw. Seitensicherheitslücken ausgenützt werden...

Also nochmal langsam zum Mitschreiben (und ich will da wirklich niemanden festnageln - es geht mir nur ums Verständnis):

index.php?page=http://

ist nur dann zulässig, wenn allow_url_fopen auf ON steht?

Danke für eure Mühe...


----------



## Dennis Wronka (20. August 2005)

Schau einfach mal in die von mir verlinkte Dokumentation zu include(), dort steht es drin.
include()


----------



## TinaX (20. August 2005)

Ok, reptiler - werd mir das mal zu Gemüte ziehen.

Vielen herzlichen Dank für deine (eure) Hilfe!

LG, TinaX


----------



## Dennis Wronka (20. August 2005)

Du hast mit Deinem Post ja perfekt abgewartet bis ich vom Einkaufen wieder da war. 

Ich wuensche Dir viel Erfolg.


----------



## Gumbo (20. August 2005)

Grundsätzlich sind vom Benutzer übergebene Daten _i?m?m?e?r_ mit besonderer Vorsicht zu verarbeiten, egal ob diese per URL-Parameter oder einem Formular übergeben wurden.

Die Kosten der Beseitigung der Mängel der Server-Konfiguration dir in Rechnung zu stellen, halte ich für lächerlich. Klar hast du den Angriff durch dein Skript wahrscheinlich erst ermöglicht, allerdings sollten die Anbieter schon wissen, was bei welcher Server-Einstellung alles möglich ist.


----------



## TinaX (20. August 2005)

Gumbo hat gesagt.:
			
		

> Die Kosten der Beseitigung der Mängel der Server-Konfiguration dir in Rechnung zu stellen, halte ich für lächerlich. Klar hast du den Angriff durch dein Skript wahrscheinlich erst ermöglicht, allerdings sollten die Anbieter schon wissen, was bei welcher Server-Einstellung alles möglich ist.


 
Richtig & Danke - seh ich auch so...

@reptiler: 


> Du hast mit Deinem Post ja perfekt abgewartet bis ich vom Einkaufen wieder da war.


Zufall? Vielleicht hast du ja auch ein paar Sicherheitslücken am Rechner und ich überwache dich schon seit deiner Geburt? ;-)
Nochmals vielen Dank.

LG, TinaX


----------



## Dennis Wronka (20. August 2005)

Glaub ich kaum, da ich in der Regel Linux nutze. 
Auch da gibt's zwar Sicherheitsluecken, aber nicht so gravierende wie bei Windows, und man kann es auch besser absichern.
Ich bin auch recht ungern mit Windows im Internet, bevorzuge dafuer Linux.
Besonders wo ich hier keinen Linux-Server mehr zwischen mir und dem Internet habe wie's back in "good", old Germany der Fall war.

Und dann waere da noch die Sache mit der Geburt, wo sich die Frage stellt ob Du denn aelter bist als ich?


----------

