Uma das maiores reclamações dos estudantes da segurança da informação, é o fato de utilizar máquinas virtuais para os estudos. Muitos acham frustante por não estar instalado em uma máquina física. Pensando nisso, foi desenvolvida uma distribuição para ser instalada em um Raspberry Pi e que é intencionalmente vulnerável. Essa distribuição é a RasPwn OS.
A distribuição RasPwn OS é baseada na distribuição Debian Wheezy. De acordo com o Github oficial, é uma distro Linux no espírito da distro “Damn Vulnerable Linux (DVL)” e usa o Raspberry Pi 2B e 3 para emular um servidor Linux vulnerável, por tanto esse é o único propósito do RasPwn OS e ele não deve ser exposto a internet, pois pode comprometer toda a sua rede interna.
No meu caso, tenho um Raspberry Pi 3 com cartão de memória de 16 gb. É o suficiente para começar os estudos. Também é possível instalar no Raspberry Pi 2B, porém precisa de uma adaptador wifi conectado a uma das portas USB, pois não possui uma interface interna de wifi, ao contrário do Raspberry Pi 3 que já possui wifi integrado.
Baixei a imagem no site oficial, extrai usando o 7ZIP e fiz a cópia da ISO para o cartão utilizando o Etcher. O procedimento usado para gerar o conteúdo da imagem pode variar, não sendo uma regra.
Após esse procedimento, coloquei o cartão no slot do Raspberry e liguei a fonte na energia. Caso queira acompanhar a primeira inicialização do OS, basta colocar um monitor HDMI. O sistema reiniciará uma vez e após isso estará pronto para o uso.
A primeira coisa a se fazer é conectar-se o sistema operacional que você utilizará para estudar no wifi que o RasPwn criou.
SSID: RasPwn OS
Senha: In53cur3!
Depois de conectar-se a rede wifi criada, utilize um browser e acesse o endereço: http://playground.raspwn.org/. Essa é a página principal do RasPwn OS e que dará acesso aos outros sistemas instalados no mesmo sistema. Você notará que a rede criada é a 192.168.99.0/24, assim você pode passar algum scanner de rede para testes.
A documentação oficial da distribuição informa os ips atribuídos a cada serviço:
Bind (192.168.99.1, 192.168.99.10) – DNS Server
Postfix (192.168.99.18) – Mail Transfer Agent
Dovecot (192.168.99.18) – Mail Client Server
Samba (192.168.99.10) – Windows File Sharing Server
Apache2 (192.168.99.13) – Web Server
Nginx (192.168.99.7) – Web Server
MySQL Server (127.0.0.1) – Database Server
OpenSSH (192.168.99.1) – SSH server
Além disso, há alguns aplicativos instalado com versões desatualizadas para as vulnerabilidades conhecidas serem exploradas:
Concrete 5.6.3.4 – http://playground.raspwn.org/concrete5/
Drupal 6.34 – http://playground.raspwn.org/drupal-6.34/
Drupal 7.34 – http://playground.raspwn.org/drupal-7.34/
Joomla 2.5.28 – http://playground.raspwn.org/joomla-2/
Joomla 3.4.0 – http://playground.raspwn.org/joomla-3/
osCommerce 2.3 – http://playground.raspwn.org/oscommerce/
phpBB 3.0.13 – http://playground.raspwn.org/phpBB3/
WordPress 3.8.1 – http://playground.raspwn.org/wordpress3/
WordPress 4.1 – http://playground.raspwn.org/wordpress4
Zen-Cart 1.5.4 – http://playground.raspwn.org/zencart
PhpMyAdmin 3.4.11 – http://playground.raspwn.org/phpmyadmin/
Samba SWAT 3.6.6 – http://playground.raspwn.org:901 (wifi adapter only)
Roundcube 0.7.2 – http://playground.raspwn.org/roundcube/
Há também serviços WEB para testes de vulnerabilidades:
OWASP Bricks – http://playground.raspwn.org/bricks
Damn Vulnerable Web Application (DVWA) – http://playground.raspwn.org/dvwa
OWASP Hackademic – http://playground.raspwn.org/hackademic
OWASP Mutillidae II – http://playground.raspwn.org/mutillidae
Peruggia – http://playground.raspwn.org/peruggia
WackoPicko – http://wackopicko.playground.raspwn.org (wifi adapter only)
WebGoat – http://playground.raspwn.org:8080/WebGoat (wifi adapter only)
Para título de exemplo, vou usar o DVWA para exemplificar a vulnerabilidade XSS (Cross-Site Scripting)
Primeiramente, vamos acessar o DVWA:
http://playground.raspwn.org/dvwa
Login: admin
Senha: password
Iremos fazer os testes com 3 níveis de segurança: Low, Medium e High.
Todos os 3 ataques abaixo são do tipo Refletido ou Não Persistente.
Vamos começar com o Low. Para fazer isso, no Menu da esquerda, basta clicar em DVWA Security.
Só escolher Low e depois clicar em Submit.
Agora, vamos acessar a página para testes XSS. No menu da esquerda, clicar em XSS (Reflected).
Como estamos estudando, vamos olhar o código do fonte da página para assim entender como funcionam as proteções.
Para ver o código fonte (lembre-se que não é possível ver em uma página comum da web, pois o código php será interpretado e exibido apenas o resultado HTML final), basta clicar no final da página em View Source.
Como é possível observar, não há nenhuma proteção para evitar o XSS, então podemos utilizar o XSS mais básico (afinal, a segurança está setada para Low)
No único campo que há (What’s your name?):
<script>alert(“Ataque XSS LOW”);</script>
Sucesso!
Agora com o nível de segurança em “Medium”. Lembre-se de mudar o nível na página de configuração.
Mais uma vez, vamos olhar o código fonte:
Agora é possível observar que no código há uma proteção para evitar que o código <script> seja interpretado. Porém, é apenas para <script>, caso utilize o mesmo texto, mas com letras maiúsculas e minúsculas, o script será interpretado. Logo, por exemplo, podemos utilizar <ScRiPt>.
<ScRiPt>alert(“Ataque XSS MEDIUM”);</sCrIpT>
Sucesso!
Uma outra forma é colocar o script dentro do código script. Estranha explicação, então vamos para a prática e ficará mais claro.
<scri<script>pt>alert(“Ataque XSS MEDIUM 2”);</scri<script>pt>
Sucesso!
A explicação é que com a proteção da forma que está, a string <script> será suprimida, isso fará que o texto que está “em volta” da string fica um texto só, e será novamente <script>, assim executando o código.
E finalmente, nível de segurança HIGH!
Novamente, olhando o código fonte, podemos perceber que o código agora está mais sofisticado, impedindo que o <script> seja executado de qualquer forma. Então, vamos tentar inserir código html.
<img src=x onError=alert(“document.cookie”);>
Sucesso!
Nesse exemplo, é inserido um código html de imagem, porém a imagem não existe, logo existe um tratamento para o erro que é executado quando essa condição for verdadeira, que é o caso. Assim, o código XSS é executado. Também é possível perceber que foi utilizado o parâmetro alert(document.cookie) que serve para exibir o cookie da sessão atual.
Depois de contemplado os 3 ataques em modo Refletido, agora em modo Persistente:
No menu da esquerda, clicar em XSS (Stored).
Em todos os exemplos, vamos colocar os códigos no campo “Name”
Começando pelo Persistente no modo LOW:
Sempre é bom olhar o código fonte para verificar se há alguma proteção.
Como é no nível LOW, não há nenhuma proteção:
Então, vamos usar o ataque básico:
<script>alert(“Ataque XSS LOW”);</script>
Pode observar que não foi possível inserir todo texto no campo Name. Logo, vamos inspecionar o elemento.
Observe que na linha destacada, há a limitação para apenas 10 caracteres . Vamos aumentar pra 100!
É possível observar que agora o código cabe todo. Agora é só executar:
Sucesso!
Como as informações inseridas ficam no banco de dados, vamos dar um reset no banco antes de ir para o nível de segurança “Medium”
Para fazer isso, basta ir no menu do lado esquerdo e clicar em “Setup / Reset DB”.
No final da página, basta clicar em “Create / Reset Database DB”.
Ao fazer isso, os bancos serão apagados e criados novamente. Assim, podemos passar para o nível de segurança Medium.
Agora no nível “MEDIUM” e já olhando o código fonte:
Há a mesma proteção que já observamos no mesmo nível no modo Persistente, então vamos usar as mesmos scripts.
E aparentemente, também há a limitação de 10 caracteres. Então vamos mudar logo pra 100 também.
<ScRiPt>alert(“Ataque XSS MEDIUM”);</sCrIpT>
Também funciona a mesma técnica de colocar o “script” dentro de outro “script”.
<scri<script>pt>alert(“Ataque XSS MEDIUM 2”);</scri<script>pt>
Sucesso!
Agora, level “HIGH”. Não esquecer de dar reset no banco novamente.
Analisando o código fonte, também há a mesma proteção, logo vamos usar o mesmo código.
E adiantando também a limitação do campo “Name”, então vamos mudar logo pra 100 e colocar o código.
<img src=x onError=alert(“document.cookie”);>
Sucesso!
Isso é uma pequena amostra sobre o que é possível fazer com o RasPwn OS na parte de estudos. Espero trazer mais exemplos usando esse sistema, com outros sistemas e outras vulnerabilidades.
Caso queira testar com mais códigos XSS, no site GBHackers há uma lista com 500 exemplos: https://gbhackers.com/top-500-important-xss-cheat-sheet/
Espero ter ajudado e até uma próxima.
Ao som de: Rashid – Interior ft. Rapadura
Fontes:
http://raspwn.org/
https://github.com/alphacharlie/RasPwn
https://computersecuritystudent.com/SECURITY_TOOLS/DVWA/DVWAv107/lesson9/index.html
https://www.hackingarticles.in/xss-exploitation-dvwa-bypass-security/
http://2001594623noviani.blog.binusian.org/2018/05/27/cross-site-scripting-xss-on-dvwa/