SuPHP può causare problemi di sicurezza a causa del dirottamento degli account delle persone?

2

Tenete a mente che, sebbene io sia abbastanza bravo a codificare clientide javascript, non sono così bravo a gestire PHP serveride. Non aiuta che ci siano pochissime informazioni / tutorial / API su suPHP. Presumo che tu lo usi esattamente come PHP e che magicamente sappia eseguire tutti gli script come proprietario di quello script.

Sto creando un sito web dinamico che consente agli utenti di caricare script ed eseguirli. Al momento questo è limitato a javascript ma voglio anche consentire loro di eseguire script PHP serveride. Poiché l'utente Apache predefinito è www-data , voglio usare suPHP. La mia idea è di creare uno script intermedio, chiamiamolo load.php , che accetta come argomento lo script di destinazione dell'utente, chiamiamolo target.php . load.php quindi controlla se l'utente possiede target.php , e se lo fa, lancia target.php .

Ma allora che cosa deve fermare l'utente all'interno di target.php che emette un comando come (non sono sicuro che questo esempio sia accurato in quanto non riesco a trovare alcuna documentazione su suPHP).

shell_exec("suphp /home/someOtherUser/test.php");

suPHP ha bisogno della password di un utente per eseguire questi script?

Janne Pikkarainen ha sottolineato che suPHP viene avviato come root, quindi passa al proprietario di un file prima di eseguirlo . Quindi ora ho due domande.

  1. Se lo script PHP eseguito da suPHP (come proprietario, consente di chiamarlo utente1) a sua volta contiene shell_exec("php /home/user2/test.php"); , restituirà un errore dal momento che utente1 sta tentando di avviare lo script di user2, altrimenti suPHP eseguirà nuovamente il kick e cambierà da utente1 a utente2.
  2. che cosa impedisce all'utente1 di eseguire codice javascript / HTML come <form action="/home/user2/test.php" method="get"> ?
posta puk 04.11.2011 - 12:15
fonte

1 risposta

7

(nella voce di Darth Vader): NOOOOOOOOOOOOOOOOOOOOOOO

Questo non è il modo in cui usi o configuri suPHP. Anche se in qualche modo riesci a farlo funzionare in quel modo, è più pericoloso che utile.

SuPHP dovrebbe essere configurato a livello di Apache (o qualunque sia il tuo server web). L'idea è di far funzionare ApPHPHPHP invece del normale mod_php.

In che modo suPHP capisce in base a quale account eseguire lo script in quanto non è magico; lo vede semplicemente dal proprietario del file. All'inizio suPHP viene eseguito come root, e prima di eseguire lo script cambia semplicemente l'utente a essere il proprietario del file, eliminando i privilegi di root.

EDIT dopo la tua modifica: No. Lascia che ti spieghi un'altra volta. non puoi e non dovrebbe nemmeno tentare di eseguire suPHP tramite shell_exec di PHP. Non è una sua idea. Niente affatto.

suPHP appartiene al file di configurazione di Apache httpd.conf , non nei singoli script PHP. Non c'è eccezione a riguardo.

Ecco la documentazione di configurazione di suPHP per te.

    
risposta data 04.11.2011 - 12:22
fonte

Leggi altre domande sui tag