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/