<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >Instalando como binário CGI</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="Manual do PHP" HREF="index.html"><LINK REL="UP" TITLE="Segurança" HREF="security.html"><LINK REL="PREVIOUS" TITLE="Considerações Gerais" HREF="security.general.html"><LINK REL="NEXT" TITLE="Caso 1: apenas arquivos públicos são disponibilizados" HREF="security.cgi-bin.default.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="chapter" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Manual do PHP</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="security.general.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="security.cgi-bin.default.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="chapter" ><H1 ><A NAME="security.cgi-bin" >Capítulo 24. Instalando como binário CGI</A ></H1 ><DIV CLASS="TOC" ><DL ><DT ><B >Índice</B ></DT ><DT ><A HREF="security.cgi-bin.html#security.cgi-bin.attacks" >Ataque Possível</A ></DT ><DT ><A HREF="security.cgi-bin.default.html" >Caso 1: apenas arquivos públicos são disponibilizados</A ></DT ><DT ><A HREF="security.cgi-bin.force-redirect.html" >Caso 2: usando --enable-force-cgi-redirect</A ></DT ><DT ><A HREF="security.cgi-bin.doc-root.html" >Caso 3: configurando doc_root ou user_dir</A ></DT ><DT ><A HREF="security.cgi-bin.shell.html" >Caso 4: Interpretador do PHP fora da árvore de diretórios do servidor web</A ></DT ></DL ></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="security.cgi-bin.attacks" >Ataque Possível</A ></H1 ><P > Usando o PHP como binário <ACRONYM CLASS="acronym" >CGI</ACRONYM > é 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 CGI wrappers para criar ambientes chroot e setuid seguros para os scripts. Esse tipo de instalação normalmente involve copiar o binário executável para o diretório cgi-bin do servidor web. CERT advisory <A HREF="http://www.cert.org/advisories/CA-1996-11.html" TARGET="_top" >CA-96.11</A > recomenda não colocar qualquer interpretador nesse diretório. Mesmo se o binário do PHP pode ser usado como um interpretador autônomo, o PHP foi desenhado para previnir os ataques que essa forma de instalação torna possível: </P ><P ></P ><UL ><LI ><P > Acessar arquivos de sistema: <TT CLASS="filename" >http://my.host/cgi-bin/php?/etc/passwd</TT > </P ><P > A informação de consulta em uma URML depois da interrogração (?) é passada como argumentos de linha de comando para o interpretador pea interface CGI. Normalmente os interpretadores abrem e executam o arquivo especificado como primeiro argumento na linha de comando. </P ><P > Quando invocado como binárgio CGI, o PHP se recusa a interpretar os argumentos de linha de comando. </P ></LI ><LI ><P > Acessar qualquer domento web no servidor: <TT CLASS="filename" >http://my.host/cgi-bin/php/secret/doc.html</TT > </P ><P > A parte de informação de caminho da URL depois do nome do binário do PHP, <TT CLASS="filename" >/secret/doc.html</TT > é convencionalmente usada para especificar o nome do arquivo a ser aberto e interpretado pelo programa <ACRONYM CLASS="acronym" >CGI</ACRONYM > Normalmente algumas diretivas de configuração do servidor web (Apache: Action) são usadas para redirecionar requisições para documentos como <TT CLASS="filename" >http://my.host/secret/script.php</TT > para o interpretados do PHP. Dessa maneira, o servidor web primeiro checa as permissões de acesso ao diretório <TT CLASS="filename" >/secret</TT >, e depois cria a requisição redirecionada <TT CLASS="filename" >http://my.host/cgi-bin/php/secret/script.php</TT >. Infelizmente, se a requisição é dada originalmente nessa forma, a checagem de permissão não é feita para o arquivo <TT CLASS="filename" >/secret/script.php</TT >, mas apenas para o arquivo <TT CLASS="filename" >/cgi-bin/php</TT >. Dessa maneira qualquer usuário que pode acessar <TT CLASS="filename" >/cgi-bin/php</TT > pode acessar quaisquer documentos protegidos no servidor web. </P ><P > No PHP, a opção de configuração em tempo de compilação <A HREF="configure.html#configure.enable-force-cgi-redirect" >--enable-force-cgi-redirect</A > e as diretivas de configuração de tempo de execução <A HREF="ini.core.html#ini.doc-root" >doc_root</A > e <A HREF="ini.core.html#ini.user-dir" >user_dir</A > podem ser usadas para previnir 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. </P ></LI ></UL ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="security.general.html" ACCESSKEY="P" >Anterior</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Principal</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="security.cgi-bin.default.html" ACCESSKEY="N" >Próxima</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Considerações Gerais</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="security.html" ACCESSKEY="U" >Acima</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Caso 1: apenas arquivos públicos são disponibilizados</TD ></TR ></TABLE ></DIV ></BODY ></HTML >