Seite 1 von 1

injectionCheck-Script zur Absicherung Eurer Projekte

Verfasst: Fr 1. Aug 2008, 15:44
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

Verfasst: Fr 1. Aug 2008, 16:16
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.

Verfasst: Di 23. Sep 2008, 21:36
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