Gli	
  HTTP	
  Security	
  Header	
  e	
  altri	
  elemen3	
  da	
  sapere	
  
su	
  HTTP	
  in	
  un	
  Web	
  Applica3on...
Introduzione
hDp://onofri.org/u/ld13
Agenda
Agenda

Introduzione	
  
!

Come	
  si	
  sono	
  evolute	
  le	
  minacce…	
  
…e	
  il	
  perchè	
  degli	
  HTTP	
  Sec...
Come	
  si	
  sono	
  evolute	
  le	
  minacce	
  nel	
  tempo	
  e	
  perchè	
  
sono	
  importan3	
  gli	
  HTTP	
  Head...
Computer	
  Security	
  Timeline
E	
  ora?
HTTP	
  Request	
  e	
  HTTP	
  Response
HTTP	
  Request	
  e	
  Response
HTTP Request
Method <SP>

URI

<SP> Protocol

HTTP Response
Protocol <SP>

Code

<SP>

<C...
HTTP	
  Request	
  -­‐	
  Method
• Quali	
  sono	
  i	
  metodi	
  che	
  l’applicazione/il	
  web	
  server	
  acce)ano?	...
HTTP	
  Request	
  -­‐	
  Method	
  (es.)
TRACE / HTTP/1.1
Connection: Close
Host: 127.0.0.1
Pragma: no-cache

!
<script>a...
HTTP	
  Request	
  -­‐	
  URI
• Al	
  ne)o	
  della	
  Data	
  Validaon	
  come	
  la	
  conosciamo,	
  un	
  aspe)o	
  
i...
HTTP	
  Request	
  -­‐	
  URI	
  (es.)
Web	
  Applica3on	
  Server	
  

Cosa	
  viene	
  processato?

ASP.NET	
  /	
  IIS
...
HTTP	
  Request	
  -­‐	
  Version
• A)ualmente	
  ulizziamo	
  il	
  protocollo	
  HTTP	
  nelle	
  sue	
  due	
  versioni...
HTTP	
  Request	
  -­‐	
  Header
• Nonostante	
  nei	
  browser	
  non	
  vediamo	
  gli	
  header,	
  anche	
  solo	
  l’...
HTTP	
  Request	
  -­‐	
  Header	
  (es.)

curl -kis -A "<script>alert(1)</script>" http://onofri.org/

!

curl -kis -H "V...
HTTP	
  Response	
  -­‐	
  Protocol	
  /	
  Code	
  /	
  Explana3on
• Possiamo	
  capire	
  come	
  ci	
  risponde	
  il	
...
HTTP	
  Response	
  -­‐	
  Header
• Gli	
  Header	
  sono	
  una	
  fonte	
  molto	
  interessante	
  e	
  importante	
  d...
HTTP	
  Response	
  -­‐	
  Header	
  (cont.)
• E	
  se	
  negli	
  Header	
  possiamo	
  
inserire	
  dei	
  parametri?	
 ...
HTTP	
  Response	
  -­‐	
  Header	
  (es.)
curl -kisI http://onofri.org
HTTP/1.1 200 OK
Date: Sat, 26 Oct 2013 16:00:00 GM...
HTTP	
  Security	
  Header
Protezione	
  dall’UI	
  Redressing	
  /	
  Click	
  Jacking

X-­‐Frame-­‐Op3ons	
  
solitamente	
  impostato	
  con	
  il...
Protezione	
  accessoria	
  an3-­‐XSS

X-­‐XSS-­‐Protec3on	
  
solitamente	
  impostato	
  con	
  il	
  valore	
  “1;	
  m...
Protezione	
  accessoria	
  an3-­‐MiTM

Strict-­‐Transport-­‐Security	
  
solitamente	
  impostato	
  con	
  un	
  valore	...
Policy	
  per	
  i	
  permessi	
  sui	
  contenu3

Content-­‐Security-­‐Policy	
  
specifica	
  una	
  policy	
  per	
  il	...
Policy	
  per	
  l’accesso	
  da	
  parte	
  di	
  si3	
  terzi

Cross	
  Origin	
  Resource	
  Sharing	
  
specifica	
  un...
Policy	
  per	
  l’accesso	
  da	
  parte	
  di	
  si3	
  terzi	
  (es.)
Header

Significato

Access-­‐Control-­‐Allow-­‐Or...
Protezioni	
  accessorie	
  per	
  Internet	
  Explorer

X-­‐Content-­‐Type-­‐Op3ons	
  
solitamente	
  impostato	
  con	
...
Conclusioni
GRAZIE!

;-­‐)

http://onofri.org/
http://twitter.com/simoneonofri
http://it.linkedin.com/simoneonofri
http://slideshare.n...
http://onofri.org/
http://twitter.com/simoneonofri
http://it.linkedin.com/simoneonofri
http://slideshare.net/simone.onofri...
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test
Upcoming SlideShare
Loading in …5
×

Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test

1,323 views

Published on

Negli ultimi anni la disponibilità di Browser sempre più avanzati e le grandi capacità di calcolo dei Client hanno portato all’attenzione della comunità di sicurezza una serie di attacchi o tecniche che hanno come bersaglio principale l’utente dell’applicazione. I vendor e organizzazioni come IEFT e W3C hanno considerato opportuna l’implementazione di alcune protezioni attivabili tramite Header HTTP.
Gli header devono essere configurati per non rilasciare le informazioni, ottimizzare cache e codifica. Di contro manipolando direttamente i pacchetti HTTP è possibile alterare anche le risposte dell’applicazione o il suo funzionamento. Durate il talk analizzeremo attacchi come l’UI Redressing / HTTP Response Splitting, HTTP Verb Tampering e molto altro.

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

No Downloads
Views
Total views
1,323
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Gli HTTP Security Header e altri elementi da sapere su HTTP in un Web Application Penetration Test

  1. 1. Gli  HTTP  Security  Header  e  altri  elemen3  da  sapere   su  HTTP  in  un  Web  Applica3on  Penetra3on  Test Linux  Day  2013   Roma,  26  o)obre  2013   Simone  Onofri
  2. 2. Introduzione
  3. 3. hDp://onofri.org/u/ld13
  4. 4. Agenda
  5. 5. Agenda Introduzione   ! Come  si  sono  evolute  le  minacce…   …e  il  perchè  degli  HTTP  Security  Headers?   ! HTTP  Request  e  HTTP  Response   ! Gli  HTTP  Security  Header   ! Conclusioni
  6. 6. Come  si  sono  evolute  le  minacce  nel  tempo  e  perchè   sono  importan3  gli  HTTP  Header
  7. 7. Computer  Security  Timeline
  8. 8. E  ora?
  9. 9. HTTP  Request  e  HTTP  Response
  10. 10. HTTP  Request  e  Response HTTP Request Method <SP> URI <SP> Protocol HTTP Response Protocol <SP> Code <SP> <CR> <LF> <CR> <LF> Header: Value Header: Value <CR> <LF> <CR> <LF> Header: Value Header: Value <CR> <LF> <CR> <LF> Header: Value Explanati on Header: Value <CR> <LF> <CR> <LF> Body <CR> <LF> <CR> <LF> Body
  11. 11. HTTP  Request  -­‐  Method • Quali  sono  i  metodi  che  l’applicazione/il  web  server  acce)ano?  Quali   sono  correN?  HTTP  Verb  Exploit  /  Tampering   • GET   • POST   • PUT  (operazioni  sui  file)   • DELETE  (operazioni  sui  file)   • TRACE  (rifle)ere  parametri)   • CONNECT  (usare  l’host  come  proxy)   • ANTANI  (???)   • Come  lo  verifico?   curl -kis -X METHOD -v http://onofri.org/
  12. 12. HTTP  Request  -­‐  Method  (es.) TRACE / HTTP/1.1 Connection: Close Host: 127.0.0.1 Pragma: no-cache ! <script>alert(1)</script> ! ! HTTP/1.1 200 OK Date: Tue, 05 Apr 2011 18:37:20 GMT Server: Apache/2.2.8 (Ubuntu) Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: message/http ! TRACE / HTTP/1.1 Connection: Keep-Alive Host: 127.0.0.1 Pragma: no-cache ! <script>alert(1)</script>
  13. 13. HTTP  Request  -­‐  URI • Al  ne)o  della  Data  Validaon  come  la  conosciamo,  un  aspe)o   interessante  a  livello  più  basso  è  come  i  parametri  possono  essere   intepreta.  Possono  essere  inquina,  per  bypassare  dei  filtri  o  altro?  Si   con  la  HTTP  Parameter  Pollu3on.   • Come  lo  verifico?   curl -kis http://onofri.org/path.php? parametro=valore1&parametro=valore2
  14. 14. HTTP  Request  -­‐  URI  (es.) Web  Applica3on  Server   Cosa  viene  processato? ASP.NET  /  IIS Tu)e  le  occorrenze,  concatenate  da  una  virgola ASP  /  IIS Tu)e  le  occorrenze,  concatenate  da  una  virgola PHP  /  Apache L’ulma  occorrenza PHP  /  Zeus L’ulma  occorrenza JSP  /  Servlet  /  Tomcat La  prima  occorrenza JSP  /  Servlet  /  Oracle  AS  10g L’ulma  occorrenza JSP  /  Servlet  /  Je)y L’ulma  occorrenza IBM  Lotus  Domino L’ulma  occorrenza IBM  HTTP  Server   La  prima  occorrenza mod_perl  /  libpareq2  /  Apache La  prima  occorrenza Perl  CGI  /  Apache La  prima  occorrenza mod_wsgi  (Python)  /  Apache La  prima  occorrenza Python  /  Zope Tu)e  le  occorrenze  se  le  meNamo  come  lista  param=[‘valore1’,  ‘valore2’]
  15. 15. HTTP  Request  -­‐  Version • A)ualmente  ulizziamo  il  protocollo  HTTP  nelle  sue  due  versioni.  HTTP/ 1.0  e  HTTP/1.1.  e  sta  per  uscire  HTTP/2.0   • Tra  le  differenze  principali  che  ci  possono  interessare  è  la  presenza  di   vhost   ! • Come  lo  verifico?   curl -kis —http1.0 -H “Host: onofri.org” http:// 67.222.36.105 curl -kis —http1.1 -H “Host: onofri.org” http:// 67.222.36.105
  16. 16. HTTP  Request  -­‐  Header • Nonostante  nei  browser  non  vediamo  gli  header,  anche  solo  l’invio  di   ques  può  modificare  completamente  il  comportamento  del  server  e/o   dell’applicazione.   • Cookie  (Data  Validaon)   • Authorizaon  (Basic  Authencaon)   • Host  (già  visto)   • Origin  (lo  vediamo  dopo)   • Upgrade  (cambio  di  protocollo)   • Via  (Data  Validaon,  Non  Repudiaon)   • User-­‐Agent  (Data  Validaon)   • Referer  (Data  Validaon,  Autorizzazione)   • Inoltre  possiamo  ulizzare  diversi  a)acchi  manipolando  gli  header  anche   per  quesoni  di  DoS  (es.  Slowloris)  
  17. 17. HTTP  Request  -­‐  Header  (es.) curl -kis -A "<script>alert(1)</script>" http://onofri.org/ ! curl -kis -H "Via: 127.0.0.1" http://onofri.org/ ! curl -kis -H "Referer: http://onofri.org/admin/index.php” http://onofri.org/admin/index.php? function=adduser&user=hacker&password=hacker
  18. 18. HTTP  Response  -­‐  Protocol  /  Code  /  Explana3on • Possiamo  capire  come  ci  risponde  il  server  a  livello  di  protocollo  e  codice   (parcolarmente  ule  se  manipoliamo  l’header)   • Da  qui  possiamo  o)enere  molte  informazioni  sui  codici  di  errore  per   capire  come  si  stru)ura  l’applicazione  (es.  se  usa  dei  redirect,  pagine   404  personalizzate…)
  19. 19. HTTP  Response  -­‐  Header • Gli  Header  sono  una  fonte  molto  interessante  e  importante  di   informazioni   • Policy  relave  al  caching  e  alla  durata  della  pagina  (es.  Pragma,   Cache-­‐Control)   • Policy  per  l’accesso  alle  informazioni  (es.  Content-­‐Type)   • Codifica   • Set-­‐Cookie  (HTTPOnly,  Secure,  Path,  Domain,  Expire,  Max-­‐Age)   • Possono  rilasciare  informazioni  (es.  Server,  X-­‐Powered-­‐By,   Alternates…)   • Possono  essere  usa  per  proteggere  gli  uten
  20. 20. HTTP  Response  -­‐  Header  (cont.) • E  se  negli  Header  possiamo   inserire  dei  parametri?   • HTTP  Response  SpliNng   • Open  Redirect   • Header  Injecon   HTTP Response Protocol <SP> Code <SP> Explanati on <CR> <LF> Header: Value <CR> <LF> Header: Value <CR> <LF> Header: Value <CR> <LF> <CR> <LF> Body
  21. 21. HTTP  Response  -­‐  Header  (es.) curl -kisI http://onofri.org HTTP/1.1 200 OK Date: Sat, 26 Oct 2013 16:00:00 GMT Server: Apache Content-Language: en-US Content-Location: http://onofri.org/ Content-Script-Type: text/javascript Content-Style-Type: text/css Revisit-after: 7 days Cache-Control: post-check=0, pre-check=0, false, no-store, no-cache, must-revalidate Pragma: no-cache Expires: -1 imagetoolbar: false MSThemeCompatible: no X-UA-Compatible: IE=7 P3P: CAO DSP AND SO ON pics-Label: (pics-1.1 "http://www.icra.org/pics/vocabularyv03/" l gen true for "http:// www.siatec.net" r (n 0 s 0 v 0 l 0 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 0) gen true for "http://www.siatec.net" r (n 0 s 0 v 0 l 0 oa 0 ob 0 oc 0 od 0 oe 0 of 0 og 0 oh 0 c 0)) X-XRDS-Location: http://pip.verisignlabs.com/user/simone/yadisxrds X-Content-Type-Options: nosniff X-Download-Options: noopen X-XSS-Protection: 1; mode=block X-Frame-Options: DENY Strict-Transport-Security: max-age=0 Vary: Accept-Encoding Content-Type: text/html;charset=utf-8
  22. 22. HTTP  Security  Header
  23. 23. Protezione  dall’UI  Redressing  /  Click  Jacking X-­‐Frame-­‐Op3ons   solitamente  impostato  con  il  valore  “DENY”  o  con  valori  congrui  se   l’applicazione  ulizza  frame  e  iframe,  evita  l’apertura  di  frame  contenen   contenu  arbitrari,  migando  a)achi  di  po  UI  Redressing  /  ClickJacking.     Questo  header  è  stato  inizialmente  presentato  dai  vendor  ed  è  pertanto   nel  formato  X-­‐Frame-­‐Opons.  A)ualmente  è  in  un  Drau  della  IETF  e   diventerà  Frame-­‐Opons.
  24. 24. Protezione  accessoria  an3-­‐XSS X-­‐XSS-­‐Protec3on   solitamente  impostato  con  il  valore  “1;  mode=block”  specifica  al  browser   di  aNvare  le  protezioni  an-­‐Cross  Site  Scripng
  25. 25. Protezione  accessoria  an3-­‐MiTM Strict-­‐Transport-­‐Security   solitamente  impostato  con  un  valore  consono  “max-­‐age”  e  ulteriori  valori   come  includeSubDomains,  specifica  al  browser  che  è  possibile  visualizzare   i  contenu  solamente  tramite  il  protocollo  HTTPS,  migando  a)acchi   Man-­‐In-­‐The-­‐Middle.
  26. 26. Policy  per  i  permessi  sui  contenu3 Content-­‐Security-­‐Policy   specifica  una  policy  per  il  browser  sul  po  di  contenu    permessi  all’interno  della  pagina  e  la  relava   origine.  Aiuta  ad  idenficare  e  migare  una  serie  di  a)acchi  come  il  Cross  Site  Scripng  e  il  Man-­‐In-­‐ The-­‐Middle.  Per  esempio  una  policy  che  perme)e  l’ulizzo  di  una  qualsiasi  pologia  di  contenuto  da   tuN  i  domini  so)o  example.com  è  default-­‐src  'self'  *.onofri.org;  .   E’  possibile  inoltre  specificare  un  indirizzo  per  la  segnalazione  di  una  violazione,  supportando   l’idenficazione  di  eventuali  a)acchi  di  Phishing.  Ad  esempio  per  inviare  la  violazione  è  possibile   ulizzare  report-­‐uri  h@ps://onofri.org/report/vioaDon/.  E’  possibile  anche  semplicemente  monitorare   la  policy  specificata  ulizzando,  insieme  all’header  che  stabilisce  la  policy,  Content-­‐Security-­‐Policy-­‐ Report-­‐Only.   Questo  header  è  stato  inizialmente  presentato  dai  vendor  ed  è  pertanto  nel  formato  X-­‐Content-­‐ Security-­‐Policy  e  X-­‐WebKit-­‐CSP.  A)ualmente  è  in  un  Drau  del  W3C  e  diventerà  Content-­‐Security-­‐Policy
  27. 27. Policy  per  l’accesso  da  parte  di  si3  terzi Cross  Origin  Resource  Sharing   specifica  una  policy  per  il  browser  sull’accesso  alle  informazioni  tramite  richieste   XMLH)pRequest  quando  queste  violerebbero  la  same-­‐origin-­‐policy.  L’header   CORS  può  essere  ulizzato  per  specificare  le  poliche  relavamente  all’accesso   delle  informazioni  da  applicazioni  esterne  alla  same-­‐origin  e/o  al  same-­‐domain.   Una  richiesta  conene  l’header  Origin,  che  specifica  l’origine  della  richiesta.   Il  CORS  era  stato  inizialmente  pensato  per  VoiceXML,  successivamente  è  stato   inserito  in  una  raccomandazione  a  se  stante.  
  28. 28. Policy  per  l’accesso  da  parte  di  si3  terzi  (es.) Header Significato Access-­‐Control-­‐Allow-­‐Origin specifica  l’origine  permessa Access-­‐Control-­‐Allow-­‐CredenDals specifica  quando  è  possibile  esporre  le  credenziali Access-­‐Control-­‐Expose-­‐Headers specifica  quali  sono  gli  header  che  è  possibile  esporre  alla  API  CORS Access-­‐Control-­‐Max-­‐Age specifica  la  durata  massima  della  cache,  come,  1728000 Access-­‐Control-­‐Allow-­‐Methods specifica  i  metodi  permessi,  come  POST,  GET,  OPTIONS Access-­‐Control-­‐Allow-­‐Headers specifica  la  possibilità  di  ulizzo  di  alcuni  header  personalizza,  come  X-­‐ Customheader Access-­‐Control-­‐Request-­‐Method specifica  quali  metodi  possono  essere  ulizza  per  la  richiesta Access-­‐Control-­‐Request-­‐Headers   quali  header  possono  essere  ulizza  per  la  richiesta
  29. 29. Protezioni  accessorie  per  Internet  Explorer X-­‐Content-­‐Type-­‐Op3ons   solitamente  impostato  con  il  valore  “nosniff”  specifica  al  browser  di  usare  il  mime  type  definito  senza   eseguire  l’override.  Miga  eventuali  a)acchi  di  po  Cross  Site  Scripng  all’interno  di  un  file  JSON.  E’   supportato  solo  da  Internet  Explorer.   X-­‐Download-­‐Op3ons   solitamente  impostato  con  il  valore  “noopen”  non  perme)e  l’apertura  di  file  –  come  ad  esempio  dei   PDF  –  all’interno  del  browser.  Miga  eventuali  infezioni  di  file  e  migliora  l’usabilità.  E’  supportato  solo   da  Internet  Explorer. !
  30. 30. Conclusioni
  31. 31. GRAZIE! ;-­‐) http://onofri.org/ http://twitter.com/simoneonofri http://it.linkedin.com/simoneonofri http://slideshare.net/simone.onofri
  32. 32. http://onofri.org/ http://twitter.com/simoneonofri http://it.linkedin.com/simoneonofri http://slideshare.net/simone.onofri DOMANDE ?

×