DOM-Injection bzw. Cross-Site Scripting verhindern

Alles rund um die Erstellung von Patches, Behebung von Bugs und Contributions
helas
webEdition Partner
webEdition Partner
Beiträge: 79
Registriert: Do 4. Mär 2004, 13:00
Wohnort: Hannover
Kontaktdaten:

DOM-Injection bzw. Cross-Site Scripting verhindern

Beitragvon helas » Di 2. Mai 2017, 17:22

Hallo in die Runde,

wir haben gerade festgestellt, dass die webEdition-Suche JS-Code interpretiert und ausführt.
Die Eingabe

Code: Alles auswählen

<img src=y onerror=prompt(/openbugbounty/)>
öffnet nach dem Senden eine Eingabe - egal ob POST oder GET. (Der Edge lässt diese Anfragen zu.)

Gibt's dafür bereits eine Lösung durch spezielle Attribute für search oder muss hier noch etwas entwickelt werden?

Freue mich über eine Rückmeldung. Danke und Grüße
Lars
<we:can>yes</we:can>

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: DOM-Injection bzw. Cross-Site Scripting verhindern

Beitragvon WBTMagnum » Di 2. Mai 2017, 20:47

Hallo Lars,

Wundert mich jetzt etwas. In mehreren security Audits bei einigen unserer Projekte ist in diese Richtung bislang nichts aufgepoppt.

Welche webEdition Version habt ihr denn da im Einsatz?? Wie sieht das Template zur Anzeige der Suchergebnisse aus?

Liebe Grüße,
Sascha

helas
webEdition Partner
webEdition Partner
Beiträge: 79
Registriert: Do 4. Mär 2004, 13:00
Wohnort: Hannover
Kontaktdaten:

Re: DOM-Injection bzw. Cross-Site Scripting verhindern

Beitragvon helas » Mi 3. Mai 2017, 10:37

Hallo Sascha,

festgestellt haben wir das in der Version: webEdition 7.0.2 (7.0.2.0, SVN-Revision: 12643)
Das Script sieht folgendermaßen aus:

Code: Alles auswählen

<we:form type="search" name="suche" method="get">
<we:search type="textinput" value="Suchbegriff" name="suche" id="Suchbegriff"/><input type="image" src="/_standards/img/btn_suche.gif" />
</we:form>
Der Seite haben wir schon einige webEdition-Updates verpasst - die Seite ist mal in der Version 6.* gestartet und basiert noch auf XHTML. Vielleicht liegt's auch daran? Siehe http://www.bewegteschule.de/

Freue mich über Tipps und Hinweise.
Danke und sonnige Grüße,
Lars
<we:can>yes</we:can>

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: DOM-Injection bzw. Cross-Site Scripting verhindern

Beitragvon mokraemer » Mi 3. Mai 2017, 16:46

Der Fehler kommt von Euch:

Code: Alles auswählen

Zu Ihrer Suchanfrage "
<em>
<b>XXSS</b>
</em>
" konnte leider kein Treffer gefunden werden.
Ihr gebt an der Stelle vermutlich einfach $_REQUEST aus und benutzt kein

Code: Alles auswählen

<we:var type="request" varType="string" name="we_lv_search_suche"/>
webEdition-Kern-Entwickler

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: DOM-Injection bzw. Cross-Site Scripting verhindern

Beitragvon WBTMagnum » Mi 3. Mai 2017, 16:50

Hallo Lars,

Ich habe das mal nachgebaut:
Code: Alles auswählen
<!DOCTYPE HTML>
<html dir="ltr" lang="<we:pageLanguage type="language" doc="top" />">
<head>
<we:title></we:title>
<we:description></we:description>
<we:keywords></we:keywords>
<we:charset defined="UTF-8">UTF-8</we:charset>
</head>
<body>
<we:form type="search" name="suche" method="get">
<we:search type="textinput" placeholder="Suchbegriff" name="suche" id="Suchbegriff"/><input type="submit" value="suchen" />
</we:form>
</body>
</html>
und in einem unserer Testsystem getestet. Das von dir beschriebene Verhalten war weder in Edge, Opera, Firefox oder Chrome nachvollziehbar. Getestet mit webEdition V6.4.3 und V7.0.3.

Hast du noch Code zur Anzeige der Suchergebnisse? Bzw. wird der Suchbegriff im Template noch mal ausgegeben?


Liebe Grüße,
Sascha

helas
webEdition Partner
webEdition Partner
Beiträge: 79
Registriert: Do 4. Mär 2004, 13:00
Wohnort: Hannover
Kontaktdaten:

Re: DOM-Injection bzw. Cross-Site Scripting verhindern

Beitragvon helas » Mi 3. Mai 2017, 17:31

Hallo Sascha,

danke schon mal für deine Mühe.
Hier der komplette Code und ja, der Suchbegriff wird noch mal ausgegeben:

Code: Alles auswählen

<div>Suchbegriff: </div>
<div id="searchform">
<?php if($_GET['we_lv_search_suche']){ $search_term = $_GET['we_lv_search_suche'];	} ?>
<we:form type="search" name="suche" class="suchen" method="get">
<we:search type="textinput" value="\$search_term" name="suche" id="Suchbegriff"/><input type="image" src="/_standards/img/btn_suche.gif" />
</we:form>
</div>

<we:listview type="search" name="suche" order="Title" desc="true" workspaceID="34,32,33,35,264" objectseourls="true" hidedirindex="true">
    <we:ifFound>
      <p>Ihre Suche nach "<em><b><?php echo $search_term;?></b></em>" ergab folgende Treffer:</p><br />
      <we:repeat>
        <we:field name="Title" alt="we_path" hyperlink="true"/><br />
        <we:ifFieldNotEmpty match="Description">
        	<we:field name="Description" max="140"/><br />
        </we:ifFieldNotEmpty>
        <br />
      </we:repeat>
    </we:ifFound>
    <we:ifNotFound>
      Zu Ihrer Suchanfrage "<em><b><?php echo $search_term;?></b></em>" konnte leider kein Treffer gefunden werden.
    </we:ifNotFound>
  </we:listview>
Beste Grüße
Lars
<we:can>yes</we:can>

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: DOM-Injection bzw. Cross-Site Scripting verhindern

Beitragvon WBTMagnum » Mi 3. Mai 2017, 20:52

Hallo Lars,

Wie von Marc bereits angemerkt, sollten "Benutzereingaben" via $_REQUEST, $_GET & $_POST nicht ohne weitere Prüfung übernommen und ausgegeben werden. Damit öffnet ihr Tür und Tor für Injections. Besser die dafür vorgesehenen we-Tags verwenden.

Liebe Grüße,
Sascha

helas
webEdition Partner
webEdition Partner
Beiträge: 79
Registriert: Do 4. Mär 2004, 13:00
Wohnort: Hannover
Kontaktdaten:

Re: DOM-Injection bzw. Cross-Site Scripting verhindern

Beitragvon helas » Do 4. Mai 2017, 11:11

Hallo Sascha, hallo Mark,

...das war's. Sorry, dass wir euch mit unserer einer Nachlässigkeit hier behelligen.

Aber großen Dank an euren Einsatz. Ich bin immer wieder begeistert, wie schnell es hier im Forum Rückmeldung und Lösungsvorschläge gibt.
Weiter so! Zeigt, dass webEdition lebt und im Ergebnis ein TOP CMS ist.

Grüße, Lars
<we:can>yes</we:can>


Zurück zu „Patches, Bugs und Contributions“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste