[VOTING] XH 1.6.10

Discussions and requests related to new CMSimple features, plugins, templates etc. and how to develop.
Please don't ask for support at this forums!
frase
Posts: 3325
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: [VOTING] XH 1.6.10

Post by frase » Thu May 28, 2020 12:38 pm

Holger wrote:
Thu May 28, 2020 12:30 pm
[Edit] Sorry, vergessen:

Auf welchem Weg soll die Datei gesendet werden?

Einfach als Download.
[/Edit]
Das könnte dann wieder JEDER machen und es bringt keine Sicherheit - oder?

Holger
Site Admin
Posts: 3209
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany
Contact:

Re: [VOTING] XH 1.6.10

Post by Holger » Thu May 28, 2020 12:45 pm

frase wrote:
Thu May 28, 2020 12:38 pm
Holger wrote:
Thu May 28, 2020 12:30 pm
[Edit] Sorry, vergessen:

Auf welchem Weg soll die Datei gesendet werden?

Einfach als Download.
[/Edit]
Das könnte dann wieder JEDER machen und es bringt keine Sicherheit - oder?
Natürlich JEDER. Aber was willst Du mit einem selbst generiertem Passwort - Hash für meine Installation, wenn Du die Datei dann nicht hochladen kannst, weil Dir der FTP-Zugang fehlt.

Gert
Posts: 3075
Joined: Fri May 30, 2008 4:53 pm
Location: Berlin
Contact:

Re: [VOTING] XH 1.6.10

Post by Gert » Thu May 28, 2020 12:51 pm

Holger wrote:
Thu May 28, 2020 12:30 pm
Aber wenn ich es jetzt richtig verstanden habe (verbessere mich, wenn ich es immer noch nicht kapiert habe), hast Du ja ein Zeitfenster, während dem ein anderer User Unfug machen könnte. ...
Genau darum geht es ja die ganze Zeit. Ja, die jetzige downloadbare Testversion hat ein Zeitfenster von max. 5 min, vom Upload der setupControl.php an gerechnet. Nach erfolgtem PasswortSetup schliesst das Zeitfenster aber sofort, das Zeitfenster verkürzt sich also insgesamt auf wenige Sekunden. Nur bei Abbruch des Setup wird Setup erst nach 5 min wieder inaktiv.

Holger wrote:
Thu May 28, 2020 12:30 pm
... Mit obigem Vorschlag könnte auch dies noch umgangen werden.
Ja, aber auch nur per ftp, genauso wie bei meiner "sicheren Variante". Es bleibt dabei:

Ohne einen letzten Schritt per ftp bleibt immer ein Zeitfenster, denn was der Admin auf der Seite machen kann, kann jeder andere auch machen, solange das Passwort "test" ist oder Setup aktiv ist und der Angreifer das weiss.

Nur: Wie hoch ist die Wahrscheinlichkeit, dass eine Seite wenige Minuten nach Upload angegriffen wird?

Das Problem ist doch nur eine "vergessene Seite" mit Standard Passwort oder aktivem Setup. Das muss ausgeschlossen werden.

===========================

PS: Seit CMSimple den Admin im Backend mit einem grossen schwarz-gelben Hinweisfeld nervt, wenn das Passwort "test" ist, habe ich keine Seite mit Passwort "test" mehr gefunden ;)
Gert Ebersbach | CMSimple | Templates - Plugins - Services

frase
Posts: 3325
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: [VOTING] XH 1.6.10

Post by frase » Thu May 28, 2020 1:17 pm

Holger wrote:
Thu May 28, 2020 12:45 pm
Natürlich JEDER. Aber was willst Du mit einem selbst generiertem Passwort - Hash für meine Installation, wenn Du die Datei dann nicht hochladen kannst, weil Dir der FTP-Zugang fehlt.
Stimmt, sorry! (Mir qualmt schon dor Kopp.)
Gert wrote:
Thu May 28, 2020 12:51 pm
Ohne einen letzten Schritt per ftp bleibt immer ein Zeitfenster, denn was der Admin auf der Seite machen kann, kann jeder andere auch machen, solange das Passwort "test" ist und der Angreifer das weiss.
Es scheint sich so langsam herauszukristallisieren, dass es bei dir wahrscheinlich wirklich die sicherste Methode ist.
Das dürfte wohl kaum jemand bestreiten.
Gert wrote:
Thu May 28, 2020 12:51 pm
Nur: Wie hoch ist die Wahrscheinlichkeit, dass eine Seite wenige Minuten nach Upload angegriffen wird?
Das Problem ist doch nur eine "vergessene Seite" mit Standard Passwort oder aktivem Setup. Das muss ausgeschlossen werden.
Wenn man bedenkt, dass es fast 20 Jahre OHNE ging, dann scheint das was wir hier treiben, ziemlich abgefahren.

Ich favorisiere momentan ein Kombination aus verschiedenen Vorschlägen:
  • Auslieferung mit "test" - wie bisher.
  • Bei Erstaufruf der Site (eben solange "test" drinsteht): Passwort-Eingabemaske
  • aus dem Passwort wird eine Datei erstellt und zum Download angeboten
  • User muss diese Datei herunterladen und per FTP hochladen
  • nach Upload => Addresse neu laden => es geht "normal" weiter
Das entspricht im Wesentlichen einem Holger-Vorschlag.

Vielleicht genügt es aber auch, nur Christophs Patch einzuführen :?: :shock:
Wenn man bedenkt, wie andere Systeme das gemacht haben ... auf jeden Fall nicht besser.

Gert
Posts: 3075
Joined: Fri May 30, 2008 4:53 pm
Location: Berlin
Contact:

Re: [VOTING] XH 1.6.10

Post by Gert » Thu May 28, 2020 1:43 pm

frase wrote:
Thu May 28, 2020 1:17 pm
- aus dem Passwort wird eine Datei erstellt und zum Download angeboten
- User muss diese Datei herunterladen und per FTP hochladen
Jetzt aber noch einmal die Frage:

Was ist daran besser, einen Download von wo auch immer zu generieren, den der User dann herunter- und wieder hochladen muss, als gleich eine Datei auf dem Webserver zu erzeugen, die dann in config.php umbenannt werden muss?

Für beide Varianten ist ftp notwendig.

Holger wrote:
Thu May 28, 2020 11:37 am
BTW: die fünf Minuten könnte man auch einfach am Alter der config.php festmachen. Ist die Datei älter als 5 Minuten und das Passwort ist "test" -> kein Login mehr möglich -> Config.php muss neu hochgeladen werden.
Nach einigem Nachdenken: Keine schlechte Idee, nur würde ich das nicht mit der config.php machen, da das eine veränderliche Datei ist. Nicht jeder hat auf dem PC gleich ein aktuelles Backup der config.php zur Hand. Diese Funktion soll ja bei mir auch später noch nutzbar sein, als "Passwort vergessen" Funktion.

Wie wäre es mit der index.php?

Oder aber eine leere Dummy Datei, so wie jetzt. Ist die nicht vorhanden, oder älter als 5 min, und Passwort ist test, dann kein Login möglich.

Das könnte man alles in der login.php regeln, mit ein paar Zeilen Code. Wäre dann auch Sicherheitsstufe "Kompromiss" (mit Zeitlücke).
Gert Ebersbach | CMSimple | Templates - Plugins - Services

Gert
Posts: 3075
Joined: Fri May 30, 2008 4:53 pm
Location: Berlin
Contact:

Re: [VOTING] XH 1.6.10

Post by Gert » Thu May 28, 2020 4:30 pm

Hallo,

habe jetzt mal Holgers Idee als Grundlage genommen, Änderungen nur in der login.php:

Code: Select all

// timeout in seconds
$setup_timeOut = 300;
$cmsimpleLogin = '';

if(file_exists('./setupControl.php') && (time() - filectime('./setupControl.php') > $setup_timeOut) && $xh_hasher->CheckPassword('test', $cf['security']['password'])) $cmsimpleLogin = 'closed';
if(!file_exists('./setupControl.php') && $xh_hasher->CheckPassword('test', $cf['security']['password'])) $cmsimpleLogin = 'closed';
if(file_exists('./setupControl.php') && (time() - filectime('./setupControl.php') > $setup_timeOut)) unlink('./setupControl.php');

if ($login && !$adm) 
{
	if ($xh_hasher->CheckPassword($passwd, $cf['security']['password']) && $cmsimpleLogin !== 'closed')
	{
		setcookie('status' . str_replace('.','xc6oMd3Rs689',str_replace('index.php','',$sn)), 'adm', 0, CMSIMPLE_ROOT);
		setcookie('status', 'adm', 0, CMSIMPLE_ROOT);
		setcookie('passwd', $cf['security']['password'], 0);
		$adm = true;
		$edit = true;
		if(!isset($_SESSION) && isset($_POST['passwd']) && $adm == true){session_start();}
		$_SESSION[$csrfSession] = uniqid('', true);
		writelog(date("Y-m-d H:i:s") . " from " . sv('REMOTE_ADDR') . " logged_in: $sn" . ' - "' . strip_tags($_POST['user']) ."\"\n");
		unlink('./setupControl.php');
	}
	else
	...
	
Die Experten solten den Code lesen können, für alle anderen:

- ./setupControl.php NICHT vorhanden und Passwort "test": kein Login möglich
- ./setupControl.php älter als 5 min und Passwort "test": kein Login möglich

./setupControl.php wird gelöscht:

- bei erfolgreichem Login
- wenn älter als 5 min bei jedem Aufruf von CMSimple oder einer neuen Seite

Basis ist CMSimple 5.0
Gert Ebersbach | CMSimple | Templates - Plugins - Services

Holger
Site Admin
Posts: 3209
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany
Contact:

Re: [VOTING] XH 1.6.10

Post by Holger » Thu May 28, 2020 4:37 pm

Gert wrote:
Thu May 28, 2020 1:43 pm
Jetzt aber noch einmal die Frage:

Was ist daran besser, einen Download von wo auch immer zu generieren, den der User dann herunter- und wieder hochladen muss, als gleich eine Datei auf dem Webserver zu erzeugen, die dann in config.php umbenannt werden muss?
Vorausgesetzt, dass FTP okay ist, besteht der Unterschied in dem 5-Minuten-Slot. Den gibt es bei meinem Vorschlag definitiv nicht. Du kannst das System jahrelang ohne geändertes Passwort im Netz stehen lassen. Wenn dann, z.B. per Session-Variable, festgelegt wird, dass je Sitzung nur ein- oder zwei Mal ein Passwort generiert wird, wäre das sogar noch ein Schmankerl für die Ressourcenschonung bei Überfällen von irgendwelchen Bots.
Gert wrote:
Thu May 28, 2020 1:43 pm
Nach einigem Nachdenken: Keine schlechte Idee, nur würde ich das nicht mit der config.php machen, da das eine veränderliche Datei ist. Nicht jeder hat auf dem PC gleich ein aktuelles Backup der config.php zur Hand. Diese Funktion soll ja bei mir auch später noch nutzbar sein, als "Passwort vergessen" Funktion.

Wie wäre es mit der index.php?

Oder aber eine leere Dummy Datei, so wie jetzt. Ist die nicht vorhanden, oder älter als 5 min, und Passwort ist test, dann kein Login möglich.
Ja. Die Eignung der config.php hatte ich ja bereits selbst bezweifelt. Ein Dummy macht bei meinem Vorschlag jedoch keinen richtigen Sinn. Es würde aber nichts dagegen sprechen, wenn der Passworthash wirklich in einer eigenen Datei an prominenter Stelle gespeichert werden würde. Wäre halt ein include() per Request mehr und der Inhalt wäre ja lediglich die bekannte Definition der Variable.
Ein Upload dieser Datei sollte jedem gelingen. Schließlich muss das CMS ja auch irgendwie auf den Server. Und Sie wäre, in Deinem Fall, auch der Zugang für einen Passwort-Reset.
Gert wrote:
Thu May 28, 2020 1:43 pm
Das könnte man alles in der login.php regeln, mit ein paar Zeilen Code.
Es bietet sich an, die Sache nicht in einem externen Skript zu erledigen. Direkt im Core hast Du alles an Klassen / Variablen etc. direkt zur Verfügung. Das einzige Argument wäre, dass ein paar Zeilen Code zu viel mitgeschleppt werden wenn das "Setup" einmal abgeschlossen ist. Ich denke aber, dass dies im konkreten Fall nicht wirklich viel ausmacht.

Mir fällt jetzt echt kein Grund ein, weshalb man die Sache mit dem 5 Minuten machen müsste, wenn eh FTP akzeptiert wird.

Holger
Site Admin
Posts: 3209
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany
Contact:

Re: [VOTING] XH 1.6.10

Post by Holger » Thu May 28, 2020 4:47 pm

Gert wrote:
Thu May 28, 2020 4:30 pm
habe jetzt mal Holgers Idee als Grundlage genommen, Änderungen nur in der login.php:
Ahh okay, ich verstehe. Nach dem Upload brauchst Du kein FTP mehr. Musst nur schnell genug sein und das Passwort ändern. Nur wenn die Zeit abgelaufen ist, muss per FTP nachgeholfen werden.
Jetzt habe ich das auch verstanden ;) .

Tja. was ist nun besser? Geschmackssache würde ich sagen. Deine Lösung hat auf den ersten Blick mehr Komfort. Meine hat die 5-Minuten - "Unsicherheit" nicht.
Aber eigentlich bin ich ja gegen die zusätzlichen FTP-Aktionen :?.

Aber gut, dass wir mal drüber gesprochen haben!

frase
Posts: 3325
Joined: Thu Apr 21, 2016 6:32 am
Location: Saxony
Contact:

Re: [VOTING] XH 1.6.10

Post by frase » Thu May 28, 2020 4:47 pm

Holger wrote:
Thu May 28, 2020 4:37 pm
Gert wrote:
Thu May 28, 2020 1:43 pm
Jetzt aber noch einmal die Frage:

Was ist daran besser, einen Download von wo auch immer zu generieren, den der User dann herunter- und wieder hochladen muss, als gleich eine Datei auf dem Webserver zu erzeugen, die dann in config.php umbenannt werden muss?
Vorausgesetzt, dass FTP okay ist, besteht der Unterschied in dem 5-Minuten-Slot. Den gibt es bei meinem Vorschlag definitiv nicht. Du kannst das System jahrelang ohne geändertes Passwort im Netz stehen lassen. Wenn dann, z.B. per Session-Variable, festgelegt wird, dass je Sitzung nur ein- oder zwei Mal ein Passwort generiert wird, wäre das sogar noch ein Schmankerl für die Ressourcenschonung bei Überfällen von irgendwelchen Bots.
Da gibt es noch etwas:
Man kann den gesamten Dialog mit dem User (was ist jetzt zu tun ... usw.) über den Bildschirm abhandeln. Eine Extra-Readme wäre gar nicht nötig.
Irgendwie fühlt sich das für mich "benutzerfreundlicher" an (zumindest momentan).

Holger
Site Admin
Posts: 3209
Joined: Mon May 19, 2008 7:10 pm
Location: Hessen, Germany
Contact:

Re: [VOTING] XH 1.6.10

Post by Holger » Thu May 28, 2020 5:03 pm

frase wrote:
Thu May 28, 2020 4:47 pm
Da gibt es noch etwas:
Man kann den gesamten Dialog mit dem User (was ist jetzt zu tun ... usw.) über den Bildschirm abhandeln. Eine Extra-Readme wäre gar nicht nötig.
Irgendwie fühlt sich das für mich "benutzerfreundlicher" an (zumindest momentan).
Ja. Die Readme - Dateien könnte man schön ausgiebig schreiben, stylen und includen.

Und die Sache wäre von Haus aus (narren) sicher. Aber es muss halt immer ein zweites Mal per FTP Hand angelegt werden. Für mich wäre das kein echtes "Problem". Aber es "gefällt" mir halt nicht sonderlich.

Post Reply