injectionCheck-Script zur Absicherung Eurer Projekte

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
sangrio
Beiträge: 9
Registriert: Fr 26. Sep 2003, 22:12
Wohnort: HH / HL
Kontaktdaten:

injectionCheck-Script zur Absicherung Eurer Projekte

Beitrag von sangrio »

Da auch ich mit einigen Projekten von Injection-Versuchen betroffen war, habe ich ein kleines Script geschrieben,
welches einfach in die betroffenen Dateien inkludiert werden kann und dann sowohl den Querystring, als auch die Post-Variablen auf verdächtige Strings überprüft.

Die betroffenen Dateien sind:

/contenido/backend_search.php
/contenido/classes/class.inuse.php
/contenido/classes/class.htmlelements.php
/contenido/cronjobs/move_articles.php
/contenido/cronjobs/move_old_stats.php
/contenido/cronjobs/optimize_database.php
/contenido/cronjobs/run_newsletter_job.php
/contenido/cronjobs/send_reminder.php
/contenido/cronjobs/session_cleanup.php
/contenido/cronjobs/setfrontenduserstate.php
/contenido/includes/include.logs.php
/contenido/includes/include.con_subnav.php
/contenido/includes/include.grouprights_subnav.php
/contenido/includes/include.right_top_blank.php
/contenido/includes/include.rights_subnav.php
/contenido/includes/include.subnav.php
/contenido/includes/include.tpl_subnav.php
/contenido/includes/include.newsletter_jobs_subnav.php
/contenido/plugins/content_allocation/includes/include.right_top.php
/contenido/external/frontend/news.php

Ich habe hier alle mir bekannten Dateien aufgelistet.
Je nach Contendio-Version kann es vorkommen, dass Dateien nicht existieren - also nicht wundern :-)


Hier das Script, welches als ic.php im Root-Verzeichnis eurer Domain abgelegt werden muss:

Code: Alles auswählen

<?PHP
/********************************************
*  sangrio injectionCheck 1.3 [20080801]
*  Mirco Schmidt | mirco@sangrio.de
*  http://www.sangrio.de/ic/
*********************************************/

function ic()
	{
	$strings = array("http","ftp","telnet","request","file","mail","script","javascript","cfg","config","inc","cd","wget","fopen","fwrite","get","insert","include","require","passwd","password","rm","rmdir","mkdir","chmod","chown","vi","kill","reboot","reload","halt","stop","getenv","etc","bin","www","root","txt","cgi","pl","eml","js","css","jsp","sql","mysql","into","select","cc","bcc","apparently-to","boundary","charset","content-type","content-transfer-encoding","errors-to","reply","message","mime","multipart");

	if($_SERVER['QUERY_STRING']) { foreach($strings as $var) { if(strstr($_SERVER['QUERY_STRING'],$var)) { $attempt = 1; } } }
	if($_POST) { foreach($strings as $var) { foreach($_POST as $key=>$value) { if(strstr($key,$var) || strstr($value,$var)) { $attempt = 1; } } } }
	
	if($attempt)
		{
		header("Location: http://" . $_SERVER['HTTP_HOST']);
		die();
		}
	}

ic();
?>

Um die betroffenen Dateien mit dem Script zu schützen, einfach diesen
Code am Anfang aller oben aufgeführten Dateien einfügen:

Code: Alles auswählen

include($_SERVER["DOCUMENT_ROOT"] . "/ic.php");
Als kleines Dankeschön würde ich mich über einen Link auf meine Seite www.sangrio.de oder www.sangrio.com freuen. Herzlichen Dank :wink:

Sonnige Grüße von der Ostsee,
Mirco
frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Beitrag von frederic.schneider_4fb »

Hallo Mirco,

vielen Dank für deine Bemühungen. Aber hast du dir schon einmal die neue Version 4.8.7 angesehen? Dort wurde eine Sicherheitsklasse (class.security.php) implementiert.
Vince
Beiträge: 122
Registriert: So 6. Mär 2005, 12:53
Kontaktdaten:

Beitrag von Vince »

moin,

ist das nur für die frühen 4.8er Versionen?
Denn bei der 4.6.24 funktioniert das nicht so ganz, die Website wird danach nicht mehr angezeigt, das Backend läuft auch nicht rund.

Ich hab die Inkludierung bei den Dateien unter classes und cronjobs wieder entfernt (ausser run_newsletter_job.php, weil ich den Newsletter nicht nutze), danach lief alles wieder.

Nur so als Info.

greetz, Vince
Antworten