A solução de trabalho com pwnable.kr 08 é perna e 10 é shellshock. ARM assembler. Vulnerabilidade do Bash

imagem

Neste artigo, lembramos a sintaxe do assembler do ARM, lidamos com a vulnerabilidade do shellshock e também resolvemos as 8ª e 10ª tarefas do site pwnable.kr .

Informações Organizacionais
Especialmente para aqueles que desejam aprender algo novo e se desenvolver em qualquer uma das áreas de segurança da informação e da informática, escreverei e falarei sobre as seguintes categorias:

  • PWN;
  • criptografia (criptografia);
  • tecnologias de rede (rede);
  • reverso (engenharia reversa);
  • esteganografia (estegano);
  • pesquisa e exploração de vulnerabilidades na WEB.

Além disso, compartilharei minha experiência em análise forense de computadores, análise de malware e firmware, ataques a redes sem fio e redes locais, realização de protestos e explorações por escrito.

Para que você possa descobrir sobre novos artigos, software e outras informações, criei um canal no Telegram e um grupo para discutir quaisquer questões no campo da CID. Além disso, considerarei pessoalmente seus pedidos, perguntas, sugestões e recomendações pessoais e responderei a todos .

Todas as informações são fornecidas apenas para fins educacionais. O autor deste documento não se responsabiliza por nenhum dano causado a alguém como resultado do uso dos conhecimentos e métodos obtidos como resultado do estudo deste documento.

Solução de busca de pernas


Clicamos no primeiro ícone com a perna da assinatura e informamos que precisamos conectar via SSH com a senha de convidado. Eles também fornecem código fonte em C e assembler.

imagem

Vamos baixar os dois arquivos e classificar o código-fonte em C. Pela linguagem assembly, podemos dizer que ele usa a sintaxe do ARM. Sobre o ARM assembler em Habré escreveu aqui e aqui .

imagem

Na função main (), um número é recebido do usuário e comparado com a soma dos resultados das três funções da tecla (). Vamos ordená-los em ordem.

imagem

Assim, o valor do registro PC é colocado no registro R3. No ARM assembler, o registro do PC contém o endereço da próxima instrução a ser executada. Nós olhamos para o código desmontado.

imagem

Assim, a função key1 () retornará o valor 0x8ce4. Vamos analisar a função key2 ().

imagem

0x8d08 é colocado em R3, que é incrementado por 4 e gravado no registro R0. Ou seja, key2 () retornará 0x8d0c. Considere key3 ().

imagem

Por analogia com a primeira função, concluímos que key3 () retornará um valor do registro LR. LR contém o endereço de retorno da função. Vamos ver onde a função é chamada e pegar o seguinte endereço.

imagem

A função key3 () retornará 0x8d80. Conecte-se via SSH e digite a soma dos três números encontrados no programa.

imagem

imagem

Entregamos a bandeira e ganhamos dois pontos.

imagem

Shellshock tcp Bashdoor


Shellshock (Bashdoor) é uma vulnerabilidade de software descoberta no programa GNU Bash que permite que comandos arbitrários sejam executados após o recebimento de alguns valores não padrão de variáveis ​​de ambiente. A vulnerabilidade recebeu o número CVE-2014-6271.

Nos sistemas operacionais do tipo Unix, cada programa possui variáveis ​​de ambiente. O processo filho herda do pai uma lista de variáveis ​​de ambiente. Além das variáveis ​​de ambiente, o bash também mantém uma lista interna de funções - scripts denominados que podem ser chamados de um script executável. Ao executar scripts de outros scripts (principais), é possível exportar os valores das variáveis ​​de ambiente existentes e das definições de funções. As definições de função são exportadas codificando-as na forma de novas variáveis ​​de ambiente de um formato especial, começando com colchetes vazios “()”, seguidos pela definição da função como uma sequência. Novas instâncias do bash iniciam a varredura de todas as variáveis ​​de ambiente, detectando esse formato e convertendo-o novamente para a definição de uma função interna. Portanto, se um invasor puder enviar uma variável de ambiente arbitrária para executar o bash, será exibida a capacidade de executar comandos arbitrários.

O exemplo a seguir imprime o texto VULN.

env x='() { : ; }; echo “VULN”' bash -c “echo text” 

Como ao executar o comando “echo text”, a definição da função contida na variável de ambiente x será carregada, e o comando 'echo “VULN” ”será executado com ele.

Solução de trabalho Shellshock


Clicamos no primeiro ícone com o shellshock de assinatura e somos informados de que precisamos nos conectar via SSH com a senha guest.

imagem

Quando conectado, vemos o banner correspondente.

imagem

Vamos descobrir quais arquivos estão no servidor e quais direitos temos.

imagem

Vamos ver o resultado do código.

imagem

De interesse é a linha que chama a função do sistema. Com base no nome, assumimos que o bash, que fica ao lado do programa e chamado pelo programa, é vulnerável. Por analogia com o ataque descrito no artigo, executamos o comando para ler o sinalizador.

 /bin/cat flag 

Para isso, definimos uma função na variável de ambiente em que colocamos esse comando. E, em seguida, execute o programa.

 export x="() { :; }; /bin/cat flag;" 

imagem

Entregamos a bandeira e conseguimos mais um ponto. Vejo você no próximo artigo.

Estamos em um canal de telegrama: um canal no telegrama .

Source: https://habr.com/ru/post/pt461269/


All Articles