Anruf wegen angeblicher Sicherheitslücke

Thema wurde von Anonymous, 12. März 2014 erstellt.

  1. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Der ist über Anonymisierungs-Server unterwegs.....
     
  2. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    31.203
    Danke erhalten:
    6.208
    Danke vergeben:
    1.107
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    na aber e-mail und tel. mit den daten sollte doch reichen um da mal nachzuhacken oder?
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    26. April 2011
    Beiträge:
    993
    Danke erhalten:
    208
    Danke vergeben:
    100
    Es reicht doch das er unrechtmäßig im Besitz der Daten ist ... da sind die entsprechenden Stellen mittlerweile sehr sensiebel geworden ...
     
  4. Dennis (MotivMonster.de)

    Dennis (MotivMonster.de) G-WARD 2013/14/15/16

    Registriert seit:
    22. September 2011
    Beiträge:
    31.203
    Danke erhalten:
    6.208
    Danke vergeben:
    1.107
    Beruf:
    Mann für alles :)
    Ort:
    Weilburg
    zumal er auch in der mail wohl zugegeben hat das er die Daten geklaut hatte.
     
  5. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.693
    Danke vergeben:
    903
    In der aktuellen Standardshopversion habe ich keine Stelle gefunden, wo eine manipulierte manufacturers_id ein Problem darstellen könnte.
     
  6. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Als ersten Schutz vor diesem Ding sollte man ihn erst mal aussperren:

    Am Anfang von "includes/configure.php" (am Besten auch im Admin) einfügen:

    PHP:
    $user_agent=$_SERVER['HTTP_USER_AGENT'];
    if (
    stripos($user_agent,'sqlmap/')!==false)
    {
      exit();  
    }
    Wie immer gilt:

    • Anwendung auf das ausschließliche Risiko des Shopbetreibers.
    • Es gibt keinerlei Gewährleistung.
    • Erst in einem Testshop testen.
     
  7. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Wie wäre es z.B. damit:

    PHP:
    <?php
    /* --------------------------------------------------------------
       manufacturers.php 2010-09-30 gambio
       Gambio GmbH
       http://www.gambio.de
       Copyright (c) 2010 Gambio GmbH
       Released under the GNU General Public License (Version 2)
       [http://www.gnu.org/licenses/gpl-2.0.html]
       --------------------------------------------------------------


       based on: 
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(manufacturers.php,v 1.18 2003/02/10); www.oscommerce.com
       (c) 2003     nextcommerce (manufacturers.php,v 1.9 2003/08/17); www.nextcommerce.org
       (c) 2003 XT-Commerce - community made shopping http://www.xt-commerce.com ($Id: manufacturers.php 1262 2005-09-30 10:00:32Z mz $)

       Released under the GNU General Public License 
       ---------------------------------------------------------------------------------------*/

    $coo_manufacturers MainFactory::create_object('ManufacturersContentView');
    $f_manufacturers_id false;
    if(!empty(
    $_GET['manufacturers_id']))
    {
        
    $f_manufacturers_id $_GET['manufacturers_id'];
    }
    $t_box_html $coo_manufacturers->get_html($f_manufacturers_id);

    $gm_box_pos $coo_template_control->get_menubox_position('manufacturers');
    $smarty->assign($gm_box_pos$t_box_html);

    ?>
    Hier würde der manufacturers_id aus dem $_GET ja durchgereicht zu einer Query....

    Eigentlich überall, wo der "manufacturers_id" verwendet wird.

    Das Problem ist, dass diese SQL-Injections anscheinend von keinem der vorhandenen Filter eliminiert werden.

    Ich weiß nicht, ob die das nur damit versuchen, aber im Prinzip könnte jeder GET-Parameter ein Ziel sein.
     
  8. Timo (Gambio)

    Timo (Gambio) Administrator

    Registriert seit:
    23. Juni 2011
    Beiträge:
    1.688
    Danke erhalten:
    651
    Danke vergeben:
    46
    Das kann ich nicht bestätigen. In 2.0.14.4 wird zwar der GET Parameter durchgereicht, aber in der ManufacturersContentView wird dieser Wert in einer if-Bedingung verwendet und an der 2. Stelle zu int gecastet. Daher ist dort keine Injection möglich.

    MfG,
    Timo
     
  9. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Man sollte sich jetzt nicht unbedingt an diesem einen Aufruf festhalten....

    Die Frage ist, warum die diversen Filter diese Injection nicht erkennen und entfernen können.

    Irgendwo im Shop oder Erweiterungen wird man sicher ein Löchlein finden, wo das passt.
     
  10. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.693
    Danke vergeben:
    903
    Genau nach diesen Löchlein suchen wir routinemäßig in regelmäßigen Abständen. Grundsätzlich gehören GET- und POST-Daten vor der weiteren Verarbeitung gefiltert. In 2.1 passiert das über setter der Control- und View-Klassen. In 2.0 werden IDs in SQL-Befehlen meist nach int gecastet. Mindestens ein mysql_real_escape_string findet statt (über die xtc_db_input).
    Gefahr besteht natürlich bei Erweiterungen von Drittanbietern. Da muss man sich darauf verlassen, dass der Drittanbieter sicher entwickelt hat.
     
  11. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Wie ich schon schrieb:

    die SQL-Injection überlebt auch diesen Filter....
     
  12. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.693
    Danke vergeben:
    903
    Ja, aber nur als String, der aus den umklammernden Anführungszeichen im SQL-Befehl nicht ausbrechen kann. Das ist der Sinn und Zweck von mysql_real_escape_string. Wer keine Anführungszeichen setzt, hat natürlich verloren, aber da sind wir wieder bei der Verantwortung des Programmierers ;).
     
  13. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Also ich würde die Verantwortung erst mal bei Filtern wie dem GProtector oder der Inpu.Filter-Klasse shen.

    Wozu braucht man das Zeug sonst???

    Außerdem:

    xtc_db_input wird ja i.d.R. verwendet, um die Paramter zu filtern, also z.B. xtc_db_input($_GET['manufactureres_id']).

    Und dabei wird das SQL eben nicht gefiltert
     
  14. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.693
    Danke vergeben:
    903
    xtc_db_input filtert, entfernt nämlich alle Zeichen, die die umklammernden Anführungszeichen aushebeln könnten. Damit ist keine SQL-Injection mehr möglich. Das Ziel ist damit erreicht.
     
  15. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.124
    Danke vergeben:
    947
    ... und was heißt das jetzt alles? Besteht für Gambio-Shopbesitzer grundsätzlicher Handlungsbedarf? Irgendwie beunruhigt mich dieser Thread.
     
  16. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.971
    Danke erhalten:
    1.576
    Danke vergeben:
    1.162
    sollte er auch!

    Mein Anwalt meint jedenfalls dass ich Strafanzeige erstatten sollte.
     
  17. Avenger

    Avenger G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    4.771
    Danke erhalten:
    1.478
    Danke vergeben:
    89
    Aber warum muss das jeder Entwickler machen?

    Die Filterung sollte zentral erfolgen, das war ja m.E: der Sinn der "input-filter"-Klasse und des GProtector.

    Damit kann man sicher stellen, dass schlampige Programmierung von wem auch immer keinen Nachteil mehr bringt.
     
  18. Shoppingworld 4 Animals

    Shoppingworld 4 Animals Erfahrener Benutzer

    Registriert seit:
    21. Juli 2013
    Beiträge:
    497
    Danke erhalten:
    29
    Danke vergeben:
    120
    also, ich wäre dafür, dass sich die Experten unter uns (mich ausgenommen gg) über das Thema ernsthaft im Hintergrund unterhalten und nach einer Lösung suchen. Schließlich könnte und wahrscheinlich tut es der jenige, der dies verursacht auch, hier mitlesen.
     
  19. Daniel (Gambio)

    Daniel (Gambio) Erfahrener Benutzer

    Registriert seit:
    8. April 2011
    Beiträge:
    1.901
    Danke erhalten:
    1.621
    Danke vergeben:
    424
    Da dies bislang der einzige bekannte Fall ist, gibt es Hoffnung, dass es sich nicht um ein generelles Problem handelt. Wäre dies der Fall, wären erfahrungsgemäß viele Shopbetreiber auf einmal angeschrieben worden. Wir werden das nun weiter prüfen, um Klarheit zu schaffen.
     
  20. Petra

    Petra G-WARD 2013/14/15

    Registriert seit:
    27. August 2011
    Beiträge:
    6.998
    Danke erhalten:
    1.225
    Danke vergeben:
    227
    Gab es da nicht mal was, dass das eine neue Masche der Geldmacherei ist? Ich muss mal intensivst googlen :)