Questões de segurança do comando Running com script PHP

1

Eu quero executar um programa de linha de comando com script PHP. Quais são os problemas de segurança de fazer isso no VPS?

Eu ouvi muito que isso não é seguro. Mas quer saber exatamente como? Além disso, qual será a melhor maneira de executar o comando.

EDIT: Eu quero rodar o cutycapt (uma ferramenta de captura de tela) junto com o xvfb-run (janela virtual). Por isso, vai exigir privilégios.

    
por Ankit 03.11.2011 / 11:13

3 respostas

2

Permitir que o seu script execute ferramentas de linha de comando pode ou não ser seguro. Depende muito do que você está fazendo.
Considere os dois cenários a seguir:

  1. Um script que executa ls /tmp e exibe a saída
    Isso provavelmente está bem. Você pode ter um vazamento de informações (alguém acessando a página conhece o conteúdo de /tmp no servidor, o que pode dar a eles ideias sobre como ignorar sua segurança).

  2. Um script que grep s para uma string especificada pelo usuário em um arquivo
    Isso provavelmente não é NOT : o script chamará algo como system("grep $user_string /some/file") e um atacante criativo poderá descobrir o que está fazendo, inserir um ; extra no $user_string bit e depois executá-lo código arbitrário como usuário do servidor da Web.

Existem passos de mitigação que você pode tomar para lidar com (2) acima (o PHP tem escapeshellarg () e escapeshellcmd () para ajudá-lo (a), mas o resultado final é sempre que você permitir um aplicativo da Web para executar comandos que você abre para ataques de injeção de comando e precisa planejar, auditar e proteger completamente seu código (incluindo o comando que está chamando) para garantir que você não fique aberto a ataques.

Se o que você está tentando fazer pode ser realizado com PHP nativo (gravado com segurança), que é quase sempre uma opção melhor para velocidade e segurança.

    
por 03.11.2011 / 17:42
0

Para executar coisas sob o apache, incluindo via PHP, com privilégios, parece haver algum acordo de que passwordless sudo é a ferramenta certa.

como faço para executar o root ações de uma conta não-raiz? é uma resposta minha que discutiu isso com mais detalhes e dá exemplos, que parece ter recebido alguma aprovação.

    
por 03.11.2011 / 11:41
0

O que eu sugiro é que eu escreva um script de shell que inclua todos e quaisquer comandos que precisem ser executados. Portanto, o PHP não executaria o comando diretamente, em vez de usar o script wrapper para realizar o que é necessário. Além disso, você pode usar sudo e editar sudoers conforme necessário para ajudá-lo a executar comandos que precisam de privilégios mais altos.

    
por 03.11.2011 / 11:43