Druckversion des Themas

Hier klicken um das Topic im Orginalformat anzusehen

Forum Sefrengo.org _ Releases _ Sefrengo v1.6.1

Geschrieben von: mvsxyz Sun. 4. January 2015, 15:32

Sefrengo v1.6.1

Dokumente
http://wiki.sefrengo.org/handbuch/installation
http://wiki.sefrengo.org/handbuch/update
http://wiki.sefrengo.org/faq/installation
http://wiki.sefrengo.org/handbuch/schnelleinstieg-tutorial-die-erste-sefrengo-webseite-erstellen

Beim Update beachten



Changelog - Änderungen v1.6.1 zu v1.6.0
QUELLTEXT
See full changelog at <https://github.com/sefrengo-cms/sefrengo-1.x/commits/v1.6.1>

* FIXED: Check numeric variables to prevent SQL injections
* FIXED: Converted searchterm to HTML entities
* FIXED: Updated CKEditor to v4.4.6
* ADDED: Added HTML5 doctype to select in edit layout (thanks to dederpapst3000)




 sefrengo_1.x_1.6.1.zip ( 2.89MB ) : 2284
 

Geschrieben von: mvsxyz Sun. 4. January 2015, 22:30

Ich danke http://sroesemann.blogspot.de für die gefundenen Sicherheitslücken und die Zusammenarbeit.

Geschrieben von: FireFlyer Sat. 10. January 2015, 15:40

Nach dem Update von 1.4.5 auf 1.6.1 kann ich mich leider nicht mehr einloggen. PHP Version 5.3.29
Es kommt folgende Fehlermeldung:
ERROR! Found non-numeric variable which must be numeric! Execution was stopped, due to a possible SQL injection.

aus der backend/main.php:

QUELLTEXT
// check numeric vars to prevent SQL injection errors
$numeric_vars = array('idclient','idlang','idbackendmenu','idcatlang','idcat','idcatside','iduser','idtpl','idtplconf','parent','rootparent','sortindex','idlay','author','visible','idside','is_start','idclientslang','idcode','idcontainer','idmod','idplug','idcontainerconf','idcontent','idsidelang','idtype','container','number','online','idcss','idcssupl','idupl','sid','iddirectory','parentid','idfiletype','idgroup','idjs','idlang','is_start','idlayupl','idperm','idrepository','idside','idtracker','user_id','idvalues','idval','u_g_id');

foreach($numeric_vars as $varname) {
    if(isset($$varname) && !(empty($$varname) || is_numeric($$varname))) {
        die('ERROR! Found non-numeric variable which must be numeric! Execution was stopped, due to a possible SQL injection.');
        exit;
    }
}


Wurde da eine SQL-Update-Routine nicht durchlaufen?
Was muss ich ändern?

Geschrieben von: mvsxyz Tue. 13. January 2015, 00:31

Ich habe es nun so abgeändert, dass die Ausführung nicht mehr abgebrochen wird, sondern mögliche Strings escaped werden.

QUELLTEXT
// check numeric vars to prevent SQL injection errors
$numeric_vars = array('idclient','idlang','idbackendmenu','idcatlang','idcat','idcatside','iduser','idtpl','idtplconf','parent','rootparent','sortindex','idlay','author','visible','idside','is_start','idclientslang','idcode','idcontainer','idmod','idplug','idcontainerconf','idcontent','idsidelang','idtype','container','number','online','idcss','idcssupl','idupl','sid','iddirectory','parentid','idfiletype','idgroup','idjs','idlang','is_start','idlayupl','idperm','idrepository','idside','idtracker','user_id','idvalues','idval','u_g_id','value_id');

foreach($numeric_vars as $varname) {
    if(isset($$varname) && !(empty($$varname) || is_numeric($$varname))) {
        //die('ERROR! Found non-numeric variable which must be numeric! Execution was stopped, due to a possible SQL injection.');
        $$varname = addslashes($$varname);
    }
}


Bitte mal testen und Rückmeldung geben.

Geschrieben von: sidd Tue. 13. January 2015, 07:28

wenn eine zahl erwartet wird, wäre es nicht besser, statt addslashes, intval zu benutzen?

QUELLTEXT
// check numeric vars to prevent SQL injection errors
$numeric_vars = array('idclient','idlang','idbackendmenu','idcatlang','idcat','idcatside','iduser','idtpl','idtplconf','parent','rootparent','sortindex','idlay','author','visible','idside','is_start','idclientslang','idcode','idcontainer','idmod','idplug','idcontainerconf','idcontent','idsidelang','idtype','container','number','online','idcss','idcssupl','idupl','sid','iddirectory','parentid','idfiletype','idgroup','idjs','idlang','is_start','idlayupl','idperm','idrepository','idside','idtracker','user_id','idvalues','idval','u_g_id','value_id');

foreach($numeric_vars as $varname) {
    if(isset($$varname) && !(empty($$varname) || is_int($$varname))) {
        //die('ERROR! Found non-numeric variable which must be numeric! Execution was stopped, due to a possible SQL injection.');
        $$varname = intval($$varname);
    }
}

Geschrieben von: sidd Tue. 13. January 2015, 09:15

@FireFlyer Evtl. kannst du auch mal folgendes kurzzeitig einfügen um dem Problem auf die Schliche zu kommen.

QUELLTEXT
// check numeric vars to prevent SQL injection errors
$numeric_vars = array('idclient','idlang','idbackendmenu','idcatlang','idcat','idcatside','iduser','idtpl','idtplconf','parent','rootparent','sortindex','idlay','author','visible','idside','is_start','idclientslang','idcode','idcontainer','idmod','idplug','idcontainerconf','idcontent','idsidelang','idtype','container','number','online','idcss','idcssupl','idupl','sid','iddirectory','parentid','idfiletype','idgroup','idjs','idlang','is_start','idlayupl','idperm','idrepository','idside','idtracker','user_id','idvalues','idval','u_g_id');

foreach($numeric_vars as $varname) {
    if(isset($$varname) && !(empty($$varname) || is_numeric($$varname))) {
        die($varname.' ist keine Zahl... Wert ist:'.$$varname);
        exit;
    }
}


Bitte Poste mal dann die Fehlermeldung hier.

LG,
sidd

Geschrieben von: mvsxyz Tue. 13. January 2015, 10:13

ZITAT(sidd @ Tue. 13. January 2015, 07:28) *
wenn eine zahl erwartet wird, wäre es nicht besser, statt addslashes, intval zu benutzen?


Gute Idee! Das könnte allerdings zu unerwarteten Ergebnissen führen, da er evtl. einen falschen int value ausließt. Wenn ich mögliche Eingaben mit addslashes escape, dann findet die DB keinen Eintrag und bricht die Ausführung ab.

Geschrieben von: sidd Tue. 13. January 2015, 11:31

ZITAT(mvsxyz @ Tue. 13. January 2015, 10:13) *
Gute Idee! Das könnte allerdings zu unerwarteten Ergebnissen führen, da er evtl. einen falschen int value ausließt. Wenn ich mögliche Eingaben mit addslashes escape, dann findet die DB keinen Eintrag und bricht die Ausführung ab.


Hi mvsxyz....

das raff ich nicht....
diese stelle erwartet doch eine ID oder bool,oder?

die einizige variable wäre "sid", welche alphanumerisch ist.... ist das evtl. schon der fehler?

LG

Geschrieben von: mvsxyz Tue. 13. January 2015, 16:45

Danke, für deinen Input. Ich werde es nochmals damit testen.

Geschrieben von: FireFlyer Tue. 13. January 2015, 17:40

@sidd:
Jetzt bekomm ich die genaue Stelle angezeigt:
sid ist keine Zahl... Wert ist:a32179a5a0fac2b881df36a4e064d765

EDIT
Hiermit getestet:

QUELLTEXT
// check numeric vars to prevent SQL injection errors
$numeric_vars = array('idclient','idlang','idbackendmenu','idcatlang','idcat','idcatside','iduser','idtpl','idtplconf','parent','rootparent','sortindex','idlay','author','visible','idside','is_start','idclientslang','idcode','idcontainer','idmod','idplug','idcontainerconf','idcontent','idsidelang','idtype','container','number','online','idcss','idcssupl','idupl','sid','iddirectory','parentid','idfiletype','idgroup','idjs','idlang','is_start','idlayupl','idperm','idrepository','idside','idtracker','user_id','idvalues','idval','u_g_id');

foreach($numeric_vars as $varname) {
    if(isset($$varname) && !(empty($$varname) || is_numeric($$varname))) {
        die($varname.' ist keine Zahl... Wert ist:'.$$varname);
        exit;
    }
}


Der besagte Wert ist in der cms_db_cache gespeichert. Und es gibt dort auch noch 6 weitere.

Im http://wiki.sefrengo.org/handbuch/administration/caching steht schon was über diese Tabelle, aber diese wird normalerweise von SF gelöscht und bis ins Backend schaff ich es ja nicht.
Ich lass die Zeilen noch drin stehen. Sollte bei der Prüfung evtl diese Tabelle zuvor geleert werden?

Geschrieben von: sidd Tue. 13. January 2015, 19:09

das ist das was ich vermutet hatte....

ersetzte es vorerst (bis zum nächsten offiziellen fix) mit

QUELLTEXT
// check numeric vars to prevent SQL injection errors
$numeric_vars = array('idclient','idlang','idbackendmenu','idcatlang','idcat','idcatside','iduser','idtpl','idtplconf','parent','rootparent','sortindex','idlay','author','visible','idside','is_start','idclientslang','idcode','idcontainer','idmod','idplug','idcontainerconf','idcontent','idsidelang','idtype','container','number','online','idcss','idcssupl','idupl','sid','iddirectory','parentid','idfiletype','idgroup','idjs','idlang','is_start','idlayupl','idperm','idrepository','idside','idtracker','user_id','idvalues','idval','u_g_id');

foreach($numeric_vars as $varname) {
    if(isset($$varname) && !(empty($$varname) || is_numeric($$varname))) {
        if($varname=="sid"){
          $$varname = mysql_real_escape_string($$varname);
        }else{
          die('ERROR! Found non-numeric variable which must be numeric! Execution was stopped, due to a possible SQL injection.');
          exit;
        }
    }
}


LG

Geschrieben von: FireFlyer Tue. 13. January 2015, 19:16

Klappt, wenn die sid nicht geprüft wird von SIDD! biggrin.gif

Geschrieben von: sidd Tue. 13. January 2015, 19:44

fein fein ... wink.gif
sid wird zwar nicht geprüft, aber abgesichert wink.gif

somit ist das problem erkannt und kann von mvsxyz gefixxt werden.
Danke für deine Unterstützung, beim finden des Fehlers.

LG

Geschrieben von: FireFlyer Tue. 13. January 2015, 19:46

Kein Thema. Is des schön, wenn mal wieder was zusammen geht! Auf geht's Jungs!!!

Geschrieben von: bkm Tue. 13. January 2015, 20:35

Deprecated (mysql_real_escape_string)

Geschrieben von: sidd Wed. 14. January 2015, 08:56

deswegen

ZITAT
ersetzte es vorerst (bis zum nächsten offiziellen fix)

Geschrieben von: bkm Wed. 14. January 2015, 18:42

ZITAT(sidd @ Wed. 14. January 2015, 08:56) *
deswegen

So schreibts ja nur einer ab und ab einer PHP Version x gibts dann wieder eine Fehlermeldung.
Einfacher sid aus dem Array entfernen und für die('ERROR! Found ...); dann $$varname = intval($$varname); dry.gif

Geschrieben von: mvsxyz Thu. 15. January 2015, 09:30

Ist ja schon gefixt im Repo. Ich werde die nächste Version am WE veröffentlichen.

Geschrieben von: mvsxyz Sun. 25. January 2015, 19:43

http://forum.sefrengo.org/index.php?showtopic=3368 und enthält den besagten Bugfix.

Unterstützt von Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)