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 OrganizacionaisEspecialmente 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.

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 .

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.

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.

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

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

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.

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


Entregamos a bandeira e ganhamos dois pontos.

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.

Quando conectado, vemos o banner correspondente.

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

Vamos ver o resultado do código.

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;"

Entregamos a bandeira e conseguimos mais um ponto. Vejo você no próximo artigo.
Estamos em um canal de telegrama: um
canal no telegrama .