Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Sicherheitspatch für alle Shopversionen (security_fix_2014_12_17.zip)

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 43.947
    • Geschlecht:
    Die Installation des folgenden Sicherheitspatches wird allen Shopbetreibern für alle Shopversionen empfohlen. Unter bestimmten Voraussetzungen konnte ein Gast die Admin-Box sehen und so die Anzahl der Kunden & Bestellungen eines Shops ersehen (Ein Zugriff auf den Adminbereich war jedoch zu keinem Zeitpunkt möglich!).

    Vielen Dank an dieser Stelle an Karsten Geyer von Fishnet® Services für den Hinweis auf diese Sicherheitslücke.

    Download des Fixes: Klick mich

    Wir wünschen euch weiterhin gute Geschäfte und viel Spass mit unserer Shopsoftware.

    Euer modified eCommerce Shopsoftware Team

    Linkback: https://www.modified-shop.org/forum/index.php?topic=31795.0
    Shop Hosting

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 10.260
    • Geschlecht:
    Vielen Dank,
    auch an fischnet.

    In der /templates/YOUR_TEMPLATE/source/boxes.php sollte man auch noch hier
    Code: PHP  [Auswählen]
    if ($_SESSION['customers_status']['customers_status_id'] == 0) {
        require_once(DIR_WS_BOXES . 'admin.php');
        $smarty->assign('is_admin', true);
    }

    die 0 quote-n damit sie nicht als Boolean gewertet werden kann.
    Code: PHP  [Auswählen]
    if ($_SESSION['customers_status']['customers_status_id'] == '0') {
        require_once(DIR_WS_BOXES . 'admin.php');
        $smarty->assign('is_admin', true);
    }

    Die nicht ge-quote-te 0 bei einer Abfrage nach $_SESSION['customers_status']['customers_status_id'] kommt übrigens noch öfter Im Core-Code vor.
    Z.B. in
    • /account_edit.php
    • /inc/xtc_db_error.inc.php
    • /includes/functions/sessions.php
    • /shoproot/includes/header.php

    Wer weiß was da sonst noch alles an Fallen drinstecken könnte.

    Gruß,
    noRiddle

    golferteddy

    • Schreiberling
    • Beiträge: 368
    • Geschlecht:
    Danke an fischnet und noRiddle

    Frohe Weihanchten

    Bonsai

    • Viel Schreiber
    • Beiträge: 4.147
    • Geschlecht:
    Besten Dank!

    ralph_84

    • Fördermitglied
    • Beiträge: 499
    • Geschlecht:
    Auch von mir ein Herzliches Danke

     :thx:

    an fischnet und noRiddle

    ado

    • Fördermitglied
    • Beiträge: 195
    ich auch dickes DANKE!

    LG
    ado

    voodoopupp

    • Fördermitglied
    • Beiträge: 1.379
    Danke auch von mir.

    Interessant wäre zu wissen, wie es um die Dinge steht, die noRiddle angesprochen hat.

    h-h-h

    • modified Team
    • Beiträge: 4.565
    Mein Freund, noRiddle:

    Code: PHP  [Auswählen]
    echo '0' == 0 ? 'true' : 'false';  #> true

    echo '0' === 0 ? 'true' : 'false'; #> false

    Dein Code ergibt so für mich keinen Sinn, du meinst vermutlich ===.
    Und ich wüsste gerne auch in welchem Fall das eintreten könnte.

    Schreib mich einfach per Mail an, bevor du hier einige verunsicherst.

    LG, h-h-h

    brotherlui

    • Neu im Forum
    • Beiträge: 43
    hmmm ...

    Zitat
    Deine Code ergibt so für mich keinen Sinn, du meinst vermutlich ===.
    Und ich wüsste gerne auch in welchem Fall das eintreten könnte....

    *totalverunsichertnun* ja was jetzt nun ???

    h-h-h

    • modified Team
    • Beiträge: 4.565
    Keine Sorge, alles ist gut.  :-)
    Werde mit noRiddle telefonieren.

    LG, h-h-h

    Mantronix

    • Fördermitglied
    • Beiträge: 150
    Von mir auch

    :thx:

    an fischnet und noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 10.260
    • Geschlecht:
    Vorab:
    Warum bedankt Ihr euch bei mir ?
    fishnet war der der zuerst einen Fix vorgeschlagen hat.
    In privatem Mail-Verkehr war ich allerdings auch schon für den nun hier vorgestellten offiziellen Fix für die /includes/write_customers_status.php.

    Meinen Zusatz finde ich allerdings begründet.

    Mein Freund, noRiddle:

    Code: PHP  [Auswählen]
    echo '0' == 0 ? 'true' : 'false';  #> true

    echo '0' === 0 ? 'true' : 'false'; #> false

    Deine Code ergibt so für mich keinen Sinn, du meinst vermutlich ===.
    Und ich wüsste gerne auch in welchem Fall das eintreten könnte.

    Schreib mich einfach per Mail an, bevor du hier einige verunsicherst.

    LG, h-h-h

    "Keinen Sinn" finde ich ein wenig übertrieben ;-).
    Deine codierte Fragestellung ist nicht zielführend, sie müsste anders lauten,
    denn,
    da mysql_fetch_array() false ergibt wenn kein Ergebnis der Query vorhanden ist, vermutete ich, daß dann die $_SESSION['customers_status']['customers_status_id'] in der /includes/write_customers_status.php auf false gesetzt würde (siehe Code dort) und false == 0 als Boolean.
    Der Test müsste also so aussehen, dachte ich:
    Code: PHP  [Auswählen]
    echo '<h1>noRiddle</h1>';
    echo '0' == true ? 'true<br />' : 'false<br />'; #>false
    echo '0' == false ? 'true<br />' : 'false<br />'; #>true
    echo 0 == false ? 'true<br />' : 'false<br />'; #>true
    echo 0 === false ? 'true<br />' : 'false<br />'; #>false
    echo false == 0 ? 'true<br />' : 'false<br />'; #>true // <= das ist der wichtigste Test
    echo false === 0 ? 'true<br />' : 'false<br />'; #>false // <= das ist der zweitwichtigste Test
    echo true == 1 ? 'true<br />' : 'false<br />'; #>true

    Nachdem ich mit h-h-h alles durchgetestet habe kam raus, daß die $_SESSION['customers_status']['customers_status_id'] auf NULL gesetzt wird wenn in der Query $customers_status_query_1 kein Ergebnis gefunden wurde.
    Der Test sollte also so aussehen:
    Code: PHP  [Auswählen]
    echo '0' == NULL ? 'true<br />' : 'false<br />';  #> false
    echo 0 == NULL ? 'true<br />' : 'false<br />'; #> true

    Wenn also in der von mir zitierten /templates/YOUR_TEMPLATE/source/boxes.php die Abfrage so lautet (also nicht auf String 0 geprüft):
    Code: PHP  [Auswählen]
        if ($_SESSION['customers_status']['customers_status_id'] == 0) {
            require_once(DIR_WS_BOXES . 'admin.php');
            $smarty->assign('is_admin', true);
        }
    ist das verkehrt.

    Damit man aber nicht immer und überall darauf achten muß ist der Fix in der /includes/write_customers_status.php den das Team zur Verfügung gestellt hat genau richtig, nämlich an der Wurzel gepackt.

    Also, alles gut, auch ohne meinen Fix in der /templates/YOUR_TEMPLATE/source/boxes.php, auch wenn er korrekter wäre als nicht auf String zu testen.

    Gruß und good night,
    noRiddle

    web4design

    • Experte
    • Beiträge: 1.079
    :thx: @all ;)

    Fakrae

    • Viel Schreiber
    • Beiträge: 997
    Danke!

    OM-D

    • Neu im Forum
    • Beiträge: 40
    Vielen Dank für den fix!