<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/security.cgi-bin.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'security.cgi-bin.attacks.php',
    1 => 'Ataque Poss&iacute;vel',
    2 => 'Ataque Poss&iacute;vel',
  ),
  'up' => 
  array (
    0 => 'security.cgi-bin.php',
    1 => 'Instalando como bin&aacute;rio CGI',
  ),
  'prev' => 
  array (
    0 => 'security.cgi-bin.php',
    1 => 'Instalando como bin&aacute;rio CGI',
  ),
  'next' => 
  array (
    0 => 'security.cgi-bin.default.php',
    1 => 'Caso 1: apenas arquivos p&uacute;blicos s&atilde;o disponibilizados',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'security/cgi-bin.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="security.cgi-bin.attacks" class="sect1">
    <h2 class="title">Ataque Possível</h2>
    <p class="simpara">
     Usando o PHP como binário <abbr title="Common Gateway Interface">CGI</abbr> é uma opção de
     instalação que por alguma razão não deseja integrar o PHP como um
     módulo no servidor (como o Apache), ou usará o PHP com
     tipos diferentes de empacotadores <abbr title="Common Gateway Interface">CGI</abbr> para criar ambientes
     <strong class="command">chroot</strong> e <strong class="command">setuid</strong> seguros
     para os scripts. Esta configuração geralmente envolve a instalação
     do binário <strong class="command">php</strong> executável para o diretório <var class="filename">cgi-bin</var> do servidor web.
     A CERT Advisory <a href="http://www.cert.org/advisories/CA-1996-11.html" class="link external">&raquo;&nbsp;CA-96.11</a> recomenda
     não colocar nenhum interpretador em <var class="filename">cgi-bin</var>.
     Mesmo se o binário <strong class="command">php</strong> possa ser usado como um interpretador autônomo,
     o PHP foi projetado para evitar os ataques que essa forma de instalação torna possível:
    </p>
    <ul class="itemizedlist">
     <li class="listitem">
      <span class="simpara">
       Acessar arquivos de sistema: <var class="filename">http://my.host/cgi-bin/php?/etc/passwd</var>
      </span>
      <span class="simpara">
       A informação de consulta em uma URL depois da interrogação (<code class="literal">?</code>) é
       passada como argumentos de linha de comando para o interpretador pela
       interface CGI. Normalmente os interpretadores abrem e executam o arquivo
       especificado como primeiro argumento na linha de comando.
      </span>
      <span class="simpara">
       Quando invocado como binário CGI, o <strong class="command">php</strong> se recusa a interpretar os
       argumentos de linha de comando.
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       Acessar qualquer domento web no servidor: <var class="filename">http://my.host/cgi-bin/php/secret/doc.html</var>
      </span>
      <span class="simpara">
       A parte de informação de caminho da URL depois do nome do binário do PHP,
       <var class="filename">/secret/doc.html</var> é
       convencionalmente usada para especificar o nome do arquivo a ser
       aberto e interpretado pelo programa <abbr title="Common Gateway Interface">CGI</abbr>
       Normalmente algumas diretivas de configuração do servidor web (Apache:
       <code class="literal">Action</code>) são usadas para redirecionar requisições para documentos como
       <var class="filename">http://my.host/secret/script.php</var> para o
       interpretados do PHP. Dessa maneira, o servidor web primeiro checa
       as permissões de acesso ao diretório <var class="filename">/secret</var>, e depois cria a
       requisição redirecionada <var class="filename">http://my.host/cgi-bin/php/secret/script.php</var>.
       Infelizmente, se a requisição é dada originalmente nessa forma,
       a checagem de permissão não é feita para o arquivo <var class="filename">/secret/script.php</var>, mas apenas para o arquivo
       <var class="filename">/cgi-bin/php</var>. Dessa maneira
       qualquer usuário que pode acessar <var class="filename">/cgi-bin/php</var> pode acessar quaisquer
       documentos protegidos no servidor web.
      </span>
      <span class="simpara">
       No PHP, as diretivas de tempo de execução <a href="ini.core.php#ini.cgi.force-redirect" class="link">cgi.force_redirect</a>, <a href="ini.core.php#ini.doc-root" class="link">doc_root</a> e <a href="ini.core.php#ini.user-dir" class="link">user_dir</a> podem ser usadas para prevenir
       esse ataque, se a árvore de documentos do servidor tiver qualquer diretório
       com restrições de acesso. Veja abaixo para uma explicação completa
       de combinações diferentes.
      </span>
     </li>
    </ul>
   </div><?php manual_footer($setup); ?>