SQL INJECTION Wykorzystanie błędów w językach skryptowych

Slides:



Advertisements
Podobne prezentacje
Internetowe Bazy Danych
Advertisements

Indeksy w bazie danych Oracle
Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
K orzystanie z ogólnodostępnej wersji internetowej.
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Bezpieczeństwo aplikacji WWW
Kamil Smitkiewicz Bezpieczeństwo w PHP.
Zabezpieczenia w programie MS Access
PHP + MySQL część II.
WPROWADZENIE DO BAZ DANYCH
25/08/ Bazy danych II Piotr Górczyński MS Access – Action Query.
18/11/ Języki programowania 1 Piotr Górczyński Łączenie z bazą danych.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 2: Język bazy danych - SQL Proste zapytania.
Metody autoryzacji użytkowników wymaga integracji z systemem operacyjnym nie wymaga logowania mała pewność mechanizmu wymaga logowania duża pewność mechanizmu.
Obsługa plików csv Do odczytu z pliku csv można użyć następującego kodu: $fp = fopen ("strony.csv","r"); $num = 0; while ($data = fgetcsv ($fp, 1000, ";"))
Wykład 2. Wprowadzenie do architektur systemów rozproszonych
Bezpieczeństwo Procedury składowane Funkcje i Wyzwalacze
ZSBD PL/SQL CZĘŚĆ 3 Wykład 5 Prowadzący: dr Paweł Drozda.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
PODSTAWY JĘZYKA PHP 1. czym jest 2. składnia 3. wersje 4. bazy danych
Piotr Doskocz Aleksandra Lechki Krzysztof Lewicki
Zapytania SQL: wydajność i optymalizacja
Wykład 2 Wojciech Pieprzyca
Wykład 5 Wojciech Pieprzyca
Systemy zarządzania treścią CMS
„Relacyjne Bazy Danych (Oracle)”
Język SQL – ciąg dalszy DML (Data Manipulation Language)
Język SQL (Structured Query Language) DDL (Data Definition Language)
Bezpieczeństwo baz danych
Przykład włamania do aplikacji internetowej poprzez modyfikację zapytań SQL Skrypty ASP Serwer bazy danych MS SQL Server Piotr Kuźniacki BDi.
Autor: Maciej Piwowarczyk
Autor: Maciej Piwowarczyk
Forum internetowe, przykład skryptu, Funkcjonalność.
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
MySQL – ODBC - ACCESS.
Instrukcje: CREATE, INSERT, UPDATE, DELETE, DROP
Integracja AM5 z systemem TRAKA Wymagania systemowe AMADEUS5/SQL(jakakolwiek wersja) Zapytania SQL (wykonywane przez DDS) wyzwalane przez sieć
ANNA BANIEWSKA SYLWIA FILUŚ
Użytkownicy i przywileje Sesja - przykład Błędy Komunikacja międzyskryptowa Wykład 83PD Technologie internetowe.
System wspierający obsługę przedmiotów projektowych
SQL - Structured Query Language
Specjalizacja "Dziennikarstwo On-line„ asynchroniczny JavaScript i XML – AJAX Część 6 Prowadzący: Dariusz Jaruga
Komendy SQL do pracy z tabelami i bazami
Składnia instrukcji warunkowej if…
Serwery Aplikacji Tworzenie bezpiecznych aplikacji.
PL/SQL – dalsza wędrówka
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Jak przeżyć w Internecie? Czyli o bezpieczeństwie słów kilka… Michał Jankowski MJ Software Solutions Services.
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Autor: Damian Urbańczyk
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Instrukcje wyboru.
1 SBD, L.Banachowski Oprogramowanie strony serwera cz. 1 Powtórzenie wyk ł adu 6.
Komendy SQL do pracy z danymi
PHP. PHP obiektowy, skryptowy język programowania zaprojektowany do generowania stron internetowych w czasie rzeczywistym.
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Pętle – instrukcje powtórzeń
Seminarium Dyplomowe: Metodyka i Techniki Programowania Autor: Bartłomiej Fornal.
Portal edukacyjny J A V A S C R I P T JĘZYK PROGRAMOWANIA STRON HTML Opracowała: Anna Śmigielska.
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
Języki i technologie wytwarzania stron WWW Autor: Michał Walkowski Referat.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
PROGRAMY DO KONTROLI RODZICIELSKIEJ
Strukturalny język zapytań SQL - historia
PROGRAMY DO KONTROLI RODZICIELSKIEJ
JavaBeans by Paweł Wąsala
Zapis prezentacji:

SQL INJECTION Wykorzystanie błędów w językach skryptowych Pomiędzy warstwą programistyczną a warstwą danych Bezradne niskopoziomowe mechanizmy bezpieczeństwa JSP, ASP, XML, XSL, XSQL, Perl, CGI, JavaScript, VB, narzędzia do obsługi baz danych, C, COBOL ...

Przykład 1 Skrypt w JSP połączony z Oracle W polu formularza wczytywane sal Konstruowane zapytanie (dla sal=800): SELECT ename, sal FROM scott.emp WHERE sal=800

Przykład 1 W polu sal wpisujemy: sal=800 UNION SELECT username, user_id from all_users Uzyskujemy zapytanie: SELECT ename, sal FROM scott.emp WHERE sal=800 UNION SELECT username, user_id from all_users

Zagrożenia Dostęp do dowolnych danych w bazie Możliwość modyfikacji i usunięcia danych Atak wysokiego poziomu Omija firewalle i zabezpieczenia na poziomie IP Omija skanery antywirusowe i filtry treści Nie istnieją sygnatury dla tego ataku

Przykład – zagrożenia Oracle Można: Dodać wyrażenie za pomocą UNION Dodać podzapytania do istniejących Uzyskać wszystkie dane z bazy Uzyskać dostęp do zainstalowanych procedur i pakietów (np. pozwalających na zapisywanie i czytanie plików systemowych

Przykład – zagrożenia Oracle Można: Dodać instrukcje INSERT, UPDATE, DELETE Dodać języki DDL (do definicji danych) Dołączyć inną bazę danych Nie są wykonalne: Wielokrotne instrukcje Odwołanie do bind variables

Przykład 2 LoginPage.php: <HTML> <BODY> <FORM ACTION=LoginPage2.php> Użytkownik: <INPUT NAME=”username”> <br> Hasło: <INPUT NAME=”password”> <br> <INPUT TYPE=”submit” VALUE=”Zaloguj”> </FORM>

Przykład 2 LoginPage2.php: ... function MyAuth( $conn,$username,$password) { $query = ”SELECT id FROM users WHERE”; $query .= ”username = '” . $username . ”'AND ”; $query .= ”password = '” . $password . ”'”; $res = pg_query( $query); if (pg_num_rows( $res) == 1) { $row = pg_fetch_array( $res); $id = $row['id']; } else { $id = 0;

Przykład 2 Tworzone zapytanie: . - operator konkatenacji ”SELECT id FROM users WHERE username = '” . $username . ”' AND password = '” . $password .”'” . - operator konkatenacji ” - ograniczają poszczególne ciągi znaków ' - fragmenty danych wprowadzane przez użytkownika

Przykład 2 Złośliwe dane: Użytkownik: 'delete from users-- Hasło: Uzyskujemy zapytanie: ”SELECT id FROM users WHERE username = '” . '; delete from users--” . ”' AND password = '” . . ”'”;

Przykład 1 W efekcie uzyskujemy: ”SELECT id FROM users WHERE username = '” . '; delete from users--” . ”' AND password = '” . . ”'”; ' - zakończenie pojedynczego cudzysłowu ; - zakończenie zapytania i rozpoczęcie nowego -- - początek komentarza

Przykład 1 Wygenerowane zapytanie: SELECT id FROM users WHERE username = ''; delete from users Zawartość tablicy users zostanie usunięta, uniemożliwiając innym dostęp do systemu Można doklejać dowolne zapytania, o ile pozwala na to API i składnia bazy danych

Metody zapobiegania Wszystkie dane z zewnątrz aplikacji powinny być filtrowane (przede wszystkim słowa kluczowe) Stosowanie zasady najmniejszych przywilejów Precyzyjne określenie funkcji dostępnych użytkownikowi za pośrednictwem interfejsu Oddzielenie dostępu do bazy danych od interfejsu Usuwanie zbędnych plików (*.bak)

Przykład 3 Im więcej intruz wie o strukturze bazy danych, tym większe prawdopodobieństwo skuteczności ataku Podajemy: Użytkownik: ' HAVING 1 = 1-- Uzyskujemy zapytanie: SELECT id FROM users WHERE username = '' HAVING 1 = 1

Przykład 3 Zapytanie: SELECT id FROM users WHERE username = '' HAVING 1 = 1 Jest poprawne składniowo, ale niepoprawne ze względu na strukturę danych. Zwrócony komunikat: Attribute users.id must be GROUPed or used in an aggregate function

Podsumowanie Dane z zewnątrz aplikacji powinny być filtrowane Przy nadawaniu uprawnień należy stosować zasadę najmniejszych przywilejów Precyzyjne określenie funkcji dostępnych użytkownikowi za pośrednictwem interfejsu W środowisku aplikacji nie powinno być żadnych zbędnych plików

Tematy pokrewne HTML injection Second-order code injection Niedostateczne sprawdzanie danych wejściowych przez aplikacje sieciowe Pozwala na zostawianie swoich pułapek na stronie, przechwytywanie danych Second-order code injection Dostarczenie aplikacji sieciowej potencjalnie niebezpiecznego kodu, który nie jest od razu wykonywany lecz przechowany Przechowany kod (cache, baza danych) niebezpieczny przy wczytaniu i uruchomieniu przez ofiarę