Enigma relacionado ao sistema de arquivos Unix [fechado]

3

Houve uma pergunta em um teste realizado um ano atrás. Eu estava tentando resolver essa questão e fiquei preso. Todos os outros eram relacionados à programação, mas esse era um material relacionado a permissões de arquivos do Unix. A seguir, o cenário.

Você receberá um login e uma senha para um servidor SSH. ssh your-username@server-addr

Sua tarefa é procurar um arquivo chamado /home/abc/chekme e recuperar o conteúdo.

Quando logado no servidor remoto ssh fazendo um ls -l mostra 0 arquivos, o que mostra que o login dado não tem permissões, mas fazendo ls -l para o arquivo mencionado acima, pode-se ver que a permissão Read é dada para o usuário root e um grupo e o nome do grupo é chekme .

Não consigo ler o arquivo porque não tenho permissão e não sou membro desse grupo. Ao explorar o arquivo /etc/group , descobri que existe um grupo chamado chekme e apenas um usuário é adicionado a esse grupo. O nome de usuário é guest

A partir daqui, tentei mudar minha orientação para a do grupo, adicionando-me ao grupo, fazendo um su como usuário guest , mas nada disso funcionou, já que os dois primeiros exigiram root access e su para convidado exigiu a senha desse usuário.

Como eu procuro agora?

Pergunta real com creds de login:

File : /home/hacker-weekly/abacus

So, you have to read the file '/home/hacker-weekly/abacus' and submit the file content here.

If you haven't got your login credentials, get it by clicking on the button 'Get Login Credential' below. Then you can login into the machine by running following command:

ssh "your-username"@"server-addr"

Hint: Think all about file permission in a UNIX-based system.

Login credentials Server: ec2-175-41-164-254.ap-southeast-1.compute.amazonaws.com Username: ashwinscongo Password: ab12d6H

O nome do grupo é ábaco, o usuário desse grupo é convidado. Tentei / etc / passwrd, não consegui entender nada.

    
por AshwinKumarS 20.09.2013 / 19:37

2 respostas

6

Abordagem:

$ ls -l /home/hacker-weekly/abacus
-r--r----- 1 root abacus 373 Nov 12  2012 /home/hacker-weekly/abacus
$ id
uid=1554(gilles) gid=1555(gilles) groups=1555(gilles)

Portanto, precisamos obter permissões de root ou obter abacus permissões de grupo. Mas como?

Dica (etapa 1): Como você eleva os privilégios?

Solução completa (etapa 1):

Look for setuid or setgid executables that shouldn't be there:
    find / -xdev -perm /4000 -ls 2>/dev/null
There are two likely candidates: /usr/local/abacus and /usr/bin/hacker-weekly-abacus. Running the latter prints out an SSH private key.

Dica (etapa 2): A maneira óbvia de usar esse arquivo é fazer login em outra conta. Qual conta?

Solução completa (etapa 2):

Look through /etc/passwd and see what accounts are present (other than the system accounts and the participants). Look in /etc/passwd and /etc/group to find members of the abacus group. There's just guest.
So copy the private key to ~/.ssh/id_rsa, set the permissions correctly, and ssh guest@localhost. Bingo.

< anúncio >

Se você gosta desse tipo de coisa, nós participamos de competições capture-the-flag como o sec.se (Security Stack Exchange) equipe do CTF (veja a meta-postagem para detalhes organizacionais). Há mais web, engenharia reversa e criptografia envolvida do que o unix.

    
por 21.09.2013 / 02:04
2

A declaração original do problema está aqui, link .

Ao analisar esse problema, não acredito que exista qualquer método para obter acesso ao arquivo por meio das permissões. Após o login:

$ cd /home/hacker-weekly/
$ ls -la
total 28
drwxr-xr-x   2 hacker-weekly hacker-weekly  4096 Nov 12  2012 .
drwxr-xr-x 556 root          root          20480 Sep 20 19:30 ..
-r--r-----   1 root          abacus          373 Nov 12  2012 abacus

Pelo que eu sei sobre permissões (Unix) e sistemas de arquivos, não há uma maneira direta de obter acesso a esse arquivo por causa dessas permissões. As permissões nos dizem que você (1) precisa obter acesso ao root ou (2) obter acesso a uma conta que tenha acesso ao grupo abacus .

Explorando o ângulo do grupo

Ao observar este grupo, observei seguir os arquivos /etc/passwd e /etc/group :

/ etc / passwd

$ grep -E "ashwinscongo|guest|abacus" /etc/passwd
guest:x:1001:1001::/home/guest:/bin/sh
.guest:x:1436:1437::/home/.guest:/bin/bash
ashwinscongo:x:1544:1545::/home/ashwinscongo:/bin/bash

/ etc / group

$ grep -E "ashwinscongo|guest|abacus" /etc/group
guest:x:1001:
abacus:x:1004:guest
.guest:x:1437:
ashwinscongo:x:1545:

Assim, parece que precisamos obter acesso à conta guest .

sudo?

Não temos privilégios de sudo.

$ sudo -l
[sudo] password for ashwinscongo: 
Sorry, user ashwinscongo may not run sudo on ip-10-144-3-172

Fazendo login no convidado

Eu só posso conceber um ataque frontal neste ponto, então eu tentei o top 25 mais senha de 2012 , junto com:

  • convidado
  • ábaco
  • ab12d6H
  • tseug
  • Ábaco

Nenhum dos quais funcionou.

Outros ângulos?

  1. Encontre um executável que tenha permissões para que ele (1) seja executado como raiz ou (2) seja executado como convidado (arquivos setuid / setgid)!
  2. Ganhe acesso ao convidado
  3. Explorar uma relação de confiança de algum tipo para o ssh? (ssh guest @ localhost) ângulo?

Solução real

Demorou um pouco, mas eu percebi. Meu nome de usuário é slmingol. Aparentemente, Gilles descobriu isso também!

Se você pesquisar na caixa procurando executáveis, encontrará tudo o que precisa. Agora que sei como fazê-lo, é melhor que você descubra sozinho.

A dica sobre permissões é relevante apenas no sentido de que você precisa obter privilégios. A outra pista que você encontrará se você pesquisar no Google também é adequado sobre ssh'ing na conta de convidado. Encorajo-vos a ficar com ela e não trapacear olhando para as pistas / respostas do @Gilles.

Se você está realmente preso, posso dar algumas dicas adicionais sem estragá-lo!

    
por 20.09.2013 / 23:35