Pular para o conteúdo principal

Atacando o servidor VPN


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.
nmap_udp_500
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 .
ike-scan
É 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.
PSK-wordlist
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).
ipsec.secrets
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.
ipsec_sa_established
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.
ip_link
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.
ifconfig
Um comando básico de ping mostra que a conexão entre os dois hosts está funcionando como esperado.
ping_10.99.99.1
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 :-)
nmap_10.99.99.1_scan

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.
vrfy_test
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.
user_enum_smtp
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.
smtp_enum_results
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' ... É!
ssh_brute
Agora estamos conectado ao servidor, como prumo, nós abrimos um novo vetor de ataque conjunto, escalação de privilégios ...
ssh_bob
Uma visão rápida de / etc / passwd revela outra conta possivelmente interessante que em breve deverá atingir ...
etc_passwd

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.
default_apache
É sempre vale a pena usar uma ferramenta como o Dirbuster para ajudar a descobrir quaisquer diretórios interessantes / páginas.
dirbuster
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.
wp-content_uploads
É possível, então, interagir com o WebShell para lançar comandos do sistema operacional.
WebShell
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 é ...
wp-backup
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.
cron_sh
Esperemos que, após a reinicialização, você verá os seguintes resultados:
cron_sh_root
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.
showmount
Qualquer pessoa tem permissão para montar este compartilhamento de qualquer host, então aqui vamos nós ...
NFS-partes-conteúdo
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.
create_user_and_directory
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).
chmod_upload_perms
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'.
cp_jane_bash
Voltar dentro sessão ssh do bob podemos então executar o shell "bash-jane", como segue:
execute_jane_bash
Agora que temos o euid de jane, o que podemos fazer? Talvez ver se jane está autorizado a sudo?
bash_jane_before_uid
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>
int main (void) { 
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?
gcc_not_included
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:
uid_change_jane
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:
jane_sudo
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 ...
vim_bash_breakout
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:
webmin

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).
webmin_authenticated_as_bob
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.
webmin_fileaccess
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!
webmin_cgi
Espero que tenham gostado dos desafios ;-)... Esperemos que não haverá mais para vir em breve.

Comentários

Postagens mais visitadas deste blog

WiFiPhisher - Ataques Automatizados de Phishing Contra Redes Wi-Fi

Um pesquisador de segurança grego, chamado George Chatzisofroniou, desenvolveu uma ferramenta de engenharia social WiFi que é projetado para roubar credenciais de usuários de redes Wi-Fi segura. A ferramenta, batizada WiFiPhisher, foi lançado no site do desenvolvimento de software GitHub no domingo e está disponível gratuitamente para os usuários.   "É um ataque de engenharia social que não usa força bruta, em contraste com outros métodos. É uma maneira fácil de obter senhas WPA", disse George Chatzisofroniou. No entanto, existem várias ferramentas de hacker disponíveis na Internet que pode cortar de uma rede Wi-Fi segura, mas esta ferramenta automatiza múltipla Wi-Fi técnicas que o tornam um pouco diferente dos outros hackers. Ferramenta WiFiPhisher usa ataque "gêmeo do mal " cenário. O mesmo que o gêmeo do mal, a ferramenta cria primeiro um ponto de acesso sem fio falso (AP) mascarar-se como o legítimo Wi-Fi AP. Em seguida, ele dirige uma negação de...

MKBRUTUS – Brute Force para MikroTik e dispositivos com RouterOS

O MKBRUTUS é uma ferramenta desenvolvida em Python 3 que realiza ataques de força bruta em sistemas (baseados em dicionário) contra RouterOS (ver. 3.x ou superior), que têm a porta 8728/TCP aberto. O MKBRUTUS é uma ferramenta desenvolvida em Python 3 que realiza ataques de força bruta em sistemas (baseados em dicionário) contra RouterOS (ver. 3.x ou superior), que têm a porta 8728/TCP aberto. Desenvolvedores: Ramiro Caire  | ramiro.caire@gmail.com | Twitter: @rcaire Federico Massa | fgmassa@vanguardsec.com | Twitter: @fgmassa Projeto:   github.com/mkbrutusproject/mkbrutus 01 Passo Verifique a versão atual do python em seguida realiza a instalação da versão 3 root@kali:~# python –version (Exibe a versão do Python) root@kali:~# apt-get install python3 (Realiza a instalação do Python 3) 02 Passo Execute o comando de verificação da versão do Python novamente e observe que a versão não mudou mas a instalação da ver...

UFONet Open Redirect DDoS Attack

UFONet – is a tool designed to launch DDoS attacks against a target, using ‘Open Redirect’ vectors on third party web applications, like botnet. See this links for more info: https://www.python.org/downloads/ http://pycurl.sourceforge.net/ Installing UFONet UFONet runs on many platforms. It requires Python (2.x.y) and the following library: - python-pycurl - Python bindings to libcurl On Debian-based systems (ex: Ubuntu), run: sudo apt-get install python-pycurl Source libs: Searching for ‘zombies’ UFONet will search on google results for possible ‘Open Redirect’ vulnerable sites. A common query string should be like this: ‘proxy.php?url=’ ‘check.cgi?url=’ ‘checklink?uri=’ ‘validator?uri=’ So for example, you can begin a search with: ./ufonet -s 'proxy.php?url=' At the end of the process, you will be asked if you want to check the list retrieved to see if the urls are vulnerable. Wanna check if they are valid zombies? (Y/n) Also, y...