Instrutor: Nesta
palestra, gostaria de mostrar como podemos usar as injeções
de SQL para ler qualquer arquivo
no servidor. Mesmo se o arquivo existir fora da
raiz www, poderemos lê-lo
exatamente como uma divulgação de arquivo vulnerabilidade
e também veremos como podemos
usá-lo para gravar arquivos e enviá-los ao sistema,
exatamente como uma vulnerabilidade de upload de arquivos.
Então, a primeira coisa que veremos é
a leitura do arquivo.
E eu vou definir tudo como nulo aqui.
Então, eu tenho minha declaração
aqui e vou escolher uma, e
vou deixar o
número dois porque vou fazer coisas sobre isso.
E nós vamos fazer mais três nulos aqui.
Tão
nulo, nulo, nulo.
Portanto, selecionamos nulo algo nulo, nulo, nulo.
Então cinco, porque temos cinco registros
quando fizemos o pedido.
E, em vez de selecionar algo, lembre-se,
no terceiro vídeo,
selecionamos o banco de dados, por exemplo, e ele nos
mostra o banco de dados atual.
O que eu
quero fazer agora é que eu quero fazer
outra função e essa função é chamada load_file.
E aqui, vou definir o arquivo
que quero carregar e usar o mesmo
arquivo
que vimos na vulnerabilidade de
inclusão de arquivo e era etc / passwd.
Então, estamos tentando ler
esse arquivo e nossa declaração é union, selecione esse arquivo e é isso.
Então eu vou copiar isso.
E eu vou
injetá-lo aqui e vou adicionar meu%
23, que é o meu comando.
E como você
pode ver, conseguimos ler todas as informações,
todo o conteúdo do etc / passwd, mesmo que não
esteja na raiz da web.
Portanto, é armazenado em etc / passwd.
Para que possamos ler qualquer coisa no
servidor de outros
sites, de outros arquivos em qualquer lugar
do servidor,
podemos lê-lo especificando o caminho completo desse arquivo.
A próxima coisa que
gostaria de mostrar é escrever no servidor.
Então, na verdade, vamos escrever coisas
no servidor e isso
é muito útil, porque você pode escrever qualquer código que desejar,
por exemplo, você pode escrever o código para um script
PHP, escrever um código de um shell, um vírus ou um
código PHP para obter outras conexões com você.
Portanto, basicamente funcionará
como uma vulnerabilidade de upload de arquivo.
E para
fazer isso, vou escrever o código
que quero fazer aqui
e vou chamar isso, por exemplo, apenas exemplo.
E nós vamos usar uma função chamada outfile, então vamos
entrar em outfile e
depois especificaremos
onde queremos armazenar esse arquivo.
Agora, na melhor das hipóteses, você
seria capaz de gravar na raiz da web e
isso significa que você pode acessar o arquivo
através do navegador e executá-lo, para
que você possa fazer upload de um arquivo Weevely, conectar-se
a ele e
fazer outras coisas Curtiu isso.
Então, vamos tentar fazer isso primeiro.
Então, vamos fazê-lo em var / www e essa é a nossa
raiz da Web, para que possamos acessar
as coisas
através dele ou você pode colocá-lo até em var /
www e depois colocar
mutillidae para armazená-lo lá.
Portanto, o comando é muito simples.
Novamente união selecione.
Certifique-se de definir tudo como
nulo para que nada seja gravado no arquivo,
exceto o que
você colocou aqui e eu coloquei
exemplo de exemplo e ele será armazenado
em nosso arquivo em var / www /
mutillidae e lembre-se desse exemplo. TXT.
Vamos tentar executar isso e ver se funciona.
Agora, isso não funcionou.
E se
você vier aqui em baixo, verá que SQL ou MySQL
não têm permissão para criar ou gravar neste diretório.
Portanto, o problema é que
não somos, as
permissões que temos não nos permitem gravar nesse local específico.
Então, só para testar essa
exploração, vou mudar esse local para tmp, que é a temperatura,
e você
verá que você pode realmente gravar em temperatura, então
na vida real, em cenários, depende,
você pode tentar e ver se você é
capaz de escrever coisas ou não.
Nisso, estamos tentando escrever para temp
agora e, se
lermos em temp,
se limparmos isso e depois ls e / tmp, você
verá que temos algo chamado
exemplo e, se você tentar
ler isso, você veja que ele contém,
obviamente,
ele contém o conteúdo do que
fizemos antes, que era a seleção normal que você veria.
Então, o que você vê para colocar as coisas para o administrador
e depois nos mostra o que está
lá, como exemplo, que
é o que queremos escrever no arquivo.
Agora você pode obviamente se livrar
do administrador e
do material do adminpass, apenas
colocando um nome de usuário errado e
nada será exibido aqui, então a única coisa
que você verá é a saída, que é um exemplo.
Mas, novamente, isso só é útil
se você puder gravar no servidor da Web, para
poder acessá-lo e depois
usar seu shell
ou usar sua carga útil e explorar ainda mais o sistema.