View
305
Download
3
Category
Preview:
Citation preview
File Inclusion
[+] O que é?[+] O que é?
– – É uma técnica (maliciosa no caso) que É uma técnica (maliciosa no caso) que ocorre na funções ocorre na funções include()/require()include()/require() do do PHPPHP, ela é possível quando tais funções , ela é possível quando tais funções não foram devidamente sanitizadas não foram devidamente sanitizadas possibilitando a inclusão de arquivos.possibilitando a inclusão de arquivos.
*Lembrando que nesta apresentação será mostrado*Lembrando que nesta apresentação será mostrado File Inclusion File Inclusion em em servers usando servers usando LinuxLinux que utilizam que utilizam PHP PHP, contudo está técnica não está , contudo está técnica não está restrito apenas a essas tecnologias.restrito apenas a essas tecnologias.
File Inclusion
[+] O que é (funções)?[+] O que é (funções)?
– – IInclude()nclude(): Executa arquivos dentro do : Executa arquivos dentro do php scriptphp script no qual se encontra a função. no qual se encontra a função. Útil para refletir o mesmo conteúdo no site.Útil para refletir o mesmo conteúdo no site.
– – Require()Require(): Idêntica ao : Idêntica ao include()include() exceto exceto por uma coisa: Caso aconteça um erro, o por uma coisa: Caso aconteça um erro, o script é interrompido ao contrário do script é interrompido ao contrário do include() include() no qual o erro é ignorado.no qual o erro é ignorado.
File Inclusion
[+] [+] Include()Include() demo: demo:
File Inclusion
[+] Tipos de inclusão:[+] Tipos de inclusão:
– – Existe dois tipo de inclusão, a remota Existe dois tipo de inclusão, a remota (A preferida dos atacantes) e local. Para (A preferida dos atacantes) e local. Para fins de fins de estastitica, a empresa de segurança , a empresa de segurança da informação, da informação, ImpervaImperva, relatou que 21% , relatou que 21% dos ataques em aplicações web em 2011 dos ataques em aplicações web em 2011 foram utilizadas foram utilizadas File InclusionFile Inclusion..
File Inclusion
[+] Como funciona?[+] Como funciona?
Código vulnerável:Código vulnerável:
Simples ataque:Simples ataque:
File Inclusion
[+] Remote File Inclusion:[+] Remote File Inclusion:
– – allow_url_include = “on”allow_url_include = “on”
– – A mais fácil e preferida dos atacantes.A mais fácil e preferida dos atacantes.
– – Porém a menos comum já que desde Porém a menos comum já que desde da versão 5.2 do da versão 5.2 do phpphp, o , o allow_url_includeallow_url_include vem desativado.vem desativado.
File Inclusion
File Inclusion
*Shell? É uma web backdoor, se a linguagem na qual foi escrita é compativel com o web server então é *Shell? É uma web backdoor, se a linguagem na qual foi escrita é compativel com o web server então é possível a execução dos mais variados comandos que a linguagem permite. Para roda-la em formato .txt possível a execução dos mais variados comandos que a linguagem permite. Para roda-la em formato .txt devemos utilizar '?' no final.devemos utilizar '?' no final.
File Inclusion
[+] Local File Inclusion:[+] Local File Inclusion:
– – Mais comum, portanto mais focada.Mais comum, portanto mais focada.
– – Pode levar a execução de um RFIPode levar a execução de um RFI
File Inclusion
[+] Local File Inclusion[+] Local File InclusionSe conseguirmos visualizar, veremos o Se conseguirmos visualizar, veremos o
nosso nosso User AgentUser Agent. Lembre que qualquer . Lembre que qualquer campo de um campo de um http header (User agent, http header (User agent, cookie, etc.cookie, etc.) é passível de inclusão . Então ) é passível de inclusão . Então utilizaremos o utilizaremos o Mozzila addon: Tamper DataMozzila addon: Tamper Data para modificar o nosso para modificar o nosso requestrequest que contem o que contem o User Agent. User Agent.
Php codePhp code usando a função usando a função system system que permite a que permite a execução de comandos.execução de comandos.
File Inclusion
[+] Técnicas alternativas:[+] Técnicas alternativas:
– – Foram mostradas as técnicas Foram mostradas as técnicas clássicas, entretanto ás vezes o clássicas, entretanto ás vezes o apache/IIS/etc. apache/IIS/etc. Não tem permissão para Não tem permissão para acessar tais arquivos como acessar tais arquivos como /etc/passwd, /etc/passwd, /proc/self/environ, etc. /proc/self/environ, etc. Ou simplesmente Ou simplesmente não conseguimosnão conseguimos.. Então é sempre bom Então é sempre bom testar essas técnicas alternativas a seguir.testar essas técnicas alternativas a seguir.
* Lembrando que será usado * Lembrando que será usado php wrappersphp wrappers que são nada mais menos que que são nada mais menos que streamsstreams, funções , funções nativas que permitem a leitura e escrita de arquivos no servernativas que permitem a leitura e escrita de arquivos no server
File Inclusion
[+] PHP://filter/:[+] PHP://filter/:
* Leitura do conteúdo de qualquer arquivo no server. O conteúdo é convertido em * Leitura do conteúdo de qualquer arquivo no server. O conteúdo é convertido em base64base64 e exibido e exibido na página.na página.
File Inclusion
[+]: PHP://input[+]: PHP://input
* Usando o * Usando o http Post methodhttp Post method, mandamos um , mandamos um php code.php code.
File Inclusion
[+] Php://data[+] Php://data
– – Caso o Caso o magic_quotes_gpcmagic_quotes_gpc esteja ativado teremos que esteja ativado teremos que converter o converter o php codephp code em em base64base64 e usar a variável global e usar a variável global REQUESTREQUEST. . magic_quotes_gpcmagic_quotes_gpc é uma configuração do é uma configuração do phpphp na na qual qualquer apostrofo, aspas, etc, são substituídos por uma qual qualquer apostrofo, aspas, etc, são substituídos por uma barra (\)barra (\)
File Inclusion
[+] Técnicas avançadas:[+] Técnicas avançadas:
– – As técnicas alternativas, por si só já são As técnicas alternativas, por si só já são avançadas visto que poucos atacantes as avançadas visto que poucos atacantes as usam.usam.
– – As avançadas que serão mostradas As avançadas que serão mostradas envolve envolve poisoning logs*poisoning logs* na qual é um na qual é um pouco restrito pois geralmente o acesso pouco restrito pois geralmente o acesso não é permitido. não é permitido.
* poisoning logs? Sim, haja vista que o site pode estar recebendo vários acessos ao mesmo * poisoning logs? Sim, haja vista que o site pode estar recebendo vários acessos ao mesmo tempo, teremos que literalmente floodar os logs com nossas requisições.tempo, teremos que literalmente floodar os logs com nossas requisições.
File Inclusion
[+] Error Log Poisoning:[+] Error Log Poisoning:
–– Mandando um Mandando um php code php code por por telnettelnet, o parâmetro , o parâmetro cmdcmd ficará gravado nos ficará gravado nos logs. Se tivermos acesso, basta acessa-los e depois executar outros logs. Se tivermos acesso, basta acessa-los e depois executar outros comandoscomandos
File Inclusion
[+] Error Log Poisoning:[+] Error Log Poisoning:
– – Caso não seja possível por Caso não seja possível por telnet, telnet, podemos enviar o podemos enviar o php code php code pelo browser.pelo browser.
*Url enconding? SIm, no começo da era da Internet, o conjunto de caracteres ASCII *Url enconding? SIm, no começo da era da Internet, o conjunto de caracteres ASCII foram os primeiros a existir permitindo a troca de informações, exemplo, o apostrofo em foram os primeiros a existir permitindo a troca de informações, exemplo, o apostrofo em url encoding/ASCII é %27url encoding/ASCII é %27
File Inclusion
* Lista de possíveis locais onde os logs podem ser armazenados* Lista de possíveis locais onde os logs podem ser armazenados
File Inclusion
[+] Access Log Poisoning:[+] Access Log Poisoning:
– – Mesmo conceito que a técnica Mesmo conceito que a técnica Error LogError Log poisoningpoisoning porém mesma execução que o porém mesma execução que o /proc/self/environ/proc/self/environ
File Inclusion
[+] /proc/self/fd/*:[+] /proc/self/fd/*:
– – Mesmo conceito que a técnica Mesmo conceito que a técnica Error LogError Log poisoning, poisoning, contudo o log só sera contudo o log só sera armazenado caso o armazenado caso o requestrequest resulte em um resulte em um 404 http code404 http code. Tem a mesma execução que . Tem a mesma execução que o o /proc/self/environ /proc/self/environ entranto o entranto o header fieldheader field é o é o RefererReferer
File Inclusion
* Na segunda imagem, podemos ver os logs armazenados indicando requests que * Na segunda imagem, podemos ver os logs armazenados indicando requests que resultaram em um 404 http coderesultaram em um 404 http code
File Inclusion
– – Após gerarmos um log com 404 http code e no campo do referer Após gerarmos um log com 404 http code e no campo do referer um php code, ao acessarmos novamente o /proc/self/fd/* veremos um php code, ao acessarmos novamente o /proc/self/fd/* veremos que o comando foi executado. Sendo assim, nos dá a possibilidade que o comando foi executado. Sendo assim, nos dá a possibilidade de upar nossa shellde upar nossa shell
File Inclusion
[+] Métodos de evasão[+] Métodos de evasão
Upload (alternativos)Upload (alternativos)
Nullbytes*Nullbytes*
* Ás vezes programadores botam “php” no final da função* Ás vezes programadores botam “php” no final da função include() include(), então se tentarmos um , então se tentarmos um file inclusionfile inclusion ficaria ficaria /etc/passwd.php. /etc/passwd.php. Para isso os Para isso os NullbytesNullbytes interrompe a leitura da url. interrompe a leitura da url.
File Inclusion
[+] Como se proteger?[+] Como se proteger?
File Inclusion
[+] Agradecimentos:[+] Agradecimentos:
Antagonism e HoodedR0b!n (Hackforums Antagonism e HoodedR0b!n (Hackforums members)members)
DVWA developers (Vulnerable web DVWA developers (Vulnerable web application)application)
Imperva (Security enterprise)Imperva (Security enterprise)
Recommended