Josh Pauli
Revisão técnica Scott White
Novatec
Copyright © 2013 Elsevier Inc. All rights reserved. No part of this publication may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or any information storage and retrieval system, without permission in writing from the publisher. Details on how to seek permission, further information about the Publisher’s permissions policies and our arrangement with organizations such as the Copyright Clearance Center and the Copyright Licensing Agency, can be found at our website: www.elsevier.com/ permissions. This book and the individual contributions contained in it are protected under copyright by the Publisher (other than as may be noted herein). This edition of The Basics of Web Hacking: Tools and Techniques to attack the Web by Josh Pauli is published by arrangement with ELSEVIER INC., a Delaware corporation having its principal place of business at 360 Park Avenue South, New York, NY 10010, USA. Nenhuma parte desta publicação pode ser reproduzida ou transmitida de qualquer forma ou por qualquer meio, eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer armazenamento de informação e sistema de recuperação, sem permissão por escrito da editora. Detalhes sobre como pedir permissão, mais informações sobre as permissões de políticas da editora e o acordo com organizações como o Copyright Clearance Center e da Copyright Licensing Agency, podem ser encontradas no site: www.elsevier.com/permissions. Este livro e as contribuições individuais contidas nele são protegidos pelo Copyright da Editora (além de outros que poderão ser aqui encontrados). Esta edição do livro The Basics of Web Hacking: Tools and Techniques to attack the Web de Josh Pauli é publicada por acordo com a Elsevier Inc., uma corporação de Delaware estabelecida no endereço 360 Park Avenue South, New York, NY 10010, EUA. Copyright © 2014 Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Tradução: Lúcia Ayako Kinoshita Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata ISBN: 978-85-7522-391-8 Histórico de impressões: Janeiro/2014
Primeira edição
Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 – São Paulo, SP – Brasil Tel.: +55 11 2959-6529 Fax: +55 11 2950-8869 E-mail: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec OG20140107
capítulo 1
Introdução ao web hacking
Resumo do capítulo: • O que você deve saber sobre servidores web e o protocolo HTTP • Introdução ao web hacking: nossa abordagem • Vulnerabilidades comuns na web: ainda somos suas vítimas • Criação de um ambiente de testes seguro para que você não vá para a cadeia
Introdução Há um longo caminho a ser percorrido antes de começar a dar uma olhada em ferramentas específicas e ver como configurá-las e executá-las do modo mais adequado a fim de explorar as aplicações web. Este capítulo descreve todas as áreas necessárias com as quais você deve se sentir confortável antes de começarmos a falar dessas ferramentas e das técnicas de web hacking. Para ter uma base sólida necessária para os próximos anos de hacking bem-sucedido, há fundamentos essenciais que devem ser totalmente entendidos e absorvidos. Esses incluem materiais relacionados às vulnerabilidades mais comuns que continuam assolando a web, embora algumas pareçam estar presentes desde sempre. Algumas das vulnerabilidades mais prejudiciais de aplicações web “à solta” continuam disseminadas e igualmente prejudiciais, apesar de terem sido identificadas há dez anos. Também é importante compreender a hora e o lugar apropriados e o uso ético das ferramentas e das técnicas a serem aprendidas nos capítulos que se seguem. Como um de meus amigos e colegas gosta de dizer sobre 24
Capítulo 1 ■ Introdução ao web hacking
25
o uso de ferramentas de hacking, “é tudo um jogo e uma diversão até o FBI aparecer”! Este capítulo inclui orientações passo a passo sobre a preparação de um ambiente isolado (sandbox) próprio com a finalidade de proporcionar um local seguro para seus experimentos com web hacking. À medida que a segurança se deslocou para a linha de frente no gerenciamento de tecnologia, a segurança geral de nossos servidores, das redes e dos serviços melhorou incrivelmente. Isso se deve em grande parte a produtos melhores como os firewalls e os sistemas de detecção de invasão que garantem a segurança da camada de rede. No entanto esses dispositivos fazem muito pouco para proteger a aplicação web e os dados utilizados por ela. Como resultado, os hackers passaram a atacar as aplicações web que interagem diretamente com todos os sistemas internos, como os servidores de bancos de dados, que atualmente são protegidos por firewalls e outros dispositivos de rede. Nos últimos anos, houve mais ênfase no desenvolvimento de softwares seguros e, como consequência, as aplicações web atuais são muitos mais seguras do que as versões anteriores. Houve uma forte pressão no sentido de incluir a segurança nos estágios iniciais do ciclo de vida do desenvolvimento de software e de formalizar a especificação dos requisitos de segurança de forma padronizada. Também houve um aumento enorme na organização de diversas comunidades dedicadas à segurança de aplicações, como o Open Web Application Security Project (Projeto aberto para a segurança de aplicações web). Ainda há aplicações web claramente vulneráveis por aí, principalmente porque os programadores se preocupam mais com funcionalidades do que com a segurança, porém os dias em que todas as aplicações web pareciam ser facilmente exploradas acabaram. Desse modo, como a segurança das aplicações web, assim como das redes, melhorou, a superfície de ataque também sofreu novo deslocamento, dessa vez em direção aos usuários web. Os administradores de rede e os programadores web podem fazer muito pouco para proteger os usuários web contra esses ataques de usuário para usuário, que atualmente são tão predominantes. Imagine a alegria de um hacker agora que ele pode se voltar para um usuário inocente, atraído pela tecnologia, sem ter de se preocupar com sistemas de detecção de invasões ou logging de aplicações
26
Introdução ao Web Hacking
web e firewalls. Os invasores agora estão focando diretamente nos usuários web, passando eficientemente por todo e qualquer dispositivo de segurança desenvolvido nos últimos dez anos para redes e aplicações web. Entretanto continua havendo uma abundância de ataques viáveis direcionados a servidores web e aplicações web, além dos ataques que visam aos usuários web. Este livro descreve como todos esses ataques exploram o servidor web, a aplicação web e o usuário web que se tornarem um alvo. Você compreenderá totalmente como esses ataques são conduzidos e saberá que ferramentas são necessárias para realizar a tarefa. Ao trabalho!
O que é uma aplicação web? O termo “aplicação web” possui significados diferentes para pessoas diferentes. De acordo com quem conversarmos e do contexto, pessoas diferentes farão uso de termos como aplicação web, web site, sistema baseado em web, software baseado em web ou simplesmente web, e tudo isso poderá ter o mesmo significado. A adoção generalizada de aplicações web dificulta diferenciá-las claramente da geração anterior de web sites que não faziam nada além de servir páginas HTML estáticas e não interativas. O termo aplicação web será utilizado ao longo deste livro para referir-se a qualquer software baseado em web que realize ações (funcionalidades) de acordo com uma entrada de usuário e que normalmente interaja com sistemas de backend. Quando um usuário interage com um web site para realizar alguma ação, por exemplo, fazer login, fazer compras ou acessar o banco, temos uma aplicação web. Contar com aplicações web virtualmente para tudo o que fazemos resulta em uma superfície de ataque (pontos potenciais de entrada) imensa para os hackers web. Some-se a isso o fato de que as aplicações web são códigos personalizados criados por um programador humano, aumentando assim a probabilidade de erros, apesar de haver as melhores intenções possíveis. As pessoas ficam entediadas, com fome, cansadas, de ressaca ou distraídas de outras maneiras, e isso pode resultar na introdução de bugs na aplicação web em desenvolvimento. Explorar essas aplicações web com
Capítulo 1 ■ Introdução ao web hacking
27
as quais contamos tão intensamente representa uma oportunidade perfeita de ataque para os hackers. Pode-se supor que uma vulnerabilidade em uma aplicação web seja simplesmente um erro humano que pode ser rapidamente corrigido por um programador. Nada poderia estar tão longe da verdade: a maior parte das vulnerabilidades não é facilmente corrigida porque muitas das falhas em aplicações web são inseridas nos estágios iniciais do ciclo de vida de desenvolvimento de software. Em um esforço para poupar você dos terríveis detalhes acerca das metodologias de engenharia de software, basta estar ciente de que é muito mais fácil lidar com a segurança (e muito mais eficaz em relação ao custo) se ela for considerada inicialmente, nas fases de planejamento e de requisitos do desenvolvimento de software. A segurança deve permanecer como uma força direcionadora do projeto durante todas as fases de design, construção, implementação e testes. Infelizmente, porém, a segurança, com muita frequência, é tratada como algo do qual nos lembramos depois; esse tipo de desenvolvimento deixa as aplicações web recém-criadas com vulnerabilidades prontas a serem identificadas e exploradas conforme as razões nefastas de um hacker.
O que você deve saber sobre servidores web Um servidor web nada mais é do que uma porção de software executada no sistema operacional de um servidor e que permite conexões para acessar uma aplicação web. Os servidores web mais comuns são o Internet Information Services (IIS) em um servidor Windows e o servidor HTTP (Hypertext Transfer Protocol, ou Protocolo de Transferência de Hipertexto) Apache em um servidor Linux. Esses servidores possuem estruturas normais de diretório como qualquer outro computador e são esses diretórios que hospedam a aplicação web. Se a abordagem next, next, next, finish do Windows for utilizada para instalar um servidor web IIS, você terá a estrutura de diretório padrão C:\Inetpub\wwwroot como resultado; cada aplicação terá seus próprios diretórios em wwwroot e todos os recursos vitais para as aplicações web estarão contidos nesse local.
28
Introdução ao Web Hacking
O Linux é mais variado quanto à estrutura de arquivos, porém a maioria das aplicações web está hospedada no diretório /var/www/. Há vários outros diretórios em um servidor web Linux que são especialmente relevantes para o web hacking: • /etc/shadow: é nesse local que estão armazenadas as hashes de senha para todos os usuários do sistema. É a “chave do reino”! • /usr/lib: esse diretório inclui arquivos objetos e binários internos que não devem ser executados por usuários ou por shell scripts. Todos os dados de dependência usados por uma aplicação também são armazenados nesse diretório. Apesar de não haver nada executável nesse local, podemos realmente arruinar o dia de alguém se todos os arquivos de dependência de uma aplicação forem apagados. • /var/*: esse diretório inclui os arquivos para bancos de dados, logs de sistema e o código-fonte da própria aplicação web! • /bin: esse diretório contém programas de que o sistema necessita para operar, como shells, ls, grep e outros binários essenciais e importantes. bin é a abreviação de binário. A maioria dos comandos padrões do sistema operacional está localizada aqui na forma de arquivos separados correspondentes a binários executáveis. O próprio servidor web é um alvo para ataques porque oferece portas abertas e acesso a versões de software potencialmente vulneráveis do servidor web instalado, versões vulneráveis de outros softwares instalados e configurações incorretas do sistema operacional em que estiver executando.
O que você deve saber sobre o HTTP O HTTP corresponde ao processo acordado para interagir e se comunicar com uma aplicação web. É um protocolo totalmente baseado em texto, portanto não há nenhuma suposição em relação à segurança ou à privacidade quando o HTTP é utilizado. O HTTP é um protocolo stateless (sem estados), de modo que toda solicitação de cliente e a resposta da
Capítulo 1 ■ Introdução ao web hacking
29
aplicação web corresponde a um evento totalmente novo e independente, que não tem conhecimento de solicitações anteriores. No entanto é muito importante que a aplicação web mantenha um controle das solicitações do cliente para que transações constituídas por vários passos possam ser completadas; por exemplo, numa compra online em que itens são adicionados ao carrinho de compras, o método de entrega é selecionado e as informações sobre pagamento são inseridas. Se os cookies não fossem utilizados, o HTTP teria de solicitar um novo login a cada um desses passos. Isso simplesmente não seria prático, de modo que o conceito de sessão foi criado, em que a aplicação mantém um controle de suas solicitações após o login. Embora as sessões sejam uma ótima maneira de melhorar o caráter amigável de uma aplicação web, elas também proporcionam outro vetor de ataque para as aplicações web. O HTTP originalmente não foi concebido para lidar com os tipos de transação web que exijam um alto nível de segurança e de privacidade. Podemos inspecionar todos os detalhes intrincados do funcionamento do HTTP com ferramentas como o Wireshark ou com qualquer outro proxy HTTP local. O uso de HTTPS (HTTP seguro) faz muito pouco para impedir os tipos de ataque que serão discutidos neste livro. Alcança-se o HTTPS quando o HTTP é processado em cima do protocolo SSL/TLS (Secure Socket Layer/ Transport Layer Security), o que adiciona o TLS do SSL/TLS às solicitações e respostas normais do HTTP. O HTTPS é mais adequado para garantir que ataques do tipo man-in-the-middle e outros de escuta não sejam bem-sucedidos; ele garante uma “ligação privada” entre seu navegador e a aplicação web, em oposição a ter uma conversa em uma sala cheia de pessoas, em que qualquer uma poderia ouvir seus segredos. Em nosso caso, porém, o HTTPS somente significa que iremos nos comunicar com a aplicação web por meio de um canal de comunicação criptografado que torna a conversação privada. A criptografia bidirecional do HTTPS não impedirá que nossos ataques sejam processados pela aplicação web à espera.
30
Introdução ao Web Hacking
Ciclos HTTP Uma das operações fundamentais mais importantes de toda aplicação web corresponde ao ciclo de solicitações feitas pelos navegadores dos clientes e as respostas retornadas pelo servidor web. É uma premissa bem simples, que ocorre várias vezes ao dia. Um navegador envia uma solicitação contendo parâmetros (variáveis) que armazenam entradas de usuário e o servidor web envia uma resposta determinada pela solicitação submetida. A aplicação web pode atuar de acordo com os valores dos parâmetros, portanto eles são alvos principais de ataque dos hackers, que usam valores maliciosos de parâmetros a fim de explorar a aplicação web e o servidor web.
Cabeçalhos HTTP a serem observados Todo ciclo HTTP também inclui cabeçalhos, tanto na solicitação do cliente quanto na resposta do servidor, os quais transmitem detalhes sobre a solicitação ou a resposta. Há vários desses cabeçalhos, porém nos preocuparemos somente com alguns que se aplicam mais à abordagem adotada neste livro. Os cabeçalhos com os quais nos preocuparemos, que são configurados pelo servidor web e enviados ao navegador do cliente como parte do ciclo de resposta, são: • Set-Cookie: esse cabeçalho normalmente disponibiliza o identificador de sessão (cookie) ao cliente para garantir que a sessão do usuário permaneça atual. Se um hacker conseguir roubar uma sessão de cliente (ao tirar vantagem de ataques que serão descritos em capítulos posteriores), ele poderá assumir a identidade do usuário sendo explorado na aplicação. • Content-Length: O valor desse cabeçalho corresponde ao tamanho do corpo da resposta em bytes. Esse cabeçalho é útil aos hackers porque é possível procurar por variações na quantidade de bytes da resposta para ajudar a decifrar a resposta da aplicação a uma entrada. Em especial, é aplicável quando se conduz um ataque de força bruta (suposições repetitivas).
Capítulo 1 ■ Introdução ao web hacking
31
• Location: esse cabeçalho é utilizado quando uma aplicação redireciona um usuário para uma nova página. É útil a um hacker porque pode ser usado para ajudar a identificar páginas que são permitidas somente após uma autenticação bem-sucedida na aplicação, por exemplo. Os cabeçalhos sobre os quais você deve saber mais a respeito, enviados pelo navegador do cliente como parte da solicitação web, são: • Cookie: esse cabeçalho envia o cookie (ou vários cookies) de volta ao servidor para preservar a sessão do usuário. O valor desse cabeçalho de cookie sempre deve corresponder ao valor do cabeçalho set-cookie enviado pelo servidor. Esse cabeçalho é útil aos hackers porque pode proporcionar uma sessão válida junto à aplicação, a qual pode ser usada em ataques contra outros usuários da aplicação. Outros cookies não são tão atraentes, por exemplo, um cookie que configura o idioma desejado para o inglês. • Referrer: Esse cabeçalho contém a página web na qual o usuário estava anteriormente quando a próxima solicitação web for feita. Pense nele como o cabeçalho que armazena “a última página visitada”. É útil aos hackers, pois esse valor pode ser facilmente alterado. Desse modo, se a aplicação estiver contando com esse cabeçalho para qualquer aspecto relativo à segurança, um valor falso pode ser facilmente usado em seu lugar.
Códigos de status HTTP a serem observados As respostas do servidor web recebidas pelo seu navegador incluem um código de status para indicar o tipo de resposta. Há mais de 50 códigos de resposta HTTP numéricos, agrupados em cinco famílias, que disponibilizam tipos semelhantes de códigos de status. Saber o que cada família de respostas representa permite compreender como sua entrada foi processada pela aplicação. • 100s: essas respostas do servidor web são puramente informativas e normalmente significam que ele enviará respostas adicionais
32
Introdução ao Web Hacking
posteriormente. São raramente vistas em respostas de servidores web modernos e geralmente são seguidas de perto por outro tipo de resposta apresentado a seguir. • 200s: essas respostas indicam que a solicitação do cliente foi aceita e processada com sucesso pelo servidor web e que a resposta foi enviada de volta ao seu navegador. O código de status HTTP mais comum é o 200 OK. • 300s: essas respostas são utilizadas para indicar redirecionamento, quando respostas adicionais são enviadas ao cliente. A implementação mais comum para esse caso ocorre quando o navegador de um usuário é redirecionado para uma página segura depois que uma autenticação bem-sucedida foi realizada junto à aplicação web. Nesse caso, será um 302 Redirect (Redirecionar) para enviar outra resposta a ser entregue com um 200 OK. • 400s: essas respostas são usadas para indicar um erro na solicitação do cliente. Isso significa que o usuário enviou uma solicitação que não pode ser processada pela aplicação web e, desse modo, um destes códigos de status comuns será retornado: 401 Unauthorized (Não autorizado), 403 Forbidden (Proibido) e 404 Not Found (Não encontrado). • 500s: essas respostas são utilizadas para indicar um erro do lado do servidor. Os códigos de status mais comuns dessa família são: 500 Internal Server Error (Erro interno do servidor) e 503 Service Unavailable (Serviço indisponível). Detalhes completos sobre todos os códigos de status HTTP podem ser vistos de forma mais minuciosa em http://www.w3.org/Protocols/rfc2616/ rfc2616-sec10.html.
Introdução ao web hacking: nossa abordagem Nossa abordagem é constituída de quatro fases que incluem todas as tarefas necessárias durante um ataque:
Capítulo 1 ■ Introdução ao web hacking
33
1. Reconhecimento 2. Scanning 3. Exploração de falhas (exploitation) 4. Correção É apropriado apresentar e discutir o modo como essas vulnerabilidades e esses ataques podem ser atenuados, portanto há uma fase de correção em nossa abordagem. Como um profissional que executa testes de invasão ou um hacker ético, você terá muitas perguntas, posteriormente, sobre como as vulnerabilidades descobertas poderão ser corrigidas. Considere a inclusão da fase de correção como um recurso que ajudará a responder a essas perguntas.
Nossos alvos Nossa abordagem tem como alvo três vetores de ataque separados, porém relacionados: o servidor web, a aplicação web e o usuário web. Para o propósito visado neste livro, definiremos cada um desses vetores de ataque da seguinte maneira:
1. Servidor web: a aplicação em execução em um sistema operacional que hospeda a aplicação web. NÃO estamos falando de hardware tradicional de computador nesse caso, mas de serviços que estão sendo executados em portas acessíveis que permitem que uma aplicação web seja acessada pelos navegadores de internet dos usuários. O servidor web pode estar vulnerável a tentativas de hacking de rede visando a esses serviços para obtenção de acesso não autorizado à estrutura e ao sistema de arquivos do servidor web. 2. Aplicação web: o código-fonte em execução no servidor web, que provê as funcionalidades com as quais os usuários web interagem, é o alvo mais popular dos hackers web. A aplicação web pode estar suscetível a um vasto conjunto de ataques que procuram executar ações não autorizadas na aplicação web.
34
Introdução ao Web Hacking
3. Usuário web: os usuários internos que administram a aplicação web (administradores e programadores) e os usuários externos (clientes humanos ou consumidores) das aplicações web são alvos importantes de ataques. É aqui que as vulnerabilidades XSS (Cross-site Scripting) e CSRF (Cross-site Request Forgery) na aplicação web mostram suas faces horríveis. Ataques de engenharia social técnica, que têm usuários web como alvo e não dependem de vulnerabilidades existentes em aplicações web, também se aplicam a esse caso. As vulnerabilidades, os exploits e os payloads são únicos para cada um desses alvos, portanto ferramentas e técnicas exclusivas são necessárias para atacar cada um deles de modo eficaz.
Nossas ferramentas Para cada ferramenta usada neste livro, provavelmente deve haver outras cinco que podem realizar a mesma tarefa. (O mesmo vale também para os métodos.) Daremos relevância às ferramentas que são mais aplicáveis aos hackers web iniciantes. Recomendamos essas ferramentas não por serem mais fáceis de usar pelos iniciantes, mas por serem ferramentas básicas que virtualmente todo profissional que realize testes de invasão utiliza normalmente. É muito importante aprender a usá-las desde o primeiro dia. Algumas das ferramentas que usaremos incluem: • O Burp Suite, que inclui um conjunto de ferramentas de primeira para web hacking, é obrigatório para qualquer hacker web e é amplamente reconhecido como o conjunto de ferramentas mais importante para web hacking. • O Zed Attack Proxy (ZAP) é similar ao Burp Suite, mas inclui também um scanner gratuito de vulnerabilidades que pode ser usado em aplicações web. • Ferramentas de hacking de rede como o Nmap para scanning de portas, o Nessus e o Nikto para scanning de vulnerabilidades e o Metasploit para exploração de falhas (exploitation) do servidor web.
Capítulo 1 ■ Introdução ao web hacking
35
• Outras ferramentas que exercerão um papel específico como o sqlmap para injeção de SQL, o John the Ripper (JtR) para quebra de senhas offline e o Social Engineering Toolkit (SET) para ataques de engenharia social técnica contra usuários web!
As aplicações web interagem com tudo Outro aspecto estimulante para os hackers web está no fato de as aplicações web interagirem virtualmente com todos os sistemas centrais da infraestrutura de uma empresa. É comum achar que a aplicação web é somente um código executando em um servidor web, instalada seguramente em uma DMZ (DeMilitarized Zone, ou Zona desmilitarizada)1 externa, incapaz de causar danos internos sérios a uma empresa. Há várias áreas adicionais em uma infraestrutura tradicional de TI que devem ser consideradas para atacar completamente um sistema, pois o alcance de uma aplicação web é muito maior do que o do código criado por um programador. Os componentes a seguir também devem ser considerados como possíveis vetores de ataque: • Servidor de banco de dados e o banco de dados: o sistema que hospeda o banco de dados utilizado pela aplicação web pode estar vulnerável a ataques que permitam criar, ler, atualizar ou apagar (operações CRUD, ou seja, Create, Read, Update, Delete) dados confidenciais. • Servidor de arquivos: o sistema, geralmente um drive mapeado em um servidor web, que permite funcionalidades de upload e/ou de download, pode estar vulnerável a ataques que permitam que os recursos do servidor sejam acessados por um invasor não autorizado. • Componentes de terceiros ou “de prateleira”: módulos de código, como os CMSs (Content Management Systems, ou Sistemas de Gerenciamento de Conteúdo), definitivamente representam um alvo em virtude da adoção disseminada e da documentação disponível para esses sistemas. 1
N.T.: DMZ é uma rede situada entre uma rede confiável e uma não confiável, geralmente entre rede local e a Internet (Fonte: http://pt.wikipedia.org/wiki/DMZ_(computação)).
36
Introdução ao Web Hacking
Metodologias existentes Várias metodologias de ataque oferecem os processos, os passos, as ferramentas e as técnicas consideradas como as melhores práticas. Se você for um hacker white hat2, essas atividades são chamadas de testes de invasão (pen test para ser conciso – do inglês penetration testing – ou PT para ser mais conciso ainda), mas todos sabemos que essas atividades são as mesmas realizadas pelo hacking black hat3. As duas metodologias mais amplamente aceitas de pen test atualmente são o Open-Source Security Testing Methodology Manual (OSSTM) e o Penetration Testing Execution Standard (PTES).
Open-Source Security Testing Methodology Manual (OSSTM) O OSSTM foi criado em um processo de peer review (revisão por pares) em que foram criados casos para testar cinco seções: 1. Controles de informações e de dados. 2. Níveis de conscientização pessoal acerca de segurança. 3. Níveis de fraude e de engenharia social. 4. Redes de computadores e de telecomunicações, dispositivos sem fio e dispositivos móveis. 5. Controles físicos para acessos seguros, processos de segurança e localizações físicas. O OSSTM dimensiona os detalhes técnicos de cada uma dessas áreas e oferece diretrizes sobre o que fazer antes, durante e depois de uma avaliação de segurança. Mais informações sobre o OSSTM podem ser encontradas na página do projeto em http://www.isecom.org/research/osstmm.html.
2 3
N.T.: O hacker white hat (literalmente, chapéu branco) é “um hacker que estuda sistemas de computação à procura de falhas na sua segurança, mas respeitando princípios da ética hacker” (Fonte: http:// pt.wikipedia.org/wiki/Hacker). N.T.: O hacker black hat (literalmente, chapéu preto) é “um hacker que não respeita a ética hacker e usa seu conhecimento para fins criminosos ou maliciosos; ou seja, um cracker” (Fonte: http://pt.wikipedia. org/wiki/Hacker).
Capítulo 1 ■ Introdução ao web hacking
37
Penetration Testing Execution Standard (PTES) O novo astro no cenário definitivamente é o PTES, um novo padrão que tem como objetivo proporcionar uma linguagem comum a ser usada por todos os profissionais que realizem testes de invasão e avaliações de segurança. O PTES fornece uma base de referência sobre o próprio posicionamento dos clientes em relação à segurança para que eles estejam em uma posição melhor para compreender as descobertas feitas pelos testes de invasão. O PTES foi concebido como um mínimo a ser completado como parte de um teste abrangente de invasão. O padrão contém vários níveis diferentes de serviços que devem fazer parte dos testes de invasão mais sofisticados. Informações adicionais podem ser encontradas na página do PTES em http://www.pentest-standard.org/.
Compreendendo as metodologias existentes Em virtude dos processos detalhados, esses padrões são bem desanimadores para um hacker iniciante digerir. Ambos os padrões cobrem basicamente todos os aspectos possíveis relacionados a testes de segurança e fazem um ótimo trabalho. Inúmeras pessoas inteligentes e talentosas dedicaram uma quantidade incontável de horas para criar padrões a serem seguidos pelos que fazem testes de invasão e pelos hackers. Seus esforços certamente são louváveis, porém, para os hackers iniciantes, representa uma sobrecarga de informações. Como iremos considerar o hacking de uma rede sem fio se, para começar, não entendemos sequer o hacking básico de rede? Como invadir um dispositivo móvel que acessa uma versão móvel de uma aplicação web se você não se sentir confortável com o modo pelo qual as aplicações web dinâmicas extraem e usam dados de um banco de dados? É necessário sintetizar todas as principais informações de padrões como o OSSTM e o PTES em uma metodologia mais administrável para que os hackers iniciantes não se sintam sobrecarregados. Este é exatamente o objetivo deste livro, ou seja, oferecer as orientações necessárias para introduzir a teoria, as ferramentas e as técnicas associadas ao web hacking!
38
Introdução ao Web Hacking
Vulnerabilidades mais comuns na web Todos os nossos alvos serão explorados por meio de ataques a vulnerabilidades bem compreendidas. Embora haja várias outras vulnerabilidades relacionadas à web, as que estão a seguir são aquelas nas quais nos concentraremos à medida que avançarmos pelos capítulos do livro.
Injeção Falhas de injeção (injection) ocorrem quando dados não confiáveis de usuários são enviados à aplicação web como parte de um comando ou de uma consulta. Os dados hostis do invasor podem enganar a aplicação web, fazendo-a executar comandos não esperados ou acessando dados não autorizados. A injeção ocorre quando um hacker insere dados de entrada maliciosos sobre os quais a aplicação web atua (processa) de forma não segura. É um dos tipos de ataque mais antigos contra aplicações web, porém continua sendo o rei das vulnerabilidades, pois permanece amplamente disseminado e é bastante prejudicial. As vulnerabilidades associadas à injeção podem surgir em todo tipo de lugar na aplicação web em que se permita que o usuário forneça dados de entrada maliciosos. Alguns dos ataques mais comuns de injeção têm como alvo as funcionalidades a seguir: • consultas SQL (Structured Query Language, ou Linguagem de Consulta Estruturada); • consultas LDAP (Lightweight Directory Access Protocol, ou Protocolo Leve de Acesso a Diretórios); • consultas XPATH (XML path language); • comandos do sistema operacional (SO). Sempre que a entrada do usuário for aceita pela aplicação web e processada sem a sanitização adequada, a injeção pode ocorrer. Isso significa que o hacker pode influenciar o modo como as consultas e os comandos da aplicação web são compostos e os dados a serem incluídos nos resultados. É um exploit bastante eficaz!
Capítulo 1 ■ Introdução ao web hacking
39
Cross-site Scripting (XSS) O XSS (Cross-site Scripting) ocorre quando uma entrada de usuário é aceita pela aplicação como parte de uma solicitação e, em seguida, é usada na apresentação da resposta, sem que haja uma codificação adequada da saída para validação e sanitização. O XSS permite que os invasores executem scripts no navegador da vítima, o que pode provocar o sequestro de sessões de usuários, ativar um key logger4, redirecionar o usuário para sites maliciosos ou executar qualquer outra ação com a qual um hacker possa sonhar! Um hacker pode injetar um script malicioso (com frequência, um JavaScript, mas também pode ser um VBScript) que é então executado no navegador da vítima. Como esse script faz parte da resposta da aplicação, o navegador da vítima confia nele a permite sua execução. O XSS possui duas “versões” principais: refletido (reflected) e armazenado (stored). O XSS refletido está muito mais disseminado entre as aplicações web e é considerado menos prejudicial. O motivo para o XSS refletido ser considerado menos nocivo não se deve ao que ele pode fazer, mas ao fato de ser um ataque realizado uma só vez, em que o payload enviado é válido somente para essa solicitação. Pense no XSS refletido como em algo do tipo “quem clicar leva”. Qualquer usuário que clicar no link contendo o script malicioso será a única pessoa diretamente afetada por esse ataque. Normalmente, é um ataque que apresenta uma taxa de 1:1 entre hacker e vítima. O hacker pode enviar a mesma URL maliciosa a milhões de vítimas em potencial, porém somente aquelas que clicarem em seu link serão afetadas, e não há nenhuma conexão entre os usuários comprometidos. O XSS armazenado é mais difícil de encontrar em aplicações web, porém é muito mais prejudicial porque persiste ao longo de várias solicitações e vários usuários podem ser explorados em um só ataque. Ele ocorre quando um hacker consegue injetar o script malicioso na aplicação e o torna disponível a todos os usuários que a acessarem. Ele pode ser inserido em um banco de dados usado para preencher uma página web ou em um fórum de usuários que apresente mensagens ou em qualquer outro sistema que 4
N.T.: Um key logger “é um programa de computador do tipo spyware cuja finalidade é registrar tudo o que é digitado, quase sempre a fim de capturar senhas, números de cartão de crédito e afins” (Fonte: http://pt.wikipedia.org/wiki/Keylogger).
40
Introdução ao Web Hacking
armazene dados de entrada. À medida que usuários legítimos solicitarem a página, o exploit XSS será executado em cada um de seus navegadores. É um ataque que apresenta uma taxa de 1:vários entre hacker e vítimas. Ambas as versões do XSS contêm os mesmos payloads; eles somente são entregues de maneira diferente.
Autenticação com falha e gerenciamento de sessão As sessões correspondem a identificadores únicos atribuídos aos usuários após a autenticação, e há muitas vulnerabilidades ou ataques associados ao modo como esses identificadores são utilizados pela aplicação web. As sessões também representam um componente fundamental do hacking de usuários web. As funções de aplicação relacionadas à autenticação e ao gerenciamento de sessão, com frequência, não são implementadas corretamente, permitindo que invasores comprometam senhas, chaves, tokens de sessão ou que explorem outras falhas de implementação a fim de assumir as identidades de outros usuários. As funcionalidades da aplicação web que estão sob o escopo da autenticação incluem também reset de senhas, alteração de senhas e recuperação de conta, somente para citar alguns exemplos. Uma aplicação web utiliza o gerenciamento de sessão para manter o controle das solicitações do usuário. Sem o gerenciamento de sessão, seria necessário efetuar login após toda solicitação efetuada. Imagine ter de fazer login após ter procurado um produto, fazer novamente quando quiser adicioná-lo ao carrinho de compras, novamente ao fazer checkout e mais uma vez quando quiser fornecer as informações para o pagamento. Desse modo, o gerenciamento de sessão foi criado para permitir que os usuários possam fazer login somente uma vez a cada visita e a aplicação web possa se lembrar de qual usuário adicionou que produtos ao carrinho de compras. A má notícia é que a autenticação e o gerenciamento de sessão foram pensados depois em relação à internet original. Não havia necessidade de autenticação ou de gerenciamento de sessão quando não havia compras ou pagamento de contas. Portanto a internet como atualmente a conhecemos teve de sofrer ajustes e contorções para poder usar a autenticação e o gerenciamento de sessão.
Capítulo 1 ■ Introdução ao web hacking
41
Cross-site Request Forgery O CSRF ocorre quando um hacker é capaz de enviar uma solicitação adequadamente composta, embora seja maliciosa, a um usuário autenticado, a qual inclui os parâmetros (variáveis) necessários para completar uma solicitação válida para a aplicação, sem que a vítima (o usuário) sequer perceba. É semelhante ao XSS refletido no sentido em que o hacker deve forçar a vítima a executar alguma ação na aplicação web. Um script malicioso pode continuar a executar no navegador da vítima, porém o CSRF também pode fazer uma solicitação válida à aplicação web. Alguns resultados do CSRF são alteração de senha, criação de um novo usuário ou criação de conteúdo da aplicação web por meio de um CMS. Desde que o hacker saiba exatamente quais parâmetros são necessários para completar a solicitação e a vítima esteja autenticada junto à aplicação, a solicitação será executada como se o usuário a tivesse criado conscientemente.
Erros de configuração de segurança Essa classe de vulnerabilidade lida especificamente com a segurança (ou a falta dela) de toda a pilha da aplicação. Para aqueles que não estão familiarizados com o termo “pilha da aplicação”, ele se refere ao sistema operacional, ao servidor web e aos sistemas de gerenciamento de banco de dados executados e acessados pelo código da aplicação web. O risco torna-se mais alto ainda quando práticas de segurança mais estritas não são seguidas para proteger melhor o servidor web de acessos não autorizados. Exemplos de vulnerabilidades que podem assolar o servidor web incluem: • softwares desatualizados ou desnecessários; • serviços desnecessários habilitados; • políticas não seguras para contas; • mensagens de erro extensas. Uma segurança eficiente exige uma configuração segura definida e implantada na aplicação, nos frameworks, no servidor da aplicação, no servidor web, no servidor de banco de dados e no sistema operacional.
42
Introdução ao Web Hacking
Todas essas configurações devem ser definidas, implementadas e mantidas, pois muitas delas não estão presentes nos defaults relativos à segurança. Isso inclui manter todo software atualizado, inclusive todas as bibliotecas de códigos utilizadas pela aplicação.
Criando um ambiente de testes Antes de mergulhar de cabeça nas ferramentas e técnicas abordadas neste livro, é importante criar um ambiente seguro a ser utilizado. Como este é um livro introdutório prático, executaremos todas as técnicas discutidas em uma aplicação web vulnerável. Há três requisitos principais a serem considerados na criação de um ambiente de testes a ser usado ao longo deste livro: 1. Pelo fato de hospedar essa aplicação web vulnerável em seu próprio computador, é importante configurá-la de modo a não deixar seu computador suscetível a um ataque. 2. Você usará ferramentas de hacking que não são autorizadas fora do âmbito de uso pessoal, portanto é igualmente importante ter um ambiente que não permita que essas ferramentas sejam utilizadas no mundo externo inadvertidamente. 3. É certo que você irá “quebrar” a aplicação web ou o servidor web quando estiver trabalhando no decorrer deste livro, portanto é importante ter um ambiente que possa ser facilmente configurado inicialmente e que também permita “apertar o botão de reset” para retornar a um estado em que se saiba que tudo estará configurado corretamente. Há inúmeras maneiras pelas quais um ambiente como esse pode ser criado e configurado, mas ao longo deste livro máquinas virtuais serão utilizadas. Uma máquina virtual (VM), quando configurada corretamente, atende a todos os nossos três requisitos para o ambiente de testes. Uma VM é simplesmente uma implementação de software para um ambiente computacional executado em outro computador (host). A VM faz solicitações
Capítulo 1 ■ Introdução ao web hacking
43
de recursos, tais como ciclos de processamento e uso de memória RAM, ao computador host, o que permite que a VM se comporte da mesma maneira que os sistemas operacionais instalados tradicionalmente. No entanto uma VM pode ser desabilitada, movida, restaurada, devolvida a um estado anterior e apagada bem facilmente apenas por meio da digitação de algumas teclas ou com alguns cliques do mouse. Várias VMs diferentes também podem ser executadas ao mesmo tempo, o que permite criar uma rede virtual de VMs, todas executando em seu único computador host. Esses fatores fazem com que um ambiente de testes virtual seja evidentemente a melhor opção para nós. Embora haja várias opções quando se trata de software para virtualização, neste livro, utilizaremos o popular VMWare Player, disponível gratuitamente em http://www.vmware.com. Em virtude de sua popularidade, há muitas máquinas virtuais pré-configuradas que podem ser usadas. Ter sistemas já prontos faz com que você economize tempo durante a instalação e permitirá acessar o material sobre web hacking mais rapidamente e com menos contratempos. Se o VMWare Player não for a solução de sua preferência, sinta-se à vontade para usar qualquer produto para virtualização com o qual se sentir confortável. O fornecedor e o produto exatos não são tão importantes quanto a habilidade de instalar, configurar e executar os sistemas virtualizados necessários. Neste livro, trabalharemos com uma máquina virtual a ser utilizada para hospedar tanto a aplicação web vulnerável (o alvo) quanto todas as ferramentas de hacking (os invasores). O BackTrack será usado para essa máquina virtual e está disponível para download na página do BackTrack Linux em http://www.backtracklinux.org/downloads/. Atualmente, o BackTrack é amplamente aceito como o mais importante sistema operacional orientado à segurança. Há esforços contínuos para atualizar e para melhorar o ambiente de testes do hacker, e a versão recentemente disponibilizada do Kali Linux certamente se tornará amplamente popular. No entanto ficaremos com o BackTrack no decorrer deste livro. O BackTrack inclui centenas de ferramentas de nível profissional para hacking
44
Introdução ao Web Hacking
e faz reconhecimento, análise forense digital, fuzzing5, busca de bugs, exploração de falhas (exploitation), além de incluir várias outras técnicas de hacking. As ferramentas e os comandos necessários no BackTrack, aplicáveis à nossa abordagem, serão discutidos mais detalhadamente à medida que forem apresentados.
Aplicação web alvo O DVWA (Damn Vulnerable Web Application) será usado como a aplicação web alvo; mais informações sobre ele podem ser encontradas em sua homepage em http://www.dvwa.co.uk/. O DVWA é uma aplicação web em PHP/MySQL concebida de forma vulnerável para auxiliar os profissionais da área de segurança a testar suas habilidades e as ferramentas em um ambiente seguro e lícito. Ele também é usado para ajudar os desenvolvedores web a entender melhor os processos que tornam as aplicações web seguras. Entretanto o DVWA não está disponível de modo nativo como uma VM, portanto será necessário criar sua própria VM e, em seguida, instalar e configurar o DVWA para que execute nessa nova VM. Se for de seu interesse, as instruções para a instalação e os arquivos necessários a serem baixados estão disponíveis no site do DVWA. Em nosso caso, iremos acessar o DVWA executando-o localmente na BackTrack VM por meio de http://localhost ou do endereço IP 127.0.0.1. Hospedaremos tanto nossa aplicação alvo (DVWA) quanto as ferramentas de hacking em nossa BackTrack VM. Isso significa que você terá tudo o que for necessário em uma VM e utilizará menos recursos de sistema.
Instalando a aplicação web alvo Para criar nosso ambiente seguro de hacking, inicialmente devemos fazer o download de uma BackTrack VM e configurá-la a fim de hospedar a aplicação web DVWA alvo. Os passos a seguir preparam a BackTrack VM para a instalação do DVWA. 5
N.R.: Fuzzing é uma técnica de testes de software, frequentemente automatizada ou semiautomatizada, que envolve fornecer dados inválidos, inesperados e aleatórios como entradas para programas de computador, que são monitorados, analisando exceções como erros em tempo de execução (Fonte: http://pt.wikipedia.org/wiki/Fuzzing).
Capítulo 1 ■ Introdução ao web hacking
45
1. Faça download de uma máquina virtual BackTrack a partir de http:// www.backtrack-linux.org/downloads/. 2. Extraia o arquivo .7z da máquina virtual BackTrack. 3. Inicie a BackTrack VM dando um clique duplo no arquivo .vmx na pasta do BackTrack. Se perguntado, selecione I copied it e selecione OK. 4. Faça login no BackTrack com o usuário root e a senha toor. 5. Utilize o comando startx para iniciar a GUI (interface gráfica de usuário) do BackTrack. 6. Abra um terminal clicando no ícone Terminal no canto superior à esquerda da tela. É aquele que se parece com uma tela de computador com um >_, como mostrado na figura 1.1. É nesse local que iremos inserir comandos (instruções) para várias ferramentas do BackTrack!
Figura 1.1 – Abrindo um terminal no BackTrack.
Após ter feito um login bem-sucedido no BackTrack, complete os passos a seguir para instalar o DVWA como a aplicação alvo. Isso exigirá uma conexão ativa de internet, portanto certifique-se de que seu computador host possa navegar pela internet abrindo um navegador Firefox para testar a conectividade.
ALERTA Para verificar se há problemas na capacidade de sua VM de usar a conexão de internet de seu computador host, verifique as configurações do adaptador de rede de sua VM no VM Player se for necessário. Estamos utilizando a configuração de rede NAT.
46
Introdução ao Web Hacking
1. Navegue até http://theunl33t.blogspot.com/2011/08/script-to-download-configure-and-launch.html no Firefox (clicando em Applications e, em seguida, em Internet) em sua BackTrack VM para visualizar o script de instalação do DVWA criado pela equipe em The Unl33t. Um link para esse script também será disponibilizado posteriormente no capítulo para sua referência. 2. Selecione e copie todo o script começando em #/bin/bash até a última linha que termina com DVWA Install Finished!\n. 3. Abra gedit Text Editor no BackTrack clicando em Applications e, em seguida, em Accessories. 4. Cole o script e salve o arquivo como DVWA_install.sh no diretório root, como mostrado na figura 1.2.
Figura 1.2 – Salvando o script de instalação do DVWA no diretório root.
5. Feche o gedit e o Firefox. 6. Abra um terminal e execute o comando ls para conferir se o script está no diretório root. 7. Execute o script de instalação executando o comando sh DVWA_install.sh em um terminal. O progresso da instalação será mostrado no terminal e uma janela do navegador contendo a página de login do DVWA será apresentada se a instalação for concluída com sucesso.
Capítulo 1 ■ Introdução ao web hacking
47
Configurando a aplicação web alvo Depois que o DVWA for instalado com sucesso, execute os passos a seguir para fazer login e personalizar a aplicação web:
1. Faça login no DVWA com o nome de usuário admin e a senha password, como mostrado na figura 1.3.
Figura 1.3 – Fazendo login no DVWA como administrador da aplicação.
2. Clique no botão de opções no canto inferior à direita do Firefox caso seja apresentada uma pergunta a respeito de um script potencialmente malicioso. Lembre-se de que o DVWA é propositadamente vulnerável, portanto devemos permitir a execução dos scripts. 3. Clique em Allow 127.0.0.1 para que os scripts tenham permissão para executar em nosso servidor web local. ALERTA A URL é 127.0.0.1 (é o localhost, o servidor web executando diretamente no BackTrack).
48
Introdução ao Web Hacking
4. Clique no link Setup (Configurar) no DVWA. 5. Clique no botão Create / Setup Database (Criar/Configurar banco de dados) para criar o banco de dados inicial a ser utilizado em nossos exercícios, conforme mostrado na figura 1.4.
Figura 1.4 –Confirmação de que a instalação inicial do banco de dados foi concluída com sucesso.
6. Clique no link DVWA Security (Segurança do DVWA) no DVWA e selecione low na lista suspensa, como mostrado na figura 1.5.
Figura 1.5 –Confirmação de que a configuração do nível inicial de dificuldade foi concluída com sucesso.
Capítulo 1 ■ Introdução ao web hacking
49
7. Clique no botão submit para criar essas configurações iniciais de nível de dificuldade a serem usadas em nossos exercícios. Se os exercícios forem fáceis demais para você, sinta-se à vontade para selecionar um nível de dificuldade mais elevado! Você está pronto para usar as ferramentas de hacking no BackTrack e atacar a aplicação web DVWA. É possível revisar qualquer um desses passos para conferir se seu ambiente está instalado corretamente. Não é necessário desligar a VM sempre que quiser fazer uma pausa. Em vez disso, suspenda-a para que o estado de sua tarefa permaneça intacto. Se optar por desligar a VM para conservar os recursos do sistema (ou por algum outro motivo qualquer), você pode facilmente seguir os passos anteriores para preparar sua VM. Vale a pena ressaltar que a partir de agora você estará executando uma aplicação web intencionalmente vulnerável e explorável em sua máquina BackTrack. Portanto provavelmente não será uma boa ideia usar esse computador conectado à Internet, pois outros poderão atacar você!
Script de instalação do DVWA #/bin/bash echo -e "\n#######################################" echo -e "# Damn Vulnerable Web App Installer Script #" echo -e "#######################################" echo " Coded By: Travis Phillips" echo " Website: http://theunl33t.blogspot.com" echo -e -n "\n[*] Changing directory to /var/www..." cd /var/www > /dev/null echo -e "Done!\n" echo -n "[*] Removing default index.html..." rm index.html > /dev/null echo -e "Done!\n" echo -n "[*] Changing to Temp Directory..." cd /tmp echo -e "Done!\n"
50
Introdução ao Web Hacking
echo "[*] Downloading DVWA..." wget http://dvwa.googlecode.com/files/DVWA-1.0.7.zip echo -e "Done!\n" echo -n "[*] Unzipping DVWA..." unzip DVWA-1.0.7.zip > /dev/null echo -e "Done!\n" echo -n "[*] Deleting the zip file..." rm DVWA-1.0.7.zip > /dev/null echo -e "Done!\n" echo -n "[*] Copying dvwa to root of Web Directory..." cp -R dvwa/* /var/www > /dev/null echo -e "Done!\n" echo -n "[*] Clearing Temp Directory..." rm -R dvwa > /dev/null echo -e "Done!\n" echo -n "[*] Enabling Remote include in php.ini..." cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini1 sed -e 's/allow_url_include = Off/allow_url_include = On/' /etc/php5/apache2/php.ini1 > /etc/php5/apache2/php.ini rm /etc/php5/apache2/php.ini1 echo -e "Done!\n" echo -n "[*] Enabling write permissions to /var/www/hackable/upload..." chmod 777 /var/www/hackable/uploads/ echo -e "Done!\n" echo -n "[*] Starting Web Service..." service apache2 start &> /dev/null echo -e "Done!\n" echo -n "[*] Starting MySQL..." service mysql start &> /dev/null echo -e "Done!\n" echo -n "[*] Updating Config File..." cp /var/www/config/config.inc.php /var/www/config/config.inc.php1 sed -e 's/'\'\''/'\''toor'\''/' /var/www/config/config.inc.php1 > /var/www/config/config.inc.php
Capítulo 1 ■ Introdução ao web hacking rm /var/www/config/config.inc.php1 echo -e "Done!\n" echo -n "[*] Updating Database..." wget --post-data "create_db=Create / Reset Database" http://127.0.0.1/setup.php &> /dev/null mysql -u root --password='toor' -e 'update dvwa.users set avatar = "/hackable/users/gordonb.jpg" where user = "gordonb";' mysql -u root --password='toor' -e 'update dvwa.users set avatar = "/hackable/users/smithy.jpg" where user = "smithy";' mysql -u root --password='toor' -e 'update dvwa.users set avatar = "/hackable/users/admin.jpg" where user = "admin";' mysql -u root --password='toor' -e 'update dvwa.users set avatar = "/hackable/users/pablo.jpg" where user = "pablo";' mysql -u root --password='toor' -e 'update dvwa.users set avatar = "/hackable/users/1337.jpg" where user = "1337";' echo -e "Done!\n" echo -e -n "[*] Starting Firefox to DVWA\nUserName: admin\nPassword: password" firefox http://127.0.0.1/login.php &> /dev/null & echo -e "\nDone!\n" echo -e "[\033[1;32m*\033[1;37m] DVWA Install Finished!\n"
51