Modify

Opened 9 years ago

Closed 9 years ago

Last modified 7 years ago

#966 closed Bug/Fehler (fixed)

xss_secure.php

Reported by: Volker Strähle Owned by: somebody
Priority: normal Milestone: modified-shop-2.0.1.0
Component: Sicherheit Version: 2.0.0.0
Keywords: Cc:
Blocked By: Blocking:

Description

Kann es sein, dass die Funktion zum Versand der Mail an den Admin im Angriffsfall fehlt?

Geloggt wird das, aber eine Mail habe ich nicht bekommen.

Attachments (0)

Change History (10)

comment:1 by Gerhard Waldemair, 9 years ago

Resolution: wontfix
Status: newclosed

zum Zeitpunkt der Ausführung ist keine Datenbankverbindung vorhanden, wodurch wir auch keine eMail Adresse haben.

comment:2 by Volker Strähle, 9 years ago

Das ist genau der Grund warum ich schon mal vorgeschlagen habe eine Fallback-config in Dateiform zu haben. So kann immer die Mail eines Admins gelesen werden und auch bei DB-Problemen trotzdem eine Mail gesendet werden. Etwa auch wen der Verbindungsaufbau zum DB-Server fehl schlägt.

comment:3 by Torsten Riemer, 9 years ago

Milestone: modified-shop-2.0.1.0modified-shop-2.1.0.0
Resolution: wontfix
Status: closedreopened

Keine schlechte Idee. Ich verschiebe das Ticket mal nach 2.1.0.0

comment:4 by Volker Strähle, 9 years ago

Ich hatte für die Rev 8016 mal folgendes:

autoinclude im Adminbereich:

if ($PHP_SELF == DIR_WS_ADMIN."configuration.php"){

	// Save Config to file - 2015-01-23, webald
 
	$fp=fopen(DIR_FS_DOCUMENT_ROOT.'/includes/temp_config.php','a');
	fwrite($fp,"<?php");
	fwrite($fp,"\r\n");
	$vs_configuration_query = xtc_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from '.TABLE_CONFIGURATION);
	while ($vs_configuration = xtc_db_fetch_array($vs_configuration_query)) {
		fwrite($fp,"if(!defined('".$vs_configuration['cfgKey']."')){");
		fwrite($fp,"define('".$vs_configuration['cfgKey']."', '".stripslashes($vs_configuration['cfgValue'])."');");
		fwrite($fp,"}");
		fwrite($fp,"\r\n");
	}
	fwrite($fp,"?>");
	fclose($fp);
			
	$rows1 = file(DIR_FS_DOCUMENT_ROOT.'/includes/temp_config.php');

	if(file_exists(DIR_FS_DOCUMENT_ROOT.'/includes/current_config.php')){
		$rows2 = file(DIR_FS_DOCUMENT_ROOT.'/includes/current_config.php');
		$diffRows = array_diff($rows1, $rows2);
		if(count($diffRows)>0){
			chmod(DIR_FS_DOCUMENT_ROOT.'/includes/current_config.php',0644);
			unlink(DIR_FS_DOCUMENT_ROOT.'/includes/current_config.php');
		}
	}
	rename(DIR_FS_DOCUMENT_ROOT.'/includes/temp_config.php', DIR_FS_DOCUMENT_ROOT.'/includes/current_config.php');
	chmod(DIR_FS_DOCUMENT_ROOT.'/includes/current_config.php',0444);
}

In xtc_db_connect() wird dann ggf. die Ersatzconfig geladen und Fehler konnten abgeschickt werden.

Für xss_secure wäre das zu spät. Unter diesem Geschtspunkt wäre es besser bestimmte Basis-Daten wie Webmaster-Email oder Telefon in eine Notfall-Config auszulagern.

comment:5 by h-h-h, 9 years ago

Das Problem ist mir auch schon aufgefallen.

Es müsste eigentlich nur die configure.php vor der xss_security geladen werden, dann können ein oder zwei Konstanten in die configure.php mit aufgenommen werden.

In der xss_security wird die Mail-Funktion vom vorhanden sein der Konstanten abhängig gemacht.

comment:6 by Volker Strähle, 9 years ago

Hätte da noch einen Vorschlag:

Neue configuration-group "99". Alles in "99" wird bei jeder Änderung im BE in eine emergency-config.php geschrieben (Code etwa wie oben). Diese Date wird immer als erstes in application_top geladen. Alle Einstellungen in Gruppe 99 werden somit aus der Datei unabhängig der DB geladen und können genutzt werden.

Beim späteren Laden der normalen Config wird alles außer 99 geladen.

Steuerung übers BE möglich.

Fertig!

comment:7 by Gerhard Waldemair, 9 years ago

@h-h-h
die xss_secure wird bewusst vor allem anderen geladen und keine DB Verbindung gemacht. Ich könnte mir durchaus eine Lösung wie webald es geschrieben hat vorstellen.

comment:8 by anonymous, 9 years ago

Ich dachte ich muss es nicht erwähnen, doch es gibt keinen Angriffsvektor über die configure.php in dem Zusammenhang und eine Datenbankverbindung gibt es an der Stelle auch noch nicht.

comment:9 by Gerhard Waldemair, 9 years ago

Resolution: fixed
Status: reopenedclosed

In 10140:

fix #966

comment:10 by Torsten Riemer, 7 years ago

Milestone: modified-shop-2.1.0.0modified-shop-2.0.1.0

Modify Ticket

Action
as closed The owner will remain somebody.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.