Beiträge von Duplicate julien

    Yep.

    Bin beruflich in die USA unterwegs und kann leider nur sporadisch posten.

    Die Ursache der Fehler ist der dass die Variable existiert nur unter bestimmte bedigungen und nicht "immer" (ich gaube wenn Attributen existieren und wenn nicht, bin mir aber nicht mehr sicher...).
    Ist kein hekt dass im JS zu ändern, mir fehlt nur die Zeit um etwas sauber zu posten.

    Mister Jotest, übernhemen Sie!


    ;)

    Hallo Jo,

    FF 3.6 ?? Du bist lustig! Mittlerweile ist 5.0 Standart und morgen kommt die 6.0 Version.
    :)
    Spass bei Seite, lade dir den Firebug plugin und somit bekommst du einen besseren Einblick in der HTML/JS.

    Meine Plugins Tipps unter FF:
    FireBug und Web Developper -> zeigen alle JS und CSS Fehler und viel-viel mehr (css highlighter, DOM...)
    HTML Validator -> Zeigt alle HTML compliancy Fehler
    KGEN -> Zeigt dir deine Seite wie eine Suchmaschine sie auch liest, Keyword relevanz und so weiter. Sehr Gut zum Optimieren!!
    UserAgentSwitcher -> wenn Du mal die Mobile Version debuggen/probieren möchtest.

    Julien.

    Hmm..so viel ich sehen kann, sind diese Lücken im core des Shops, also weit von der Templates entfernt..
    Aber ich glaube wirklich gelesen zu haben in den AGBs dass der Shop as-is angeboten wird, lediglich für den SupportForum-Zugang, also nicht den Support! ein Geldbetrag gefragt wird. Aber ich bin kein Anwalt und das durchLesen 1000 Software AGB ist nicht bei mir wirklich synonym für Spass :)

    Wieso ich darauf komme...weil ich eine Genie bin?
    :)
    Nein, weil ich auf meine Lokale Umgebung dieses Tool laufen gelassen habe.
    Acunetix Web Vulnerability Scanner in der Free Edition (checkt nur die XSS Exploits)

    Und der nach dem ersten durchgang ca. 130 Lücken entdeckt hat: $_SERVER['REQUEST_URI'], $_SERVER['HTTP_REFERER'],$_SERVER['HTTP_USER_AGENT'].
    Dann habe ich selbst getestet..und festgestellt dass es stimmt..
    Nach der Anpassung der xtc_update_whos_online.inc.php sind es leider nur noch 60...

    Aber immerhin die Tür steht nicht ganz weit offen.

    Letzter Login des Admin ist 28.07...vielleicht sind sie alle in Urlaub.
    Ab heute ich auch.

    julien.

    Hallo,

    noch mehr Info:

    habe glaube ich die 2 von oben schliessen können (bitte aber testen)

    Code
    if($aktuelle_datei)
    		$wo_last_page_url = $aktuelle_datei;
    	else
        	$wo_last_page_url = addslashes(getenv('REQUEST_URI'));
    
    	$wo_referer = $_SERVER['HTTP_REFERER'];
    	$useragent_referer = $_SERVER['HTTP_USER_AGENT'];

    mit

    Code
    // FIX XSS SCRIPTING ATTACKING REFERER & USER AGENT
    if($aktuelle_datei)
    		$wo_last_page_url = $aktuelle_datei;
    	else
    $wo_last_page_url = addslashes(fix_xss_attack(getenv('REQUEST_URI')));
    
    
    $wo_referer = fix_xss_attack($_SERVER['HTTP_REFERER']);
    $useragent_referer = fix_xss_attack($_SERVER['HTTP_USER_AGENT']);

    Dann unten eine Funktion addieren:

    Code
    function fix_xss_attack ($url){
      $urlregex = "^(https?|ftp)\:\/\/([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*(\:[0-9]{2,5})?(\/([a-z0-9+\$_-]\.?)+)*\/?(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?(#[a-z_.-][a-z0-9+\$_.-]*)?\$";
      $url_fix = eregi($urlregex, $url);
        if ($url!=$url_fix){
        $url_fix = "ALERT-POSSIBLE-XSS-ATTACK";
        }
      return $url_fix;
    }

    admin, bitee testen aber es sollte funktionieren.

    Dann bleibt nur noch das parsen von $_GET values in den String und XSS sollte mMn geschlossen sein.

    Julien

    Hallo Martin,

    Hmm..ich bin kein Anwalt aber ich denke mir dass als "für den Inhalt Verantwortlichen" und "Inhaber" im Sinne des Gesetz eine Haftung von der Seite des Shopsbetreiber entsteht.
    Weil im Umkehrschluss Du eine Malwareseite bauen könntest, die Leute mit attraktive Angeboten locken könntest und dafür nicht haftbar wärest?
    Das glaube ich nicht.

    Da der Shop unter GPL steht und wenn man die Lizenz liest steht da irgendwie dass für nichts garantiert wird auch nicht die Funktionalität, glaube ich dass die Jungs aus der Haftung raus sind.
    Als Service Partner und im Geschäftsinn sollte aber eine Hilfe deren Seite sicher nicht fehlen.

    Jetzt aber zum Thema Sicherheit von SEO, auch da bin ich kein Expert (leider) aber innerhalb weniger Minuten sind mir schon XSS Lücken aufgefallen (warum habe ich nie davor geforscht?? keine Ahnung.)

    Aber einer der Schwachstellen mMn ist die xtc_update_whos_online.inc.php
    Es werden die Variablen

    Code
    $wo_referer = $_SERVER['HTTP_REFERER'];
    $useragent_referer = $_SERVER['HTTP_USER_AGENT'];

    Direkt in der DB geschrieben ohne wenn und aber...und das ist nicht good.


    EInschleusen von JS code durch HTTP referer:
    In FF folgende Plugin downloaden und installieren: Modify Headers v0.7.0.2
    Dann den referer in zB.

    Code
    '"()&%1<ScRiPt >prompt(928833)</ScRiPt>


    ändern,
    dann auf zB. die 404.php Seite deines Shop gehen und dann..siehst Du wie hier den JS Code "injektiert" wurde.
    Es ist mir klar dass dies ein harmlose Code ist und dass man sicher damit nichts anstellen kann..(nur wenn man will vielleicht..)
    ABER

    es wird auch ein SQL Fehler ausgespuckt und dann könnte man es als Angriffmöglichkeit nehmen um weitere Unfug zu betreiben.

    Es ist sicher nicht die einziege Möglichkeit einzusteigen und wenn man die steigende Zahl der Infirzierte Shops seiten sieht..können wir auf einem baldigen Fix hoffen.

    Übrigens so wie ich gelesen habe sind auch die domains die die Schadcode geschickt haben gesperrt worden...also ein bisschen ruhe bis zum nächsten Mirror haben wir noch.

    Julien.

    Hallo Martin,

    ja mir würde es auch interressieren, scheint rafiniert zu sein.
    Im allg. werden solche eploit durch xss mittels iframe injection gemacht...vielleicht lässt auch einer der Formulare etwas duchsicken.
    Ich glaube nicht an einer SQL injection, da sonst eher DB tabelle geklaut wären...

    Aber an unsere stelle würde ich JETZT SOFORT einen Backup machen und die Seite beobachten...
    Nicht vergessen...http://www.plus.de war über 10 Tage offline wegen so eine Geschichte...

    Julien.

    Hallo,

    wer kann mir einen Scrennshot der mitgelieferte Mobile Template schicken?
    Oder anders gesagt, wenn ich die Mobile Template einschalte, sieht es bei mir nie im Leben nach eine Mobile Template aus, sondern wie eine etwa dünnere Version der normale Template.

    Übersehe ich etwas?
    Bei einer schnelle xtc-modified installierte Version sieht es so aus (mMn sollte es auch so bei SEO aussehen).
    [ATTACH=CONFIG]32[/ATTACH]

    Hallo Ralf,

    dieser Sript erzeugt eine Fehlermeldung weil zwischen

    Code
    {literal} li'


    eine Leertaste ist und wenn $CLASS nicht definiert ist (was der Fall ist siehe mein Posting über die Fuzzy Search) dann wird ne Fehler gespuckt.
    also kompletten Smarty Code ersetzen mitkorrigieren mit


    und alles ist wieder in Ordnung.

    Ich habe es als Teil des Fuzzysearch Problem auch gepostet...
    Es hat mir den ganzen So. nachmittag gekostet bis ich auf die Idee kamm...

    Julien.

    Hallo,

    nachdem ich den Sontag liebend draussen als vorm Computer sitzen wollte, leider aber dass nicht schaffte :(

    Poste ich hier meine neue Entdeckung und Lösung.

    Die Fuzzy Search ist, na ja..ein bisschen unlogisch gebaut.

    Ok, es gibt 2 fuzzy_search, eine in includes/modules, eine in includes/modules/classes wieso auch immer(könnte ich bis jetzt nicht nachvollziehen) wird in der erste die Class Fuzzy_search ncohmals definiert statt inkludiert?

    1) Here we go..., dann löschen bis es so aussieht:

    Damit hätten wir ein bisschen aufgeräumt.

    2) Die includes/classes/fuzzy_search.php sieht auch nicht so doll aus...also ersetzen mit:

    ohne include oder include_once!

    3) Jetzt JS and JQUERY. Der grund meinen verlorenen So.nachmittag... :)
    In der templates/.../module/product_listing.html werden mehrmals JQUERY aufrufe gemacht unter anderem dieser code ist von Bedeutung!!

    Code
    $('#{/literal}{$CLASS}{literal} li').each(function(e) {

    Und da liegt der hacken...klein, fast unsichbar...dennoch aber produziert er eine hässliche Fehlermeldung (im demoshop zu sehen wenn man irgendwie die product_listing.html benötigt)
    Aslo..auch gesehen?? Ja!! DER! Dieser $(/&%(/%& LEERZEICHEN!!!
    Also, um sicher zu sein muss man das ganze umbauen...sodass es klappt wenn $CLASS existiert oder auch nicht... fertig sieht dann so aus...

    diese Logik in jeden Aufruf einbauen und schon darf man sich auf Fehlerfreie Seite freuen...

    Jetzt aber, ab nach draussen.

    Julien.

    ...

    Bei ca Linie 98/100:

    Code
    $info_smarty->assign('PRODUCTS_PRICE_J', $products_price_j);
    // ATTRIBUTES_PRICES_JAVASCRIPT by xtc-deluxe.de
    $info_smarty->assign('PRODUCTS_PRICE_PLAIN', $products_price_j);


    auskommentieren/ersetzen.

    Code
    //$info_smarty->assign('PRODUCTS_PRICE_J', $products_price_j);// AUSKOMMENTIERT
    // ATTRIBUTES_PRICES_JAVASCRIPT by xtc-deluxe.de
    $info_smarty->assign('PRODUCTS_PRICE_PLAIN', $price_plain); // NEUE WERT

    und in der zB. product_info_v1.html

    Code
    <script type="text/javascript">
    original_price = {$PRODUCTS_PRICE_PLAIN};
    document.write('<strong>{$SYMBOL_LEFT} <span id="price">{$PRODUCTS_PRICE_PLAIN}</span> {$SYMBOL_RIGHT}</strong><br /><em class="fs85">({$SYMBOL_LEFT}{$PRODUCTS_PRICE_J} {$SYMBOL_RIGHT})</em><br />');
    </script>

    mit

    Code
    <script type="text/javascript">
    original_price = {$PRODUCTS_PRICE_PLAIN};
    document.write('<strong><span id="price">{$PRODUCTS_PRICE}</span></strong><br /><em class="fs85">({$PRODUCTS_PRICE})</em><br />');
    updatePrice();
    </script>

    ersetzen.

    Ok, damit sollte es behoben werden.

    Bonus Track:
    In der product_attributes.php folgendes addieren:

    Code
    $module_smarty->assign('SYMBOL_LEFT',$xtPrice->currencies[$xtPrice->actualCurr]['symbol_left']);
    $module_smarty->assign('SYMBOL_RIGHT',$xtPrice->currencies[$xtPrice->actualCurr]['symbol_right']);
    $module_smarty->assign('TEXT_PRICE_INCL_OPTIONS',YOUR_PRICE);


    Und dann bei Zeile ca 44 von der product_options_selection.html ändern in.

    Code
    document.getElementById("price").firstChild.nodeValue = '{$TEXT_PRICE_INCL_OPTIONS}'+'{$SYMBOL_LEFT} '+currencyToXTC(calculated_price)+' {$SYMBOL_RIGHT}';


    Damit der Kunde der Angezeigter Preis versteht.
    -----
    Wenn ihr das addiert, sieht ihr auch dass einen smarty Variablen Block bei jeden Option Aufruf definiert wird.
    Einfach ausserhalb des Loops bewegen:

    Code
    #$products_options_data[$row]['DATA'][$col] = array ('ID' => $products_options['products_options_values_id'], 'TEXT' => $products_options['products_options_values_name'], 'MODEL' => $products_options['attributes_model'], 'PRICE' => $xtPrice->xtcFormat($price, true), 'FULL_PRICE' => $xtPrice->xtcFormat($full, true), 'PREFIX' => $products_options['price_prefix'], 'PRICE_PLAIN' => $price);
    $module_smarty->assign('DECIMAL_PLACES',$xtPrice->currencies[$xtPrice->actualCurr]['decimal_places']);
    $module_smarty->assign('THOUSANDS_POINT',$xtPrice->currencies[$xtPrice->actualCurr]['thousands_point']);
    $module_smarty->assign('DECIMAL_POINT',$xtPrice->currencies[$xtPrice->actualCurr]['decimal_point']);
    $module_smarty->assign('SYMBOL_LEFT',$xtPrice->currencies[$xtPrice->actualCurr]['symbol_left']);
    $module_smarty->assign('SYMBOL_RIGHT',$xtPrice->currencies[$xtPrice->actualCurr]['symbol_right']);
    $module_smarty->assign('TEXT_PRICE_INCL_OPTIONS',YOUR_PRICE);

    bis vor:

    Code
    }
    if ($product->data['options_template'] == '' or $product->data['options_template'] == 'default') {

    Hallo,

    also ich nochmals. :)

    Es gibt tats. einen Bug, ist auf der Demo Version v21plus zu sehen.

    1 Bug) Man wählt den Kühlschrank (Product mit Option) und Bingo: Javascript Fehler-> original_price undefined.
    2 Bug) Wenn der Preis des Artikel <1000 € original_price ist kein "zahl" mehr, sondern etwas wie 1,000.00.

    Lösung:
    1 Bug) Der Aufruf der Funktion

    Code
    updatePrice();

    von der product_options_xxx.html (wobei xxx alle Option-Templates bedeutet)

    zu der product_info_v1.html innerhalb des Javascript bewegt :

    Code
    <script type="text/javascript">
    original_price = .....
    document.write....
    updatePrice();/AUFRUF DER FUNKTION
    </script>

    2 Bug) Ok, jetzt wird es Rock 'n Roll....
    In der modules/product_info.php gibt es bei Linie ca 48 einen seltsamen Aufruf:

    Code
    $products_price_j = number_format($products_price_without_separator,2);


    Wieso auch immer, den Sinn habe ich nicht nachvollziehen können...(vielleicht weisst jemand mehr darüber) weil die php Funktion "formatiert" die Zahl mit dezimal und tausender Trenner! Un da ist der Hacken.
    Also...auskommentieren.

    Code
    //$products_price_j = number_format($products_price_without_separator,2);


    Dieser $product_price_j wird später benutzt um die Javascript Variable zu befüllen.

    Code
    $info_smarty->assign('PRODUCTS_PRICE_J', $products_price_j);

    Dann unter :

    Code
    if(PRICE_AS_IMAGE == 'true') {
    		$price = $products_price;
    	} else {
    		$price = $products_price['formated'];
    	}

    mit

    Code
    $price_plain = $products_price['plain']; // NEW

    anfügen.

    ....mehr in Teil 2.

    Hallo,

    in der includes/modules/product_filter_listing.php wird eine Funktion aufgerufen die "unbekannt" ist, also einfach am Anfang einbetten und gut ist.

    unter:

    Code
    require_once (DIR_FS_INC.'xtc_get_vpe_name.inc.php');


    addieren

    Code
    require_once (DIR_FS_INC.'xtc_date_short.inc.php');


    Julien.

    (habe nach Beiträge gesucht die das erwähnen und könnte nichts finden, vielleicht habe ich etwas aber übersehen...)

    Hallo Admin,

    ich habe es gefixt:

    1) Einfügen von Produkten mit Attributen auf Merkzettel
    2) Innerhalb des Merkzettels: Addieren und Substrahieren von Produkten mit deren Attributen
    3) innerhalb des Merkzettels: Löschen von Produkten mit Attributen
    4) Bei Anmeldung wiederherstellung des Merkzettels inkl. Attributen
    5) Einzelbestellung von Artikel samt Attributen (Merkzettel->Warenkorb) und Löschung vom Artikel auf dem Merkzettel
    6) Gesamtbestellung von Artikel samt Attributen.

    Tests laufen bei mir bis jetzt einwandfrei.
    Wenn ihr Interress habt, bitte melden. :)

    Julien.

    Hallo,

    bei dem Merkzettel werden die Attributen nicht berücksichtigt.
    Wenn ein Artikel Attributen hat, kann man ihn ohne weiteres auf dem Merkzettel hinzufügen ohne Rücksicht auf der gewählten Atrributen.
    Vom Merkzettel aus kann man dann zur Kasse gehen, und natürlich den Bestellprozess abschliessen.
    Bei der Bestellung weisst man dann nicht welche Optionen der Kunde dann gewählt hat.

    Das Problem kann man auch hier sehen wenn man den Kühlschrank mit Optionen auf dem Merkzettel addiert...
    http://v21plus.xt-seo.de/das-ist-die-zw…lschrank-2.html

    In der DB sind 2 Tabellen die die Wishlist betreffen eine speziel für Attributen...nur nicht gefühlt...

    Wer kann hier helfen??

    Julien.