/**
* Reliably set PHP_SELF as a filename .. platform safe
*/
function setPhpSelf() {
$base = ( array( 'SCRIPT_NAME', 'PHP_SELF' ) );
foreach ( $base as $index => $key ) {
if ( array_key_exists( $key, $_SERVER ) && !empty( $_SERVER[$key] ) ) {
if ( false !== strpos( $_SERVER[$key], '.php' ) ) {
preg_match( '@[a-z0-9_]+\.php@i', $_SERVER[$key], $matches );
if ( is_array( $matches ) && ( array_key_exists( 0, $matches ) )
&& ( substr( $matches[0], -4, 4 ) == '.php' )
&& ( is_readable( $matches[0] ) ) ) {
return $matches[0];
}
}
}
}
return 'index.php';
} // end method
$PHP_SELF = setPhpSelf();
// Register needed Post / Get Variables
if ($HTTP_GET_VARS['ref']) $affiliate_id=(int)$HTTP_GET_VARS['ref'];
if ($HTTP_POST_VARS['ref']) $affiliate_id=(int)$HTTP_POST_VARS['ref'];
if ($HTTP_GET_VARS['affiliate_banner_id']) $banner_id = (int)$HTTP_GET_VARS['affiliate_banner_id'];
if ($HTTP_POST_VARS['affiliate_banner_id']) $banner_id = (int)$HTTP_POST_VARS['affiliate_banner_id'];
if ($HTTP_GET_VARS['affiliate_pbanner_id']) $prod_banner_id = (int)$HTTP_GET_VARS['affiliate_pbanner_id'];
if ($HTTP_POST_VARS['affiliate_pbanner_id']) $prod_banner_id = (int)$HTTP_POST_VARS['affiliate_pbanner_id'];
RewriteEngine on
RewriteCond %{QUERY_STRING} ^[^=]*$
RewriteCond %{QUERY_STRING} %2d|\- [NC]
RewriteRule .? . [F,L]
# Diverse xtc Hackversuche abweisen.
RewriteCond %{QUERY_STRING} ^(.*)action=(http|https|ftp)://(.*)$ [NC]
RewriteRule ^.* - [F]
RewriteCond %{QUERY_STRING} ^(.*)coID=(http|https|ftp)://(.*)$ [NC]
RewriteRule ^.* - [F]
RewriteCond %{QUERY_STRING} ^(.*)XTCsid=(http|https|ftp)://(.*)$ [NC]
RewriteRule ^.* - [F]
RewriteCond %{QUERY_STRING} ^(.*)action=https://(.*)$ [NC]
RewriteRule ^.* - [F]
reset($_POST);
while (list($key, $value) = each($_POST)) {
if (!is_array($_POST[$key])) {
$_postVar = preg_replace("/[^ a-zA-Z0-9@%:öäüß\{\}_\.-]/i", "", urldecode($_POST[$key]
$_postVar = preg_replace("/hex|insert into|select |update /i", "", $_postVar);
$_POST[$key] = $_postVar;
$HTTP_POST_VARS[$key] = $_postVar;
} else {
// better use a callback function
unset($_POST[$key]);
} // no arrays expected
Das gleiche dann nochmlas für $_GET einsetzten. Allerdings sind hier keine multi-dim-arrays erlaubt. Bei komplexeren Modifiktionen der Shops (sprachen etc) empfiehlt es sich hier noch einen Workaround zu programmieren.
Auch ist die Einschränkung der Sonderzeichen mit Vorsicht zu geniessen. Da es bei dem Einsatz von fck-Editor zu unschönen Fromatierungen kommen kann.
$whos_online_query = xtc_db_query("select customer_id, full_name, ip_address, time_entry, time_last_click, last_page_url, session_id from " . TABLE_WHOS_ONLINE ." order by time_last_click desc");
while ($whos_online = xtc_db_fetch_array($whos_online_query)) {
+> $whos_online['last_page_url'] = htmlentities($whos_online['last_page_url']);
#!/bin/bash
#
# clean image and tmp - folders by AdOptimize
#
# Alle Ordner die sich innerhalb diesen Ordners befinden werden als BilderOrdner angesehen. Hier sind nur Bilder erlaubt.
# Folglich kann man alle anderen Dateien, die sich nicht als Bild identifizieren lassen löschen
_imageFolder="images";
#
# Diese Folder beinhalten Dateien, welche nur temporaer gebraucht werden und nach einer Ablaufzeit X geloescht werden koennen.
#
_tmpFoldersLivingTime=8;
_tmpFolders="templates_c cache tmp";
#
# clean imageFolders
#
--> Das Script haben wir bisher in diesem Umfang noch nicht eingesetzt, so dass wir uns die Zeit nehmen muessen verschiedene Einzelscript die bei uns im Einsatz sind hier zu vereinigen.
Bitte um etwas Geduld bei der Verfollstaendigung dieser Seite oder geben Sie uns direkt den Auftrag Ihren Webserver abzusichern. info@adoptimize.de
find -user www-data -type d -perm /u+w
Die da aufgeführten Folder sind zu überprüfen ob es auch sinnig ist diese so mit den Schreibrechten zu versehen. Die Insepktion der Folder kann und sollte natuerlich noch auf Guppen erweitert werden.
find -type d -exec ls -ld {} \; | grep drwxrwxr
oder
find -type d -exec ls -ld {} \; | grep drwxrwxrwx
order allow,deny deny from all
1. Nach der Zeile: $_GET[$vars[$i]] = htmlspecialchars($vars[$i +1]); if(get_magic_quotes_gpc()) $_GET[$vars[$i]] = addslashes($_GET[$vars[$i]]); einfügen. 2. Nach der Zeile: $_GET[$key] = htmlspecialchars($value); if(get_magic_quotes_gpc()) $_GET[$key] = addslashes($_GET[$key]); einfügenIn der Datei includes/modules/metatags.php, fügen Sie ein (int) vor dem _GET['coID'] - Parameter ein, so dass immer nur echte Zahlen übergeben werden.
Aus:
$categories_meta_query = xtDBquery("SELECT categories_meta_keywords,
categories_meta_description,
categories_meta_title,
categories_name
FROM " . TABLE_CATEGORIES_DESCRIPTION . "
WHERE categories_id='" . $_cPath . "' and
language_id='" . (int)$_SESSION['languages_id'] . "'");
wird
$categories_meta_query = xtDBquery("SELECT categories_meta_keywords,
categories_meta_description,
categories_meta_title,
categories_name
FROM " . TABLE_CATEGORIES_DESCRIPTION . "
WHERE categories_id='" . (int)$_cPath . "' and
language_id='" . (int)$_SESSION['languages_id'] . "'");
und aus:
$contents_meta_query = xtDBquery("SELECT content_heading
FROM " . TABLE_CONTENT_MANAGER . "
WHERE content_group='" . $_GET['coID'] . "' and
languages_id='" . (int)$_SESSION['languages_id'] . "'");
wird
$contents_meta_query = xtDBquery("SELECT content_heading
FROM " . TABLE_CONTENT_MANAGER . "
WHERE content_group='" . (int)$_GET['coID'] . "' and
languages_id='" . (int)$_SESSION['languages_id'] . "'");
Hinweis: An den stellen wo immer Zahlenwerte gefragt sind, sollten die übergebenen Werte mit (int) auch zu echte Zahlen konvertiert werden.
$blz_query = xtc_db_query("SELECT * from banktransfer_blz WHERE blz = '" . $blz . "'");
muss mit
$blz_query = xtc_db_query("SELECT * from banktransfer_blz WHERE blz = '" . xtc_db_input($blz) . "'");
abgesichert werden.
$_SESSION['billto'] = xtc_db_prepare_input($_POST['address']);
in
$_SESSION['billto'] = (int)($_POST['address']);
geändert werden.
if (strpos($email,"\0")!==false) {return false;}
#!/bin/bash
# find infected files and remove the virus
#
# VORSICHT das script ist mächtig und kann mächtig viel kaputt machen es gibt noch ein paar
# besondere Fälle, welches das script noch nicht behebt. Deshalb undbindet vorab testen und
# vorher nachher vergleichen
#
# die infizierten files sind in diesem Fall mit 68c8c7 umgeben gewesen
# der teil welcher den virus kennzeichnete war in dieser Form im Quellcode
#
# <!-- 68c8c7 --> ...bla ..<!--/68c8c7-->
# #68c8c7# ...bla ..#/68c8c7
# /*68c8c7*/ ...bla ../*/68c8c7*/
#
# Das Script entfernt alles zwischen den oben genannten elementen
_infected=`grep -ril '68c8c7' ./`
for file in $_infected;
do
if [[ "$file" =~ "hacked_files" ]];
then
echo "backde up files $file";
else
# posix hack wegen letzter line die keinen
# zeilenumbruch hat und deshalb im loop verloren geht
echo -e "\n" >> $file;
LINEOUT="";
close=1;
while IFS='' read -r LINE; do
if [[ "$LINE" =~ "68c8c7" ]]; then
if [[ "$LINE" =~ "/68c8c7" ]]; then
close=1;
else
close=0;
fi
#if [[ "${LINE}" =~ ".68c8c7.*68c8c7." ]]; then
# echo "one Liner"
#else
# echo "two Liner"
#fi
CLEANLINE=`echo ${LINE} | sed -E 's/68c8c7.*68c8c7/ ADOPTIMIZE REMOVER /';`
LINEOUT=`echo -e "$LINEOUT \n $CLEANLINE"`;
else
if [ $close -eq 1 ];
then
LINEOUT=`echo -e "${LINEOUT}\n${LINE}\n"`
fi
fi;
done <"$file";
echo "${LINEOUT}" > $file.hack
mv $file.hack $file;
## ende backup files unberuehrt lassen
fi
done;
Zeichenerklärung |
||
| Hinweis: | ||
| Verweies innerhalb der Seite: | ||
| Link auf eine Erklärung im Detail: | ||
| Verweies auf eine andere Webseite: |
We optimize your success |
| ERP- & Marketing Software + Beratung |
| Google Adwords, Yahoo & Affiliates |