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

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

Programowanie obiektowe

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Wzorce prezentacji internetowych

Tworzenie i wykorzystanie usług

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Wywoływanie metod zdalnych

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

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Programowanie obiektowe

Wywoływanie metod zdalnych

Remote Method Invocation 17 listopada 2010

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Podejście obiektowe do budowy systemów rozproszonych

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Współbieżność w środowisku Java

Zaawansowane aplikacje WWW - laboratorium

Dokumentacja techniczna API systemu SimPay.pl

Wykład 8: Obsługa Wyjątków

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

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

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Multimedia JAVA. Historia

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie poprzez testy z wykorzystaniem JUnit

Podstawy i języki programowania

Enkapsulacja, dziedziczenie, polimorfizm

Architektury Usług Internetowych. Laboratorium 1. Servlety

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

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

akademia androida Składowanie danych część VI

Programowanie Obiektowe Ćwiczenie 4

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

prepared by: Programowanie WWW Servlety

Wykład dla studentów Informatyki Stosowanej UJ 2012/2013

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Elementy JEE. 1. Wprowadzenie. 2. Prerekwizyty. 3. Pierwszy servlet. obsługa parametrów żądań 4. JavaServer Pages.

Programowanie obiektowe

Programowanie obiektowe

KATALOG INICJATYW OBYWATELSKICH (KATALOG IO)

JAX-RS czyli REST w Javie. Adam Kędziora

Java wybrane technologie spotkanie nr 4. Serwlety c.d.

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Podstawy i języki programowania

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

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

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Laboratorium 10 - Web Services

Aplikacje RMI

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Java wybrane technologie

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

akademia androida Http i AsyncTask część VII

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Wprowadzenie. Narzędzia i środowiska programistyczne. Laboratorium 1. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Java Database Connectivity

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Testowanie aplikacji Java Servlets

public enum Environment { Development("Deweloperskie"), Test("Testowe"), Production("Produkcyjne"); private String name;

Zaawansowane aplikacje internetowe laboratorium

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

WebNotarius. Specyfikacja techniczna komunikacji z usługą WebNotarius. wersja 1.1

Systemy Rozproszone - Ćwiczenie 6

Dawid Gierszewski Adam Hanasko

Aplikacje w środowisku Java

1 Wprowadzenie do J2EE

Dokumentacja API sender sms

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Aplikacje internetowe i rozproszone - laboratorium

JAVA I SIECI. MATERIAŁY:

METODY PROGRAMOWANIA

Języki i metody programowania Java. Wykład 2 (część 2)

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Klasy cd. Struktury Interfejsy Wyjątki

Aplikacje webowe na celowniku. Leszek Miś IT Security Architect RHCA,RHCSS,Sec+ Linux Polska Sp. z o.o. 1

Java: interfejsy i klasy wewnętrzne

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski. Zaawansowane Systemy Decyzyjne. Laboratorium

Katalog książek cz. 3: Web Service

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP002017_ Laboratorium 11 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse


JAVA W SUPER EXPRESOWEJ PIGUŁCE

Java JMX. Marcin Werla. Monitorowanie i zarządzanie usługami sieciowymi w Javie. mwerla@man.poznan.pl PCSS/Poznań JUG

Programowanie komponentowe 5

Testowanie II. Cel zajęć. Pokrycie kodu

Transkrypt:

Badania poziomu bezpieczeństwa portalu dostępowego do infrastruktury projektu PL-Grid Tomasz Kuczyński Dział Aplikacji Tomasz Nowak Zespół Bezpieczeństwa Wrocław, 2.12.2010 r. Konferencja i3: internet - infrastruktury - innowacje

Wprowadzenie Projekt krajowy Polska Infrastruktura Informatycznego Wspomagania Nauki w Europejskiej Przestrzeni Badawczej Pl-Grid http://www.plgrid.pl Zadanie 6 Bezpieczeństwo e-infrastruktury W ramach podzadania 6.2 Monitorowanie bezpieczeństwa i zarządzanie zagrożeniami, zgodnie z wypracowanymi procedurami, prowadzi się testy bezpieczeństwa rozwiązań przed ich wdrożeniem Obecnie możemy już opublikować wyniki analiz 3

Informacje ogólne Liferay darmowe rozwiązanie portalowe Wersja 5.2.3 z serwerem aplikacji Tomcat 5.5.27 Testy objęły podstawową funkcjonalność portalu wykluczono aplikacje dodatkowe (np. portlety wiki, blogi) Kompleksowy test oprogramowania Co dziś pokażemy: Błędy oraz przykłady złego kodowania Demonstracja przejęcie konta administratora Demonstracja przejęcie konta użytkownika 4

Metodyka testów Analiza kodu źródłowego Java Wielka liczba linii Wsparcie narzędzi do statycznej analizy (FindBugs) Test penetracyjny Dogłębna analiza reakcji oprogramowania na dane ukierunkowana na podniesienie uprawnień Użycie proxy, hakerskich wtyczek do przeglądarek Weryfikacja bibliotek pod kątem znanych błędów bezpieczeństwa w używanych wersjach 5

Błędy w kodzie (1) HTTP response splitting public class RenderPortletAction extends Action { public ActionForward execute(..., HttpServletRequest request, HttpServletResponse response) {... String ajaxid = request.getparameter("ajax_id");... if (ajaxid!= null) { response.setheader("ajax-id", ajaxid);... 6

Błędy w kodzie (2) Flow control by exceptions protected String getcode() throws SystemException { String code = PwdGenerator.getPassword(KEY1 + KEY2, 8); try { shoppingcouponpersistence.findbycode(code); return getcode(); catch (NoSuchCouponException nsce) { return code; 7

Błędy w kodzie (3) Sprawdzenie wartości obiektu niegwarantujące poprawnego użycia metody if (is == null) { // zmienna is typu InputStream _log.error("invalid path " + path); String template = StringUtil.read(is); // mimo błędu próba odczytu is.close(); Niepotrzebne i błędne użycie mechanizmu synchronizacji public void setportalport(httpservletrequest request) { if (_portalport.intvalue() == -1) { synchronized (_portalport) { _portalport = new Integer(request.getServerPort()); 8

Błędy w kodzie (4) Błąd w szczególnym przypadku: Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE int y = Math.abs(randomGenerator.nextInt()) % numsaltchars; Nieskończona pętla public static String getportlettitle(portlet portlet, long companyid, String languageid) { return getportlettitle(portlet, companyid, languageid); Ignorowanie wyniku datestring.replacefirst(_todaystring, dateformatdate.format(yesterday)); Błąd w warunku (podwójne sprawdzenie jednego argumentu) private String _geturl(httpservletrequest request, boolean resetmaxstate, boolean resetrenderparameters) throws... {... if (!resetmaxstate &&!resetmaxstate) { return url;... 9

3. Administrator wchodzi na profil użytkownika 4. Przeglądarka administratora wysyła dane o sesji administratora 2. Prośba o sprawdzenie profilu 1. Zapisanie ataku na profilu użytkownika 5. Zły użytkownik przejmuje sesję administratora 10

3. Mail z wstrzykniętym atakiem oraz nowym hasłem 4. Wejście na profil z załączonego linku i Cancel 5. Przeglądarka użytkownika wysyła dane o sesji użytkownika 1. Próby logowania na serwerze przy użyciu znalezionych identyfikatorów kont 2. Wywołanie funkcji przypomnienia hasła 6. Przejęcie sesji użytkownika 11

Kto używa Liferaya 12

Więcej informacji Liferay http://www.liferay.com Szkolenia Zespołu Bezpieczeństwa PCSS http://security.psnc.pl/szkolenia.html Open Web Application Security Project http://www.owasp.org FindBugs http://findbugs.sourceforge.net 13

Dane kontaktowe Zespół Bezpieczeństwa PCSS http://security.psnc.pl security@man.poznan.pl Tomasz Kuczyński docentt@man.poznan.pl Tomasz Nowak tomasz.nowak@man.poznan.pl PCSS http://www.pcss.pl office@man.poznan.pl 14

Pytania, dyskusja 15

Dziękuję za uwagę!