SlideShare uma empresa Scribd logo
Encontrando
                                  falhas em
                                  aplicações web
                                  baseadas em flash

                                  Wagner Elias
                                  Gerente de Pesquisa e Desenvolvimento
                                  Conviso IT Security




sexta-feira, 14 de maio de 2010
Tópicos
                      • Um pouco sobre flash
                      • Vulnerabilidades
                      • Como fazer direito
                      • Conclusões



sexta-feira, 14 de maio de 2010
Um pouco sobre Flash
sexta-feira, 14 de maio de 2010
Quem desenvolve em flash?
                      • A maioria das aplicações
                              desenvolvidas em flash são:
                            • Peças publicitárias
                                  desenvolvidas por
                                  agências de propaganda
                            • Interferências visuais
                                  criadas por designers



sexta-feira, 14 de maio de 2010
O que eles esquecem?
                      • Flash é Client-Side e pode ser decompilado
                              apresentando o fonte em ActionScript




sexta-feira, 14 de maio de 2010
Flash in Client-Side
                         Computador                Server


                            Flash Player




sexta-feira, 14 de maio de 2010
Flash in Client-Side
                         Computador                Server


                            Flash Player




sexta-feira, 14 de maio de 2010
Flash in Client-Side
                         Computador                Server


                            Flash Player




sexta-feira, 14 de maio de 2010
Flash in Client-Side
                         Computador                Server


                            Flash Player




sexta-feira, 14 de maio de 2010
Flash in Client-Side
                         Computador                Server


                            Flash Player




sexta-feira, 14 de maio de 2010
Flash in Client-Side
                         Computador                Server


                            Flash Player




sexta-feira, 14 de maio de 2010
Flash in Client-Side
                         Computador                Server


                            Flash Player




sexta-feira, 14 de maio de 2010
filetype:swf
                      •       Milhares de telas de login com
                              usuário e senha em Client-Side
                            •     filetype:swf inurl:login OR
                                  inurl:secure OR inurl:admin

                      •       Milhares de arquivos
                              crossdomain.xml sem
                              controles de segurança
                            •     filetype:xml inurl:crossdomain



sexta-feira, 14 de maio de 2010
Vulnerabilidades
sexta-feira, 14 de maio de 2010
Information Leakage
                      • Como o swf roda na máquina do usuário,
                              qualquer informação, segredo no código
                              está disponível para qualquer um que
                              decompilar o arquivo swf




sexta-feira, 14 de maio de 2010
Flash Decompile


                                  AS Compila e gera SWF   Text   SWF decompila gera AS


                                       CS3 / MTASC                   SWFScan / Flare




DEMO


sexta-feira, 14 de maio de 2010
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter seus inputs tratados
                      class VulnerableMovie {
                          static var app : VulnerableMovie;
                          function VulnerableMovie() {
                              _root.createTextField("tf",0,100,100,640,480);

                                  if (_root.userinput1 != null) {
                                      getURL(_root.userinput1);
                                  }

                                  _root.tf.html = true; // default is safely false
                                  _root.tf.htmlText = "Hello " + _root.userinput2;

                                  if (_root.userinput3 != null ) {
                                      _root.loadMovie(_root.userinput3);
                                  }
                             }
                             static function main(mc) {
DEMO                             app = new VulnerableMovie();
                             }
                      }

sexta-feira, 14 de maio de 2010
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter seus inputs tratados
                      class VulnerableMovie {
                          static var app : VulnerableMovie;
                          function VulnerableMovie() {
                              _root.createTextField("tf",0,100,100,640,480);

                                  if (_root.userinput1 != null) {
                                      getURL(_root.userinput1);
                                  }

                                  _root.tf.html = true; // default is safely false
                                  _root.tf.htmlText = "Hello " + _root.userinput2;

                                  if (_root.userinput3 != null ) {
                                      _root.loadMovie(_root.userinput3);
                                  }
                             }
                             static function main(mc) {
DEMO                             app = new VulnerableMovie();
                             }
                      }

sexta-feira, 14 de maio de 2010
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter seus inputs tratados
                      class VulnerableMovie {
                          static var app : VulnerableMovie;
                          function VulnerableMovie() {
                              _root.createTextField("tf",0,100,100,640,480);

                                  if (_root.userinput1 != null) {
                                      getURL(_root.userinput1);     XSS
                                  }

                                  _root.tf.html = true; // default is safely false
                                  _root.tf.htmlText = "Hello " + _root.userinput2;

                                  if (_root.userinput3 != null ) {
                                      _root.loadMovie(_root.userinput3);
                                  }
                             }
                             static function main(mc) {
DEMO                             app = new VulnerableMovie();
                             }
                      }

sexta-feira, 14 de maio de 2010
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter seus inputs tratados
                      class VulnerableMovie {
                          static var app : VulnerableMovie;
                          function VulnerableMovie() {
                              _root.createTextField("tf",0,100,100,640,480);

                                  if (_root.userinput1 != null) {
                                      getURL(_root.userinput1);     XSS
                                  }

                                  _root.tf.html = true; // default is safely false
                                  _root.tf.htmlText = "Hello " + _root.userinput2;

                                  if (_root.userinput3 != null ) {
                                      _root.loadMovie(_root.userinput3);
                                  }
                             }
                             static function main(mc) {
DEMO                             app = new VulnerableMovie();
                             }
                      }

sexta-feira, 14 de maio de 2010
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter seus inputs tratados
                      class VulnerableMovie {
                          static var app : VulnerableMovie;
                          function VulnerableMovie() {
                              _root.createTextField("tf",0,100,100,640,480);

                                  if (_root.userinput1 != null) {
                                      getURL(_root.userinput1);     XSS
                                  }

                                  _root.tf.html = true; // default is safely false
                                  _root.tf.htmlText = "Hello " + _root.userinput2;   XSS
                                  if (_root.userinput3 != null ) {
                                      _root.loadMovie(_root.userinput3);
                                  }
                             }
                             static function main(mc) {
DEMO                             app = new VulnerableMovie();
                             }
                      }

sexta-feira, 14 de maio de 2010
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter seus inputs tratados
                      class VulnerableMovie {
                          static var app : VulnerableMovie;
                          function VulnerableMovie() {
                              _root.createTextField("tf",0,100,100,640,480);

                                  if (_root.userinput1 != null) {
                                      getURL(_root.userinput1);     XSS
                                  }

                                  _root.tf.html = true; // default is safely false
                                  _root.tf.htmlText = "Hello " + _root.userinput2;   XSS
                                  if (_root.userinput3 != null ) {
                                      _root.loadMovie(_root.userinput3);
                                  }
                             }
                             static function main(mc) {
DEMO                             app = new VulnerableMovie();
                             }
                      }

sexta-feira, 14 de maio de 2010
Cross Site Scripting (XSS)
               • Assim como qualquer aplicação o flash também
                       precisa ter seus inputs tratados
                      class VulnerableMovie {
                          static var app : VulnerableMovie;
                          function VulnerableMovie() {
                              _root.createTextField("tf",0,100,100,640,480);

                                  if (_root.userinput1 != null) {
                                      getURL(_root.userinput1);     XSS
                                  }

                                  _root.tf.html = true; // default is safely false
                                  _root.tf.htmlText = "Hello " + _root.userinput2;   XSS
                                  if (_root.userinput3 != null ) {

                                  }
                                      _root.loadMovie(_root.userinput3);
                                                                              XSS
                             }
                             static function main(mc) {
DEMO                             app = new VulnerableMovie();
                             }
                      }

sexta-feira, 14 de maio de 2010
Crossdomain
               • Por padrão o Flash Player (a partir da versão 7)
                       implementa um SandBox
                     • Apenas com um crossdomain.xml é possível
                             comunicar com outras aplicações




sexta-feira, 14 de maio de 2010
Crossdomain Abuse
                     • O problema é inserir o crossdomain.xml
                             usando o wildcard padrão e sem determinar
                             quais endereços podem se comunicar




DEMO


sexta-feira, 14 de maio de 2010
Crossdomain Abuse
                     • O problema é inserir o crossdomain.xml
                             usando o wildcard padrão e sem determinar
                             quais endereços podem se comunicar




DEMO


sexta-feira, 14 de maio de 2010
Crossdomain Abuse
                     • O problema é inserir o crossdomain.xml
                             usando o wildcard padrão e sem determinar
                             quais endereços podem se comunicar



                                              Permite que qualquer um acesse o conteúdo




DEMO


sexta-feira, 14 de maio de 2010
Como fazer direito
sexta-feira, 14 de maio de 2010
Flash Security Facts

               • Não insira informações sensiveis em flash
               • Valide todos os inputs
               • Defina quais domínios podem acessar o
                       conteúdo no crossdomain.xml
               • Se for inevitável o flash, criptografar o
                       ActionScript (SWF Encrypt)


sexta-feira, 14 de maio de 2010
Conclusões
sexta-feira, 14 de maio de 2010
Conclusões
               • A Adobe adora a Apple
               • ActionScript é uma linguagem de programação
                       e deve ser tratada como tal
               • É preciso definir e implementar controles de
                       segurança como em qualquer aplicação web




sexta-feira, 14 de maio de 2010
Web 2.0?




                                  Perguntas?
sexta-feira, 14 de maio de 2010

Mais conteúdo relacionado

Semelhante a Encontrando falhas em aplicações web baseadas em flash

Php do Jeito Certo
Php do Jeito CertoPhp do Jeito Certo
Php do Jeito Certo
Cekurte Sistemas
 
Asp Net 4 0 Para Iniciantes Cp 2010
Asp Net 4 0 Para Iniciantes   Cp 2010Asp Net 4 0 Para Iniciantes   Cp 2010
Asp Net 4 0 Para Iniciantes Cp 2010
Campus Party Brasil
 
OWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHPOWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHP
Carlos Serrao
 
Html5 api herói, vilão e sua utilização hoje em aplicações reais
Html5 api  herói, vilão e sua utilização hoje em aplicações reaisHtml5 api  herói, vilão e sua utilização hoje em aplicações reais
Html5 api herói, vilão e sua utilização hoje em aplicações reais
Wilson Mendes
 
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
Thiago Dieb
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Thiago Dieb
 
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
As Zone
 
Hands-On – ExtJS
Hands-On – ExtJSHands-On – ExtJS
Hands-On – ExtJS
Fernando de Assis Rodrigues
 
Fuzzing com ZAP (Zed Attack Proxy)
Fuzzing com ZAP (Zed Attack Proxy)Fuzzing com ZAP (Zed Attack Proxy)
Fuzzing com ZAP (Zed Attack Proxy)
Maurício Harley
 
Mini Curso Mashup Coreu
Mini Curso Mashup CoreuMini Curso Mashup Coreu
Mini Curso Mashup Coreu
Marcelo Linhares
 
Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4
Rodrigo Kono
 
Administração de portais
Administração de portaisAdministração de portais
Administração de portais
Felipe Perin
 
Agile & Open Source: A Experiência do Framework Demoiselle
Agile & Open Source: A Experiência do Framework DemoiselleAgile & Open Source: A Experiência do Framework Demoiselle
Agile & Open Source: A Experiência do Framework Demoiselle
Serge Rehem
 
Apresentação Flash Camp Rio 2010 by Raphael Vinicius
Apresentação Flash Camp Rio 2010 by Raphael ViniciusApresentação Flash Camp Rio 2010 by Raphael Vinicius
Apresentação Flash Camp Rio 2010 by Raphael Vinicius
Raphael Vinicius Pinheiro de Melo
 
Introdução ao Desenvolvimento Mobile Web
Introdução ao Desenvolvimento Mobile WebIntrodução ao Desenvolvimento Mobile Web
Introdução ao Desenvolvimento Mobile Web
Bruno Fernandes "PorKaria"
 
Desenvolvimento Mobile Web & Software Livre - Flisol cg
Desenvolvimento Mobile Web & Software Livre - Flisol cgDesenvolvimento Mobile Web & Software Livre - Flisol cg
Desenvolvimento Mobile Web & Software Livre - Flisol cg
Bruno Fernandes "PorKaria"
 
DevOps e Apps Mobile: Você realmente se importa?
DevOps e Apps Mobile: Você realmente se importa?DevOps e Apps Mobile: Você realmente se importa?
DevOps e Apps Mobile: Você realmente se importa?
Letticia Nicoli
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
thiagolima
 
Usando a programação web para mobile com Twitter Bootstrap
Usando a programação web para mobile com Twitter BootstrapUsando a programação web para mobile com Twitter Bootstrap
Usando a programação web para mobile com Twitter Bootstrap
Flavio Souza
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
Flavio Souza
 

Semelhante a Encontrando falhas em aplicações web baseadas em flash (20)

Php do Jeito Certo
Php do Jeito CertoPhp do Jeito Certo
Php do Jeito Certo
 
Asp Net 4 0 Para Iniciantes Cp 2010
Asp Net 4 0 Para Iniciantes   Cp 2010Asp Net 4 0 Para Iniciantes   Cp 2010
Asp Net 4 0 Para Iniciantes Cp 2010
 
OWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHPOWASP@ ISCTE-IUL, Segurança em PHP
OWASP@ ISCTE-IUL, Segurança em PHP
 
Html5 api herói, vilão e sua utilização hoje em aplicações reais
Html5 api  herói, vilão e sua utilização hoje em aplicações reaisHtml5 api  herói, vilão e sua utilização hoje em aplicações reais
Html5 api herói, vilão e sua utilização hoje em aplicações reais
 
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...Palestra - Darkmira Tour PHP 2016  - A ilusão das referências sobre desenvolv...
Palestra - Darkmira Tour PHP 2016 - A ilusão das referências sobre desenvolv...
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
 
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
 
Hands-On – ExtJS
Hands-On – ExtJSHands-On – ExtJS
Hands-On – ExtJS
 
Fuzzing com ZAP (Zed Attack Proxy)
Fuzzing com ZAP (Zed Attack Proxy)Fuzzing com ZAP (Zed Attack Proxy)
Fuzzing com ZAP (Zed Attack Proxy)
 
Mini Curso Mashup Coreu
Mini Curso Mashup CoreuMini Curso Mashup Coreu
Mini Curso Mashup Coreu
 
Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4
 
Administração de portais
Administração de portaisAdministração de portais
Administração de portais
 
Agile & Open Source: A Experiência do Framework Demoiselle
Agile & Open Source: A Experiência do Framework DemoiselleAgile & Open Source: A Experiência do Framework Demoiselle
Agile & Open Source: A Experiência do Framework Demoiselle
 
Apresentação Flash Camp Rio 2010 by Raphael Vinicius
Apresentação Flash Camp Rio 2010 by Raphael ViniciusApresentação Flash Camp Rio 2010 by Raphael Vinicius
Apresentação Flash Camp Rio 2010 by Raphael Vinicius
 
Introdução ao Desenvolvimento Mobile Web
Introdução ao Desenvolvimento Mobile WebIntrodução ao Desenvolvimento Mobile Web
Introdução ao Desenvolvimento Mobile Web
 
Desenvolvimento Mobile Web & Software Livre - Flisol cg
Desenvolvimento Mobile Web & Software Livre - Flisol cgDesenvolvimento Mobile Web & Software Livre - Flisol cg
Desenvolvimento Mobile Web & Software Livre - Flisol cg
 
DevOps e Apps Mobile: Você realmente se importa?
DevOps e Apps Mobile: Você realmente se importa?DevOps e Apps Mobile: Você realmente se importa?
DevOps e Apps Mobile: Você realmente se importa?
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Usando a programação web para mobile com Twitter Bootstrap
Usando a programação web para mobile com Twitter BootstrapUsando a programação web para mobile com Twitter Bootstrap
Usando a programação web para mobile com Twitter Bootstrap
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
 

Mais de Conviso Application Security

Entendendo o PCI-DSS
Entendendo o PCI-DSSEntendendo o PCI-DSS
Entendendo o PCI-DSS
Conviso Application Security
 
Integrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de softwareIntegrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de software
Conviso Application Security
 
Uma verdade inconveniente - Quem é responsável pela INsegurança das aplicações?
Uma verdade inconveniente - Quem é responsável pela INsegurança das aplicações? Uma verdade inconveniente - Quem é responsável pela INsegurança das aplicações?
Uma verdade inconveniente - Quem é responsável pela INsegurança das aplicações?
Conviso Application Security
 
Building Client-Side Attacks with HTML5 Features
Building Client-Side Attacks with HTML5 FeaturesBuilding Client-Side Attacks with HTML5 Features
Building Client-Side Attacks with HTML5 Features
Conviso Application Security
 
Você Escreve Código e Quem Valida?
Você Escreve Código e Quem Valida?Você Escreve Código e Quem Valida?
Você Escreve Código e Quem Valida?
Conviso Application Security
 
Testar não é suficiente. Tem que fazer direito!
Testar não é suficiente. Tem que fazer direito!Testar não é suficiente. Tem que fazer direito!
Testar não é suficiente. Tem que fazer direito!
Conviso Application Security
 
Implementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISOImplementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISO
Conviso Application Security
 
Automatizando a análise passiva de aplicações Web
Automatizando a análise passiva de aplicações WebAutomatizando a análise passiva de aplicações Web
Automatizando a análise passiva de aplicações Web
Conviso Application Security
 
Você confia nas suas aplicações mobile?
Você confia nas suas aplicações mobile?Você confia nas suas aplicações mobile?
Você confia nas suas aplicações mobile?
Conviso Application Security
 
Pentest em Aplicações Móveis
Pentest em Aplicações MóveisPentest em Aplicações Móveis
Pentest em Aplicações Móveis
Conviso Application Security
 
MASP: Um processo racional para garantir o nível de proteção das aplicações w...
MASP: Um processo racional para garantir o nível de proteção das aplicações w...MASP: Um processo racional para garantir o nível de proteção das aplicações w...
MASP: Um processo racional para garantir o nível de proteção das aplicações w...
Conviso Application Security
 
HTML5 Seguro ou Inseguro?
HTML5 Seguro ou Inseguro?HTML5 Seguro ou Inseguro?
HTML5 Seguro ou Inseguro?
Conviso Application Security
 
Threats from economical improvement rss 2010
Threats from economical improvement rss 2010Threats from economical improvement rss 2010
Threats from economical improvement rss 2010
Conviso Application Security
 
O processo de segurança em desenvolvimento, que não é ISO 15.408
O processo de segurança em desenvolvimento, que não é ISO 15.408O processo de segurança em desenvolvimento, que não é ISO 15.408
O processo de segurança em desenvolvimento, que não é ISO 15.408
Conviso Application Security
 
Protegendo Aplicações Php com PHPIDS - Php Conference 2009
Protegendo Aplicações Php com PHPIDS - Php Conference 2009Protegendo Aplicações Php com PHPIDS - Php Conference 2009
Protegendo Aplicações Php com PHPIDS - Php Conference 2009
Conviso Application Security
 
Playing Web Fuzzing - H2HC 2009
Playing Web Fuzzing - H2HC 2009Playing Web Fuzzing - H2HC 2009
Playing Web Fuzzing - H2HC 2009
Conviso Application Security
 
OWASP Top 10 e aplicações .Net - Tech-Ed 2007
OWASP Top 10 e aplicações .Net - Tech-Ed 2007OWASP Top 10 e aplicações .Net - Tech-Ed 2007
OWASP Top 10 e aplicações .Net - Tech-Ed 2007
Conviso Application Security
 
Abotoaduras & Bonés
Abotoaduras & BonésAbotoaduras & Bonés
Abotoaduras & Bonés
Conviso Application Security
 
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com phpTratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
Conviso Application Security
 

Mais de Conviso Application Security (20)

Entendendo o PCI-DSS
Entendendo o PCI-DSSEntendendo o PCI-DSS
Entendendo o PCI-DSS
 
Integrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de softwareIntegrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de software
 
Uma verdade inconveniente - Quem é responsável pela INsegurança das aplicações?
Uma verdade inconveniente - Quem é responsável pela INsegurança das aplicações? Uma verdade inconveniente - Quem é responsável pela INsegurança das aplicações?
Uma verdade inconveniente - Quem é responsável pela INsegurança das aplicações?
 
Building Client-Side Attacks with HTML5 Features
Building Client-Side Attacks with HTML5 FeaturesBuilding Client-Side Attacks with HTML5 Features
Building Client-Side Attacks with HTML5 Features
 
Você Escreve Código e Quem Valida?
Você Escreve Código e Quem Valida?Você Escreve Código e Quem Valida?
Você Escreve Código e Quem Valida?
 
Testar não é suficiente. Tem que fazer direito!
Testar não é suficiente. Tem que fazer direito!Testar não é suficiente. Tem que fazer direito!
Testar não é suficiente. Tem que fazer direito!
 
Implementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISOImplementando Segurança em desenvolvimento com a verdadeira ISO
Implementando Segurança em desenvolvimento com a verdadeira ISO
 
Automatizando a análise passiva de aplicações Web
Automatizando a análise passiva de aplicações WebAutomatizando a análise passiva de aplicações Web
Automatizando a análise passiva de aplicações Web
 
Você confia nas suas aplicações mobile?
Você confia nas suas aplicações mobile?Você confia nas suas aplicações mobile?
Você confia nas suas aplicações mobile?
 
Pentest em Aplicações Móveis
Pentest em Aplicações MóveisPentest em Aplicações Móveis
Pentest em Aplicações Móveis
 
MASP: Um processo racional para garantir o nível de proteção das aplicações w...
MASP: Um processo racional para garantir o nível de proteção das aplicações w...MASP: Um processo racional para garantir o nível de proteção das aplicações w...
MASP: Um processo racional para garantir o nível de proteção das aplicações w...
 
HTML5 Seguro ou Inseguro?
HTML5 Seguro ou Inseguro?HTML5 Seguro ou Inseguro?
HTML5 Seguro ou Inseguro?
 
Threats from economical improvement rss 2010
Threats from economical improvement rss 2010Threats from economical improvement rss 2010
Threats from economical improvement rss 2010
 
O processo de segurança em desenvolvimento, que não é ISO 15.408
O processo de segurança em desenvolvimento, que não é ISO 15.408O processo de segurança em desenvolvimento, que não é ISO 15.408
O processo de segurança em desenvolvimento, que não é ISO 15.408
 
Protegendo Aplicações Php com PHPIDS - Php Conference 2009
Protegendo Aplicações Php com PHPIDS - Php Conference 2009Protegendo Aplicações Php com PHPIDS - Php Conference 2009
Protegendo Aplicações Php com PHPIDS - Php Conference 2009
 
Playing Web Fuzzing - H2HC 2009
Playing Web Fuzzing - H2HC 2009Playing Web Fuzzing - H2HC 2009
Playing Web Fuzzing - H2HC 2009
 
OWASP Top 10 e aplicações .Net - Tech-Ed 2007
OWASP Top 10 e aplicações .Net - Tech-Ed 2007OWASP Top 10 e aplicações .Net - Tech-Ed 2007
OWASP Top 10 e aplicações .Net - Tech-Ed 2007
 
Abotoaduras & Bonés
Abotoaduras & BonésAbotoaduras & Bonés
Abotoaduras & Bonés
 
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com phpTratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
 
Extreme Web Hacking - h2hc 2008
Extreme Web Hacking - h2hc 2008Extreme Web Hacking - h2hc 2008
Extreme Web Hacking - h2hc 2008
 

Último

Informativo Agronômico n11 v1.0 - Seringueira (ppt).pdf
Informativo Agronômico n11 v1.0 - Seringueira (ppt).pdfInformativo Agronômico n11 v1.0 - Seringueira (ppt).pdf
Informativo Agronômico n11 v1.0 - Seringueira (ppt).pdf
edsonfrancojunior99
 
RESTAURANT MANORA HOTEL SINDBAD HAMMAMET
RESTAURANT MANORA HOTEL SINDBAD HAMMAMETRESTAURANT MANORA HOTEL SINDBAD HAMMAMET
RESTAURANT MANORA HOTEL SINDBAD HAMMAMET
rihabkorbi24
 
A ADEQUAÇÃO À LGPD DA UNIVERSIDADE UNIVAZADA: UM ESTUDO DE CASO FICTÍCIO DE U...
A ADEQUAÇÃO À LGPD DA UNIVERSIDADE UNIVAZADA: UM ESTUDO DE CASO FICTÍCIO DE U...A ADEQUAÇÃO À LGPD DA UNIVERSIDADE UNIVAZADA: UM ESTUDO DE CASO FICTÍCIO DE U...
A ADEQUAÇÃO À LGPD DA UNIVERSIDADE UNIVAZADA: UM ESTUDO DE CASO FICTÍCIO DE U...
Paulo Emerson Pereira
 
O legado democrático de Portugal no Brasil, enfatizando sua contribuição para...
O legado democrático de Portugal no Brasil, enfatizando sua contribuição para...O legado democrático de Portugal no Brasil, enfatizando sua contribuição para...
O legado democrático de Portugal no Brasil, enfatizando sua contribuição para...
Paulo Dalla Nora Macedo
 
Apostila GOOGLE MEU NEGÓCIO-Passo a passo detalhado para criar um novo perfil
Apostila GOOGLE MEU NEGÓCIO-Passo a passo detalhado para criar um novo perfilApostila GOOGLE MEU NEGÓCIO-Passo a passo detalhado para criar um novo perfil
Apostila GOOGLE MEU NEGÓCIO-Passo a passo detalhado para criar um novo perfil
Carlos Eduardo Coan Junior
 
Estudo de caso apresenta ao Projeto Integrado Multidisciplinar - TCC
Estudo de caso apresenta ao Projeto Integrado Multidisciplinar - TCCEstudo de caso apresenta ao Projeto Integrado Multidisciplinar - TCC
Estudo de caso apresenta ao Projeto Integrado Multidisciplinar - TCC
Paulo Emerson Pereira
 

Último (6)

Informativo Agronômico n11 v1.0 - Seringueira (ppt).pdf
Informativo Agronômico n11 v1.0 - Seringueira (ppt).pdfInformativo Agronômico n11 v1.0 - Seringueira (ppt).pdf
Informativo Agronômico n11 v1.0 - Seringueira (ppt).pdf
 
RESTAURANT MANORA HOTEL SINDBAD HAMMAMET
RESTAURANT MANORA HOTEL SINDBAD HAMMAMETRESTAURANT MANORA HOTEL SINDBAD HAMMAMET
RESTAURANT MANORA HOTEL SINDBAD HAMMAMET
 
A ADEQUAÇÃO À LGPD DA UNIVERSIDADE UNIVAZADA: UM ESTUDO DE CASO FICTÍCIO DE U...
A ADEQUAÇÃO À LGPD DA UNIVERSIDADE UNIVAZADA: UM ESTUDO DE CASO FICTÍCIO DE U...A ADEQUAÇÃO À LGPD DA UNIVERSIDADE UNIVAZADA: UM ESTUDO DE CASO FICTÍCIO DE U...
A ADEQUAÇÃO À LGPD DA UNIVERSIDADE UNIVAZADA: UM ESTUDO DE CASO FICTÍCIO DE U...
 
O legado democrático de Portugal no Brasil, enfatizando sua contribuição para...
O legado democrático de Portugal no Brasil, enfatizando sua contribuição para...O legado democrático de Portugal no Brasil, enfatizando sua contribuição para...
O legado democrático de Portugal no Brasil, enfatizando sua contribuição para...
 
Apostila GOOGLE MEU NEGÓCIO-Passo a passo detalhado para criar um novo perfil
Apostila GOOGLE MEU NEGÓCIO-Passo a passo detalhado para criar um novo perfilApostila GOOGLE MEU NEGÓCIO-Passo a passo detalhado para criar um novo perfil
Apostila GOOGLE MEU NEGÓCIO-Passo a passo detalhado para criar um novo perfil
 
Estudo de caso apresenta ao Projeto Integrado Multidisciplinar - TCC
Estudo de caso apresenta ao Projeto Integrado Multidisciplinar - TCCEstudo de caso apresenta ao Projeto Integrado Multidisciplinar - TCC
Estudo de caso apresenta ao Projeto Integrado Multidisciplinar - TCC
 

Encontrando falhas em aplicações web baseadas em flash

  • 1. Encontrando falhas em aplicações web baseadas em flash Wagner Elias Gerente de Pesquisa e Desenvolvimento Conviso IT Security sexta-feira, 14 de maio de 2010
  • 2. Tópicos • Um pouco sobre flash • Vulnerabilidades • Como fazer direito • Conclusões sexta-feira, 14 de maio de 2010
  • 3. Um pouco sobre Flash sexta-feira, 14 de maio de 2010
  • 4. Quem desenvolve em flash? • A maioria das aplicações desenvolvidas em flash são: • Peças publicitárias desenvolvidas por agências de propaganda • Interferências visuais criadas por designers sexta-feira, 14 de maio de 2010
  • 5. O que eles esquecem? • Flash é Client-Side e pode ser decompilado apresentando o fonte em ActionScript sexta-feira, 14 de maio de 2010
  • 6. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • 7. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • 8. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • 9. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • 10. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • 11. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • 12. Flash in Client-Side Computador Server Flash Player sexta-feira, 14 de maio de 2010
  • 13. filetype:swf • Milhares de telas de login com usuário e senha em Client-Side • filetype:swf inurl:login OR inurl:secure OR inurl:admin • Milhares de arquivos crossdomain.xml sem controles de segurança • filetype:xml inurl:crossdomain sexta-feira, 14 de maio de 2010
  • 15. Information Leakage • Como o swf roda na máquina do usuário, qualquer informação, segredo no código está disponível para qualquer um que decompilar o arquivo swf sexta-feira, 14 de maio de 2010
  • 16. Flash Decompile AS Compila e gera SWF Text SWF decompila gera AS CS3 / MTASC SWFScan / Flare DEMO sexta-feira, 14 de maio de 2010
  • 17. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  • 18. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  • 19. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); XSS } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  • 20. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); XSS } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  • 21. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); XSS } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; XSS if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  • 22. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); XSS } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; XSS if (_root.userinput3 != null ) { _root.loadMovie(_root.userinput3); } } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  • 23. Cross Site Scripting (XSS) • Assim como qualquer aplicação o flash também precisa ter seus inputs tratados class VulnerableMovie { static var app : VulnerableMovie; function VulnerableMovie() { _root.createTextField("tf",0,100,100,640,480); if (_root.userinput1 != null) { getURL(_root.userinput1); XSS } _root.tf.html = true; // default is safely false _root.tf.htmlText = "Hello " + _root.userinput2; XSS if (_root.userinput3 != null ) { } _root.loadMovie(_root.userinput3); XSS } static function main(mc) { DEMO app = new VulnerableMovie(); } } sexta-feira, 14 de maio de 2010
  • 24. Crossdomain • Por padrão o Flash Player (a partir da versão 7) implementa um SandBox • Apenas com um crossdomain.xml é possível comunicar com outras aplicações sexta-feira, 14 de maio de 2010
  • 25. Crossdomain Abuse • O problema é inserir o crossdomain.xml usando o wildcard padrão e sem determinar quais endereços podem se comunicar DEMO sexta-feira, 14 de maio de 2010
  • 26. Crossdomain Abuse • O problema é inserir o crossdomain.xml usando o wildcard padrão e sem determinar quais endereços podem se comunicar DEMO sexta-feira, 14 de maio de 2010
  • 27. Crossdomain Abuse • O problema é inserir o crossdomain.xml usando o wildcard padrão e sem determinar quais endereços podem se comunicar Permite que qualquer um acesse o conteúdo DEMO sexta-feira, 14 de maio de 2010
  • 28. Como fazer direito sexta-feira, 14 de maio de 2010
  • 29. Flash Security Facts • Não insira informações sensiveis em flash • Valide todos os inputs • Defina quais domínios podem acessar o conteúdo no crossdomain.xml • Se for inevitável o flash, criptografar o ActionScript (SWF Encrypt) sexta-feira, 14 de maio de 2010
  • 31. Conclusões • A Adobe adora a Apple • ActionScript é uma linguagem de programação e deve ser tratada como tal • É preciso definir e implementar controles de segurança como em qualquer aplicação web sexta-feira, 14 de maio de 2010
  • 32. Web 2.0? Perguntas? sexta-feira, 14 de maio de 2010