Pular para o conteúdo

Festa com SQL injection

SQL injection é uma tática hacker que utiliza uma linguagem bem conhecida: SQL (Structured Query Language) ou Linguagem de Consulta Estruturada, é utilizada pela maioria dos SGDB "software livre" do Brasil e do mundo. Ela pode ser uma solução, ou um problema na vida de um administrador de redes.
cristofe coelho lopes da rocha cristofe
Hits: 71.669 Categoria: Linux Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Ética hacker

Olá pessoal!
Depois de tanto tempo, estou de volta.

A intenção aqui, é esclarecer um tipo de ataque realizado pela galera hacker team. Não vamos esgotar o assunto, mas somente tornar público um tipo de ataque bem formado, que deixa de 'calça curta' administradores de redes inexperientes.

Para começar, falaremos de uma linguagem bem conhecida pelos TIs do mundo: SQL - é uma linguagem bem conhecida. Chamada "Structured Query Language", ou: Linguagem de Consulta Estruturada, e é utilizada pela maioria dos SGDB- Software Livre, do Brasil e do Mundo.

Todavia, alguns SGDBs são estruturados de forma relaxadas e sem nenhum tipo de proteção para injeção de código SQL malicioso.

O sqlmap é uma ferramenta utilizada para este tipo de vulnerabilidade. De Código Livre, ele é utilizado para Testes de Penetração que viabilizam a intrusão em SGBDs frágeis. Escrito em Python, oferece funções para detectar e explorar as vulnerabilidades de SQLI.

Bom, vejamos como funciona. Mas, antes de começar a brincadeira, é bom informar que, às vezes, os campos de "senhas" (rsrsrs) dos SGBDs são criptografados. Temos então, a necessidade de descriptografar as senhas para poder acessar o sistema alvo.

Por questões éticas, sou um Hacker aficionado por Tecnologia da Informação e jamais teria a intenção de descredenciar sistemas, ou mesmo fugir das questões éticas que minha profissão exige.

Por isso, não será revelado o IP, base, nome ou mesmo qualquer informação da Universidade invadida. ;-)

Sem esquecer da nossa Maria da Penha e a Lei "Carolina Dieckmann".

BoA ViAgEm!!!

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Ética hacker
   2. Funfando bacana!
   3. Good, let's move on!
   4. Vias de fato!
   5. Defendendo-se do golpe baixo!

Melhorando o nível de segurança com chflags

Esgotando os recursos

Fingerprint: Conhecimento TCP

Um dia depois da inundação

Alta disponibilidade com CARP

Análise passiva (parte 2)

PHLAK :: [P]rofessional [H]acker's [L]inux [A]ssault [K]it

O Kerberos não é um cachorro de 3 cabeças!

Hardening, se adequando as normas ISO 27000

Sudo 1.8.12 - Parte I - Manual

#1 Comentário enviado por Buckminster em 20/05/2013 - 08:49h
Bom artigo.
#2 Comentário enviado por jcb em 20/05/2013 - 09:22h
Cristof, show de bola esse post, mas estou com uma duvida ... depois ter "injetado" com o sqlmap, consigo executar tais comandos como UPDATE TABLE, SELECT, WHERE ??

Abraços,
#3 Comentário enviado por cristofe em 20/05/2013 - 10:44h
Olá Jcb,

O SQL injection com SQLmap prova que o sistema tem vulnerabilidades com relação a injeção de sql, por tanto vc pode elaborar query sql para realizar a consulta que acha melhor. Espero ter respondido sua questão.
#5 Comentário enviado por jcb em 20/05/2013 - 14:14h
Cisfote,

seguinte, só vou conseguir executar a query se eu conseguir "quebrar" e ter acesso ao usuário root ou / admin database certo ? só assim terei acesso ao shell para poder executar as query´s!!!

abs,


[3] Comentário enviado por cristofe em 20/05/2013 - 10:44h:

Olá Jcb,

O SQL injection com SQLmap prova que o sistema tem vulnerabilidades com relação a injeção de sql, por tanto vc pode elaborar query sql para realizar a consulta que acha melhor. Espero ter respondido sua questão.


#6 Comentário enviado por cristofe em 20/05/2013 - 14:36h
Não Jcb, sua query pode ser injetada em um campo do formulário. Mas neste caso vc estarei tentando trazer a consulta na mao.
#7 Comentário enviado por cristofe em 20/05/2013 - 14:42h
nao sei o q o colega acima quer dizer com o comentário de SQL tutorial, mas se observar direito tive a preocupação de realizar a instrução para a defesa do ataque e utilzei um ambiente BSD. Não encontrei nenhum artigo nesta base e não encontrei nada demais no blog dele. acho que ele esta tentando dizer que ninguém comentou o vídeo dele e nem assistiu. ;-).

Aqui é VIVA o LINUX brow !!
;-)

#8 Comentário enviado por danniel-lara em 21/05/2013 - 13:36h
Parabéns pelo Artigo , ficou bagual
#9 Comentário enviado por cristofe em 21/05/2013 - 16:04h
Agradeço pelo comentário Danie-lara. Qualquer coisa estamos a disposiçao
#10 Comentário enviado por leorocco em 21/05/2013 - 22:31h
"É 'velho', TI não é fácil." hehe

Valeu pelo artigo, cristofe!

Mas, qual a melhor maneira de se proteger quando se usa um CMS?
#11 Comentário enviado por joaocpimenta em 22/05/2013 - 11:11h

[10] Comentário enviado por leorocco em 21/05/2013 - 22:31h:

"É 'velho', TI não é fácil." hehe

Valeu pelo artigo, cristofe!

Mas, qual a melhor maneira de se proteger quando se usa um CMS?



Os fatores de tratamento e preocupações com o código da aplicação quanto a segurança permanecem os mesmos quando se utiliza um CMS.

Além disso, os componentes e plugins do CMS devem estar sempre atualizados. Um firewall de aplicação é sempre bem vindo.
#12 Comentário enviado por marcoscsouza em 24/05/2013 - 00:51h
Excelente!
#13 Comentário enviado por cristofe em 24/05/2013 - 23:11h
Quero lhe agradecer mesmo pelo comentário marcoscsouza. Precisamos ouvir mesmo este apoio.
#14 Comentário enviado por roberto_espreto em 26/05/2013 - 18:27h
Concordo com a opinião do "nicolas.cb", este tutorial não explica o por que uma aplicação fica vulnerável a SQLi e sim como utilizar o SQLMap.
E a dica de manter tudo atualizado não quer dizer nada. A aplicação deve fazer a sanitização dos dados de entrada de cada usuário corretamente e saber como tratar sua saída.

Exemplo: Considere o seguinte código abaixo para uma página (login.php) de autenticação simples:

$resultado = pg_query("SELECT * from users WHERE uid = '".$_GET['usuario']."' AND pwd = '".$_GET['password']."';");
if (pg_query($resultado) > 0) {
echo "Login efetuado com sucesso";
user_redireciona_painel_controle();
}

O que acontece se eu passar como parâmetro a seguinte requisição?

http://site/login.php?usuario=admin'--&password=e

Como o DB vai enxergar esta consulta?

pg_query("SELECT * from users WHERE uid = 'admin'--' AND pwd = 'e';");

E agora, consigo executar comandos no db sem usar ferramentas de automação?

requisição:
http://site/login.php?usuario=admin'; SELECT @@version;--&password=e

resposta:
5.5.31-0ubuntu0.13.04.1

Para erros de SQL entre outros, recomendo seguir os guias da OWASP:

https://www.owasp.org/index.php/SQL_Injection
https://www.owasp.org/index.php/Testing_for_SQL_Injection_%28OWASP-DV-005%29
https://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection
https://www.owasp.org/index.php/Guide_to_SQL_Injection

Claro, sobre como utilizar o sqlmap, a escrita do tutorial ficou boa! :D

Abs,


#15 Comentário enviado por cristofe em 26/05/2013 - 19:23h
Boa Roberto espreto,

Não entendi muito sobre concordar com o outro rapaz e dica de deixar tudo atualizado, como vc pode ver no início do artigo que vc nao leu todo. A intensão não é esgotar o assunto. Apenas explicar como acontece o ataque. Achei interessante postar. Quem sabe vc com toda a sua sabedoria curiosa dedica um tempo, assim como fiz, e produz algo mais completo. Criticar é fácil. De qualquer forma lhe agradeço.
#16 Comentário enviado por joaocpimenta em 27/05/2013 - 17:31h
"A dica de manter tudo atualizado não quer dizer nada"

Roberto, no caso de CMS (como perguntado acima) Joomla, WP, Drupal...Manter os components atualizados é fundamental, eles viabilizam e facilitam ataques SQLi.

Obviamente não substitui o tratamento do código, mas os bancos de dados default desses CMS muitas vezes negligenciam isso, e como não é do escopo do admin tratar esses bancos, vem a necessidade de manter atualizados os components.

Segue um exemplo de exploração em cima de components desatualizados.

http://www.exploit-db.com/exploits/17136/
http://www.exploit-db.com/exploits/15453/
#17 Comentário enviado por roberto_espreto em 27/05/2013 - 22:45h
cristofe,

Não me leve a mal, só quis dizer que não concordei com o título do artigo. Acho que deveria ser do tipo: "Explorando SQLi com SQLMap". Ao final falei que ficou bom. :)
Se você escrever para alguém com conhecimento mais crítico (exemplo, professor), a primeira coisa que ele irá perguntar será: Mas o que é SQL Injection? Imagina em um TCC. :)

joaocpimenta,

Quando disse: "A dica de manter tudo atualizado não quer dizer nada", realmente não significa muita coisa (mas deve ser feito, claro), pois existem novas vulnerabilidades que são descobertas em softwares "atualizados", os chamados 0-day. Ou seja, existe uma forma de explorar o software e ainda não existe correção para tal. Como me defendo contra este tipo de vulnerabilidade (0-day)? Existem N fatores que trabalham em conjunto em uma empresa/organização para minimizar estes riscos, exemplo, firewall de aplicação (Web Application Firewall - WAF), segmentação de ambientes, hardening de sistema operacional etc. A dica de atualização, é apenas uma, dentre várias.

Abs,

#18 Comentário enviado por cristofe em 27/05/2013 - 23:05h
Ok Roberto esperto, sem problemas. Se observar não tive realmente a intenção de esgotar o assunto, haja vista que é tenso. Todavia, o foco era mesmo o SQLMap. Não entendi o q há com o título, mas esquenta não. Somente um toque, pois as pessoas que escrevem para o VOL não ganham nada, e fazem de bom agrado.
Há Sim, deixa eu te, falar sou Professor do Instituto Federal e contribuo com o VOL desde 2006 e nunca agradei a todos. É assim mesmo !!
Forte Abraco !!!
#19 Comentário enviado por joaocpimenta em 28/05/2013 - 00:06h

[11] Comentário enviado por joaocpimenta em 22/05/2013 - 11:11h:


[10] Comentário enviado por leorocco em 21/05/2013 - 22:31h:

"É 'velho', TI não é fácil." hehe

Valeu pelo artigo, cristofe!

Mas, qual a melhor maneira de se proteger quando se usa um CMS?


Os fatores de tratamento e preocupações com o código da aplicação quanto a segurança permanecem os mesmos quando se utiliza um CMS.

Além disso, os componentes e plugins do CMS devem estar sempre atualizados. Um firewall de aplicação é sempre bem vindo.


Com certeza manter os components atualizados é uma das muitas coisas a se fazer... o WAF é uma boa, como eu havia sugerido também...

Por isso eu reforço: são N ações preventivas que não eliminam umas as outras. Um WAF não elimina a necessidade de Hardening, o Hardening não elimina a necessidade de código seguro e por aí vai...

No caso dos CMS, reforcei o aspecto de atualização, porque qualquer Zé pode rodar um exploit pronto contra uma vulnerabilidade conhecida e ter eficácia num dump de base por exemplo. É uma situação comum.

Já um 0 day é muito mais raro, mas obviamente não pode ser descartado.

Enfim... Segurança são muitos aspectos, citamos alguns superficialmente.

Abraço
#20 Comentário enviado por silent-man em 28/05/2013 - 16:34h
Eu ia comentar sobre o 0 day, mas já adiantaram. Além do mais, acredito que estão desviando o foco do ARTIGO.

Aos "hackudos", como bem colocou o autor do artigo: "Sem esquecer da nossa Maria da Penha e a Lei "Carolina Dieckmann", não esqueçam de utilizar um proxy

sqlmap.conf

proxy = http://ip_servidor_proxy:80
#21 Comentário enviado por Rafaelmspc em 29/05/2013 - 17:01h
A opção do sqlmap --proxy=http://ip:porta e ainda se for usar tor, a opção. --tor.


[20] Comentário enviado por silent-man em 28/05/2013 - 16:34h:

Eu ia comentar sobre o 0 day, mas já adiantaram. Além do mais, acredito que estão desviando o foco do ARTIGO.

Aos "hackudos", como bem colocou o autor do artigo: "Sem esquecer da nossa Maria da Penha e a Lei "Carolina Dieckmann", não esqueçam de utilizar um proxy

sqlmap.conf

proxy = http://ip_servidor_proxy:80


#23 Comentário enviado por marckos em 27/06/2013 - 08:59h
Mesmo ocultando partes da url é possível saber a instituição @cristofe
#24 Comentário enviado por wagnerfs em 01/10/2014 - 11:49h
Parabéns pelo artigo. Bastante elucidativo.

Contribuir com comentário

Entre na sua conta para comentar.