Prüfung der Verzeichnisberechtigungen

Informationen rund um die Sicherheit des Webs - Shops
Antworten
janbyte
Beiträge: 2
Registriert: Do 7. Apr 2011, 14:07
Shop Version: ecombase 1.0.4

Prüfung der Verzeichnisberechtigungen

Beitrag von janbyte »

Hallo,

ich teste gerade die Version 1.0.16 auf einem CentOS Server und mir wird im Backend angezeigt, dass die Schreibberechtigungen der nonWriteableDirs nicht passwn würden.

Auf der Kommandozeile wird mir aber 755 für die Verzeichnisse angezeigt.

Könnte es sein, dass die Meldung im Pfad /lang/german/admin in der Datei start.php falsch hinterlegt ist und die Berechtigung 555 anstatt 755 sein sollte.

Original:
define('TEXT_FOLDER_WARNING_IS_WRITEABLE','<b>WARNUNG:</b><br />Folgende Verzeichnisse sind vom Server beschreibbar. Bitte &auml;ndern Sie die Zugriffsrechte (Permissions) dieser Verzeichnisse aus Sicherheitsgr&uuml;nden. <b>(755)</b> bei Unix, <b>(read-only)</b> bei Windows.');

Neu:
define('TEXT_FOLDER_WARNING_IS_WRITEABLE','<b>WARNUNG:</b><br />Folgende Verzeichnisse sind vom Server beschreibbar. Bitte &auml;ndern Sie die Zugriffsrechte (Permissions) dieser Verzeichnisse aus Sicherheitsgr&uuml;nden. <b>(555)</b> bei Unix, <b>(read-only)</b> bei Windows.');

Danke

Jan
Xantiva
Beiträge: 948
Registriert: Mo 10. Mai 2010, 16:26
Shop Version: 1.0.10 [dev]
Kontaktdaten:

Re: Prüfung der Verzeichnisberechtigungen

Beitrag von Xantiva »

Bei einigen System ist auch 750 in Ordnung hast Du das mal probiert?
Mein Shop: http://www.basteln-selbermachen.de
janbyte
Beiträge: 2
Registriert: Do 7. Apr 2011, 14:07
Shop Version: ecombase 1.0.4

Re: Prüfung der Verzeichnisberechtigungen

Beitrag von janbyte »

Xantiva hat geschrieben:Bei einigen System ist auch 750 in Ordnung hast Du das mal probiert?
Wenn ich 750 auf das Admin Verzeichnis setze geht gar nichts mehr im Backend.

Ich habe mal ein wenig getest und bin auf folgende Lösung gekommen.
Erweiterung der Datei security_check.php im Verzeichnis /admin/includes/modules
um eine zusätzliche Funktion (Variante von checkWriteable) , die Berechtigungsflags des Owners bleiben ungetastet.

function checkWriteableOnlyOwner($file) {
static $uid=NULL, $groups=NULL;

$result = false;

$fperm = fileperms($file);
if (function_exists('posix_getuid')) {
if ($uid === NULL) {
$uid = posix_getuid();
$groups = posix_getgroups();
}

if (($fperm & 0002) or
($fperm & 0020 and in_array(filegroup($file), $groups)) or
(fileowner($file) == $uid)) {
$result = true;
}

} else {
$result = (($fperm & 0022) !=0);
}
return $result;
}

------------

Zusätzlich habe ich in der Datei die Zeile 108 auf die neue Funktion angepaßt:
108 Original: if (checkWriteable($dir)) {

108 Neu: if (checkWriteableOnlyOwner($dir)) {

Grüsse

Jan
Antworten