Tentando instalar o php-cgi / Apache / Ubuntu 14.04

2

Estou tentando usar o "Php reverse shell" para fins escolares no meu Ubuntu 14.04 limpo e instalado. Eu configurei meu Apache / PHP / MySQL como faço normalmente.

Eu preciso da função php "pcntl_fork ()" funcionando. Para que funcione, preciso usar o PHP-CGI, mas não consigo trabalhar depois de 6 horas de tentativas.

Este é o último tutorial que eu segui: link

Eu tive alguns problemas e agora estou tentando resolvê-los. É assim que meu arquivo .conf se parece no momento:

<VirtualHost *:80>
            # The ServerName directive sets the request scheme, hostname and port t$
            # the server uses to identify itself. This is used when creating
            # redirection URLs. In the context of virtual hosts, the ServerName
            # specifies what hostname must appear in the request's Host: header to
            # match this virtual host. For the default virtual host (this file) this
            # value is not decisive as it is used as a last resort host regardless.
            # However, you must set it for any further virtual host explicitly.
            #ServerName www.example.com

            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html
            ScriptAlias /cgi-bin/ /usr/bin/

            Action cgi-handler /cgi-bin/php-cgi
            AddHandler cgi-handler .php

            <Directory /usr/bin>
                    Require all granted
                    Options FollowSymLinks
            </Directory>

            <Directory /var/www/html/>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                    Order Allow,Deny
                    Allow from all
            </Directory>

            # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
            # error, crit, alert, emerg.
            # It is also possible to configure the loglevel for particular
            # modules, e.g.
            #LogLevel info ssl:warn

            ErrorLog ${APACHE_LOG_DIR}/error.log
            CustomLog ${APACHE_LOG_DIR}/access.log combined

            # For most configuration files from conf-available/, which are
            # enabled or disabled at a global level, it is possible to
            # include a line for only one particular virtual host. For example the
            # following line enables the CGI configuration for this host only
            # after it has been globally disabled with "a2disconf".
            #Include conf-available/serve-cgi-bin.conf
    </VirtualHost>

Estou recebendo este erro:

404-não encontrado

O URL solicitado /cgi-bin/php-cgi/test.php não foi encontrado neste servidor.

Alguém que pode me ajudar? Obrigado antecipadamente.

Edit: Eu já tentei o FastCGI, mas o pcntl_fork () ainda se recusou a funcionar.

    
por J Vos 26.12.2014 / 20:29

1 resposta

1

Versão resumida:

Supondo que o URL solicitado era link , com a configuração do seu apache, um executável do php-cgi deve ser colocado em / usr / bin pasta e deve ser executável pelo usuário do Apache. Além disso, o script test.php deve estar presente em / var / www / html

Versão longa / completa:

Com base na configuração que você relatou, ao solicitar o URL link , entre muitas outras coisas, seu Apache:

  • veja que é um pedido que termina em ".php" e, portanto, devido à diretiva AddHandler e à Ação relacionada, decida que precisa iniciar um aplicativo CGI "/ cgi-bin / php-cgi"; / p>

  • como para a diretiva ScriptAlias, decida que o aplicativo CGI "/ cgi-bin / php-cgi" é mapeado, dentro do sistema de arquivos subjacente, para o "/ usr / bin / php-cgi" completo nome do caminho. Daí ...

  • O Apache lançará "/ usr / bin / php-cgi" (que deve existir e ser executável pelo Apache), tomando o cuidado de adicionar referência ao script real a ser executado (por PHP; no seu caso " test.php ") definindo várias variáveis de ambiente (PATH_INFO, PATH_TRANSLATED, QUERY_STRING, SCRIPT_NAME e outras).

Devido ao acima exposto, supondo que exista "/ usr / bin / php-cgi" em seu sistema de arquivos e é executável pelo seu Apache:

  • seguintes variáveis de ambiente são definidas (pelo Apache):
SCRIPT_NAME: /cgi-bin/php-cgi
PATH_INFO: /test.php
PATH_TRANSLATED: /var/www/html/test.php
  • com o ambiente acima, / usr / bin / php-cgi é lançado;

  • uma vez iniciado, o php-cgi irá procurar o script para executar, conforme especificado pela variável de ambiente PATH_TRANSLATED;

  • O php-cgi tentará abrir e ler "/var/www/html/test.php" e ...

  • execute-o.

Como seu Apache está pesquisando /cgi-bin/php-cgi/test.php, eu suspeito que ele não esteja reconhecendo o executável do php-cgi dentro da pasta / usr / bin.

Sugiro verificar novamente toda a configuração, garantindo que:

  • php-cgi é um executável em / usr / bin. Por favor, note que o Ubuntu comum usa um binário / usr / bin / php5-cgi (com um "5" adicionado);
  • seus scripts PHP são armazenados em / var / www / html
  • seu URL está no formato: link
  • em caso de mais problemas, verifique seu arquivo de log, comumente localizado em /var/log/apache/error.log

Uma nota final

Eu strongmente discordo em ter todo o / usr / bin acessível para aplicativos CGI: por favor, considere armazenar seus CGIs em outro lugar (/ var / www / cgi-bin ou / usr / lib / cgi bin ou qualquer outro), especialmente se o seu for um servidor web "público".

    
por 27.12.2014 / 00:38