Restringe l'utente all'esecuzione dei comandi della shell usando PHP

6

Diciamo che ho condiviso l'hosting e voglio proteggere quel posto, dall'esecuzione dei comandi della shell. Ho installato suphp, in modo che gli utenti possano eseguire PHP separatamente. Ho anche fatto altre cose per proteggere il server (basato su e altre impostazioni raccomandate all'interno di php.ini).

Ma il problema è ancora lì: (posso eseguire e leggere i file di configurazione di altri siti web)

<?php echo exec('cat /var/www/website/config.php'); ?>

Se disattivo la funzione exec, ci sono ancora altri modi per scoprire le informazioni sensibili dal server.

Che cosa posso fare? Posso disabilitare i comandi della shell di Unix per utenti specifici, avrà effetto?

Modifica: ho modificato la premessa su bin 754, prima che fosse 755, e ora gli utenti non sono in grado di eseguire comandi di shell usando PHP. È una soluzione o no?

    
posta Mirsad 01.02.2016 - 07:02
fonte

2 risposte

2

Disabilita exec e suexec, abilita open_basedir e in pratica segui ogni suggerimento in questo post .

Hai menzionato still there are other ways to... se dopo aver letto quel post hai ancora domande o punti deboli, per favore pubblicali qui o in Serverfault

    
risposta data 01.02.2016 - 09:46
fonte
1

I'v changed premission on bin 754, before it was 755, and now users are unable to run shell commands using PHP.

Penso che questa sia una soluzione interessante. Ma la separazione delle regole di sicurezza non è conveniente per gli utenti specifici in questo caso.

Vorrei suggerire alcuni altri modi:

  1. Esegui apache come chroot . Ma richiede una configurazione complessa. Permette di creare uno spazio di esecuzione "isolato" per ogni host virtuale (utente di esecuzione). A mio parere, il buon esempio qui descritto: Domande frequenti su Apache + Chroot + FastCGI + PHP

  2. Esegui apache e php all'interno del contenitore Docker. È la soluzione più moderna per l'isolamento di vhost. Ma richiede anche una configurazione complessa.

  3. Disabilita le funzioni potenzialmente pericolose tramite la disable_functions direttiva in php.ini . Questo è un modo più semplice e meno sicuro. Ad esempio:

    disable_functions=dl,system,exec,passthru,shell_exec,stream_select,popen,proc_open,proc_nice,ini_set

Le funzioni potenzialmente pericolose possono essere trovate qui: Funzioni limitate / disabilitate in modalità provvisoria .

    
risposta data 17.09.2017 - 20:40
fonte

Leggi altre domande sui tag