Os primeiros passos envolvem encontrar os serviços de escuta. Como é uma imagem de VPN, tenho realizado uma única varredura na porta UDP 500 a partir do qual o resultado pode ser visto na imagem seguinte.
Para manter esse profundo Eu também executada uma porta TCP varredura completa, embora, como esperado, apenas a porta aberta é 81. Isso é usado para hospedar uma página de ajuda e está fora do escopo para o teste.
Usando ike-scan é possível determinar se o host está executando uma VPN baseada IKE no modo agressivo, a partir do qual podemos basicamente realizar um ataque offline no hash para devolver o PSK não criptografado. Mais informações sobre este ataque pode ser encontrada aqui .
É possível, então, usar um programa como o PSK-crack para realizar dicionário ou força bruta ataques ao hash. Na imagem seguinte é evidente ao ver que o valor PSK texto claro é 123456.
Se você estiver usando os arquivos de configuração do cliente fornecido, você vai precisar para entrar no PSK no arquivo ipsec.secrets (a seguir).
Antes de tentar conectar-se ao host que você vai precisar para realizar uma reinicialização do serviço ou seja /etc/init.d/ipsec restart .
É possível, então, iniciar a conexão VPN usando o comando, como mostrado na imagem seguinte.
Se a ligação tiver sido bem sucedida, você verá 'IPsec SA estabelecida "mensagem como destacado acima. Se as coisas não saem como planejado, podem ajudar:
- 022 "vpn": Nós não podemos nos identificar com uma ou outra extremidade dessa conexão - Isso significa que o seu endereço de IP não é o mesmo, tal como especificado no arquivo ipsec.conf. Ou mudar seu endereço, ou alterar o valor no arquivo (o padrão para o cliente é definido como 192.168.0.11).
- 021 nenhuma conexão com o nome "xxxx" - O nome da conexão não é como especificado no ipsec.conf, ou seja, vpn (o padrão para este desafio).
- STATE_AGGR_I1: INVALID_HASH_INFORMATION - Este erro indica que as informações de hash em ipsec.secrets está incorreto.Certifique-se de inserir o PSK como obtido anteriormente.
Após as alterações, certifique-se de reiniciar os serviços IPSec.
O próximo passo envolve a criação / iniciar uma conexão PPP para a interface "dentro". Se você tiver baixado os arquivos do cliente você pode usar o script 'start-vpn.sh' para fazer isso. Se você deseja executar isso manualmente, o comando é o seguinte: echo "c vpn"> / var / xl2tpd / l2tp-control / run
Para verificar isso tem funcionado como esperado, você pode usar o comando " ip link 'a partir do qual você deve ver um novo adaptador, ppp0 provavelmente nomeado. Se isso não tiver sido criado, garantir que você tenha uma bem-sucedida fase de uma conexão (ver acima) e, em seguida, tente executar o script novamente. Se você tiver problemas, você deve referir-se a ambos os registros do cliente ea página de ajuda em http://192.168.0.10:81.
Desde a saída do ifconfig é possível ver que o adaptador tem o novo endereço do 10.99.99.2, com o servidor baseado no 10.99.99.1.
Um comando básico de ping mostra que a conexão entre os dois hosts está funcionando como esperado.
A realização de uma varredura de portas no endereço interno identifica que há agora muitos mais serviços ao alvo em novos ataques
Enumeração & Atacando o anfitrião # 1
É possível ver que um servidor SMTP está disponível na porta 25. Usando o telnet para se conectar a este confirma que o Postfix está em execução, o que também permite que os comandos VRFY para ser executado (essencialmente o que nos permite localizar usuários válidos no sistema). A imagem seguinte mostra a diferença entre uma verdadeira resposta / false.
Ao utilizar o programa 'smtp-user-enum' de pentestmonkey.net podemos usar uma lista de nome de usuário e força bruta este serviço para retornar usuários válidos muito rapidamente.
Desde a saída a seguir é possível ver todos os usuários localizados. Algumas delas são contas padrão, mas um, 'bob', parece ser interessante.
Agora temos um nome de usuário válido que pode, potencialmente, usar isso em um ataque de força bruta. A partir do porto anterior varredura, é possível ver que o serviço SSH está disponível.
Usando hidra podemos ver se é possível encontrar a senha para a conta 'bob' ... É!
Agora estamos conectado ao servidor, como prumo, nós abrimos um novo vetor de ataque conjunto, escalação de privilégios ...
Uma visão rápida de / etc / passwd revela outra conta possivelmente interessante que em breve deverá atingir ...
Atacar o anfitrião # 2
A partir do porto anterior varredura, é possível ver que um servidor web está escutando na porta TCP 80. Navegar para isso revela uma página padrão do Apache.
É sempre vale a pena usar uma ferramenta como o Dirbuster para ajudar a descobrir quaisquer diretórios interessantes / páginas.
Navegando para / wordpress revela uma página 'currículo submissão ", com a funcionalidade de upload. Há um problema conhecido com o plugin "WordPress Retomar Submissões & Oportunidades de Emprego v2.5.1" - mais detalhes podem ser encontrados aqui em explorar-db .
É possível criar um simples WebShell php e enviá-lo para esta página, exemplo a seguir:
<? Php
intermediário ($ _ GET [1]);
?>
Após o upload, um link não é dado para o arquivo, mas é possível navegar através conhecida estrutura de diretório para WordPress / wordpress / wp-content / uploads, de onde, felizmente, listagem de diretório está habilitada.
É possível, então, interagir com o WebShell para lançar comandos do sistema operacional.
A partir daqui você pode querer usar msfpayload para criar um shell interativo para fazer os próximos estágios mais fácil.
Atacar o anfitrião # 3
Pouco tempo atrás eu criei o desafio Vulnix. Parte deste envolveu o uso de NFS e SSH para obter uma shell sem privilégios para o host remoto. Esta técnica é também aplicável aqui. Mais detalhes podem ser encontrados no ponto de entrada # 3 na Vulnix write-up aqui .
Privilege Escalation local # 1
Neste ponto temos de encontrar arquivos "interessantes" ou vulnerabilidades. Há uma série de comandos / ferramentas / métodos de fazer isso, mas eu vou pular direto ao ponto. Executar o seguinte comando deve trazer alguns resultados interessantes:
find / -type f -perm -2 2> / dev / null> results.txt
... Eo arquivo realmente interessante é ...
De olhar para as permissões, é possível ver que o arquivo é de propriedade de raiz, mas outros têm acesso de leitura / gravação. Além disso, devido à localização ( /etc/cron.daily ), é provavelmente uma tarefa agendada que está sendo executado em uma base regular.
Ignorando o fato de que a senha do usuário root do MySQL são armazenados em claro, poderíamos alterar o conteúdo do arquivo e espero que o trabalho cron é executado como root em um futuro próximo. Este trabalho é realmente executado após uma reinicialização do sistema e, portanto, você vai precisar para hard reset o sistema para os efeitos de ser visto. No exemplo abaixo (eu já copiou um shell para o diretório home do bob) estamos adicionando algumas linhas para o trabalho cron que deve, em essência, nos dão acesso a uma shell de root. É importante notar que sh foi usado em vez de festa como o bit suid foi ignorado no shell bash, e, portanto, não correr com as permissões proprietários, neste caso raiz, privilégios.
Esperemos que, após a reinicialização, você verá os seguintes resultados:
Nós temos raiz!
Privilege Escalation local # 2
A partir da varredura nmap é claro, para ver que o NFS (TCP 2049) está escutando. Usando o comando showmount podemos ver se alguma coisa de acesso.
Qualquer pessoa tem permissão para montar este compartilhamento de qualquer host, então aqui vamos nós ...
Visualizando o conteúdo desse diretório mostra que o usuário 1000, neste caso bob (assumido devido ao nome do diretório / home), tem acesso.
NFS esmagamento raiz está habilitado, neste caso, de modo root essencialmente tem ninguém permissões. Portanto, em nosso sistema de ataque local, podemos criar um novo usuário e atribuir o uid de 1000, mudar para este usuário e, em seguida, fazer upload de arquivos para o diretório, conforme as imagens a seguir.
Como você pode ver, nós criamos o diretório "upload" e agora vamos atribuir permissões muito frouxas para isso. Essencialmente, isso permitirá que qualquer pessoa fazer upload de arquivos para este diretório. É importante notar também que eu já copiados / bin / bash (versão de 32-bit) para o diretório de upload (ler).
Como você pode lembrar, a saída do / etc / passwd revelou outro usuário chamado jane com o uid de 1001. Um truque rápido aqui é criar outro usuário em seu sistema de ataque com o uid de 1001 (neste caso, a título de referência, também chamado jane). Podemos, então, su a jane (no seu sistema local), cópia bash (no diretório de upload) para bater-jane e, finalmente, definir as permissões de 4777 para o shell bash. Essencialmente, este conjunto é o bit suid no escudo e permite que qualquer pessoa leia / wite / executar o acesso.Quando executado em VulnVPN este será executado como 'Jane'.
Voltar dentro sessão ssh do bob podemos então executar o shell "bash-jane", como segue:
Agora que temos o euid de jane, o que podemos fazer? Talvez ver se jane está autorizado a sudo?
Não é exatamente o resultado que queríamos. Existem algumas maneiras de contornar isso, mas o mais fácil é para compilar e executar esse código simples:
#include <sys / types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main (void) {
setreuid (1001, -1);
char * args [] = {"/ bin / bash", 0};
execve (args [0], args, 0);
return 0;
}
setreuid (1001, -1);
char * args [] = {"/ bin / bash", 0};
execve (args [0], args, 0);
return 0;
}
É interessante notar que, neste caso, o uid de jane é 1001, portanto, isso se reflete no código.
Agora podemos compilar isso em VulnVPN?
Não seria tão fácil seria ele
Você vai ter que compilar este em um host de 32 bits e, em seguida, fazer o upload deste para o diretório 'carregar' via NFS, e depois executar, como segue:
Como você pode ver, após a execução do programa uid agora temos a uid de 1001 e pode ser executado com sucesso sudo -l, como abaixo:
Podemos ver que Jane pode executar o vim como root - vim é muito fácil a fuga de!
Assim, como jane vamos correr sudo vim , e então ...
Nós temos raiz!
Rápido e fácil 'root' em # 1 & # 2
Olhando para o nmap resulta é possível ver que a porta TCP 10000 está aberta. Isto é comumente associado com webmin. Navegando para o endereço interno revela o seguinte:
Vamos assumir que já temos bobs credenciais através de métodos de força bruta (descritos anteriormente), podemos registrar em webmin com estes? Sim, nós podemos!
Olhando para a tela inicial, é possível ver que a versão é de 1.590, e Bob tem acesso ao módulo "Gerenciador de Arquivos". Realizando uma rápida pesquisa na web revela várias vulnerabilidades com este, e versões anteriores (você pode precisar fazer referência a diversos recursos como a informação de ambos os seguintes módulos Metasploit estado versão 1.580, mas na verdade também funcionam em 1.590).
- http://www.metasploit.com/modules/exploit/unix/webapp/webmin_show_cgi_exec
- http://www.metasploit.com/modules/auxiliary/admin/webmin/edit_html_fileaccess
Em primeiro lugar, usando o módulo auxiliar, que pode preencher os campos relevantes e tentar obter uma cópia do arquivo shadow. A execução desta prova bem sucedido. Podemos continuar a copiar qualquer arquivo que desejamos.
O segundo dos módulos Metasploit nos permite obter um shell remoto. Mais uma vez, preencha os campos relevantes e selecione uma carga adequada. Neste caso cmd / unix / bind_perl é escolhido, executado e temos raiz!
Espero que tenham gostado dos desafios ... Esperemos que não haverá mais para vir em breve.
Comentários
Postar um comentário