INTRUDERS TIGER TEAM SECURITY - SECURITY ADVISORE
http://www.intruders.com.br/
http://www.intruders.org.br/
ADVISORE/0306 - APACHE TOMCAT < 5.5.18 Sample JSP XSS Vulnerabity
PRIORIDADE: MÉDIA
TIPO: Client Side
I - INTRUDERS:
----------------
O Intruders Tiger Team Security é um projeto vinculado a
Security Open Source (http://www.securityopensource.org.br), com
um grupo de pesquisadores com mais de 10 anos de experiência,
especializados no desenvolvimento de projetos de intrusão
(Pen-Test) e no desenvolvimento de projetos especiais.
Todos os projetos de intrusão (Pen-Test) realizados até o momento pelo
Intruders Tiger Team Security obtiveram 100% de sucesso.
II - INTRODUÇÃO:
----------------
De http://tomcat.apache.org/:
"Apache Tomcat is the servlet container that is used in the official
Reference Implementation for the Java Servlet and JavaServer Pages
technologies. The Java Servlet and JavaServer Pages specifications
are developed by Sun under the Java Community Process.
Apache Tomcat powers numerous large-scale, mission-critical web
applications across a diverse range of industries and organizations".
Tradução livre:
"Apache Tomcat é o conteiner de servlets que é usado na implementação
de referência oficial de tecnologias Java Servlet e JavaServer Pages. As
especificações de Java Servlet e JavaServer Pages são desenvolvidas pela Sun.
Apache Tomcat é usado em numerosos servidores de larga-escala, aplicações
web em missões críticas, sendo usado em uma vasta gama de indústrias
e organizações".
O Servidor Tomcat é ainda usado como base em inúmeros sistemas de
JEE(Java Enterprise Edition) e outros servidores de aplicações.
III - DESCRIÇÃO
----------------
O Intruders Tiger Team Security tem encontrado uma condição de
XSS nos exemplos de JSP do Tomcat há mais de quatro meses atrás. No
entanto, a auditoria em busca de vetores de ataques que tornassem a
exploração da falha um caso real nos conduziu a um processo
com uma história da falha em si.
A falha consiste numa condição de XSS presente no script
implicit-objects.js presente na instalação padrão completa do Tomcat
que pode ser acessada através de um formulário comumente encontrado em:
http://target:8080/jsp-examples/jsp2/el/implicit-objects.jsp
Como não existe uma filtragem de parsing de headers HTTP, então é
possível para um atacante enviar conteúdo forjado em campos como
User-Agent do HTTP header de um usuário vítima que permitirá um
ataque bem sucedido de XSS(Cross Site Scripting).
IV - ANÁLISE
--------------
Por padrão, o TOMCAT instala vários scripts .jsp como exemplos para
desenvolvedores iniciantes(http://target:8080/jsp-examples/).
A grande maioria desses scripts foi muito bem auditado e não contém
falhas de segurança. O próprio script implicit-objects.js foi auditado e
uma antiga falha de XSS foi solucionada para a variável foo. O Código
abaixo confirma isso:
| \${param.foo} |
${fn:escapeXml(param["foo"])} | <-- here!
A variável "foo" passa então por uma checagem através de uma classe
denominada escapeXml() que impede ataques de XSS.
No entanto, outras variáveis nesse mesmo script não foram devidamente
filtradas e possuem condições de XSS em vetores especiais, que alistaremos
mais abaixo.
O código abaixo confirma essas afirmações:
| \${header["host"]} |
${header["host"]} |
| \${header["accept"]} |
${header["accept"]} |
| \${header["user-agent"]} |
${header["user-agent"]} |
Note que essas variáveis são enviadas por um navegador, são HTTP Headers
(Host, Accept e User-Agent).
A princípio, para um atacante, esse tipo de falha não é interssante
em ataques de XSS, pois ele precisa forjar o envio de valores para esses
headers contendo código html/javascript capaz de ludibriar um usuário
vitima por enviar fake http headers.
No entanto,no final de Julho de 2006, Amit Klein[i1] publicou um artigo que
descrevia o uso de Action Script em Flash para explorar falhas de
XSS em sistemas Apache vulneráveis ao envio de fake Expect, uma falha
publicada dias antes por Thiago Zaninotti na Bugtraq[i2].
De modo que resolvemos fazer uma análise da técnica descrita por
Amit Klein e também levantar outros possíveis vetores.
E vimos que há casos onde é possível o uso Action Script em arquivos
.swf para executar uma conexão remota com headers http forjados
e gerar ataques de XSS capazes de ludibriar uma vítima.
Também alistamos a possibilidade de se usar Applets(Java/Activex) como
vetores para o mesmo tipo de ataque.
Abaixo, documentos para maiores informações sobre essas técnicas:
i1 - "Forging HTTP request headers with Flash" - Amit Klein
i2 - "Unfiltered Header Injection in Apache 1.3.34/2.0.57/2.2.1 " -
Thiago Zaninotti
V - DETECÇÃO
-------------
O Intruders Tiger Team Security tem detectado essa condição de
XSS em todas as versões do TOMCAT menores que 5.5.18 que possuem
o script implicit-objects.jsp em sua instalação.
Não analisamos a possível existência desse script em sistemas
JEE(Java Enterprise Edition) que executam o Tomcat como servlet
container.
VI - WORKAROUND
----------------
- Insira a função/classe escapeXml() para filtrar as variáveis de
HTTP Header que interagem com o script:
${{fn:escapeXml(header["host"])} |
${{fn:escapeXml(header["accept"])} |
${{fn:escapeXml(header["user-agent"])} |
- Remova os scripts de exemplos. Não é aconselhável usar esses scripts
em um ambiente de risco como a Internet.
VI - SOLUÇÂO
-------------
Atualize a versão do TOMCAT para 5.5.18 ou superior.
http://tomcat.apache.org/
VI - CRONOLOGIA
----------------
XX/04/2006 - Falha descoberta durante uma análise para um pen-test.
26/07/2006 - Publicado documento de Amit Klein.
27/07/2006 - Análise de Vetores de Ataque.
27/07/2006 - Equipe de Segurança da Apache contactada(Sem Resposta).
28/07/2006 - Equipe de Segurança da Apache recontactada.
30/07/2006 - Resposta da Equipe de Segurança do Tomcat.
02/08/2006 - Patch Liberado no SVN(SubVersion) do Apache Tomcat.
XX/0X/2006 - Apache Tomcat Versão 5.5.18 liberado com correção.
XX/XX/2006 - Advisore publicado.
VII - CREDITOS
--------------
Glaudson Ocampos(Nash Leon) e Intruders Tiger Team
Security tem descoberto esta vulnerabilidade.
Agradecimentos a Wendel Guglielmetti Henrique (dum_dum), João
Arquimedes e Waldemar Nehgme da security.org.br.
Visite o Web Site da Intruders Tiger Team Security
para ver outros advisores:
http://www.intruders.com.br/
http://www.intruders.org.br/