CentOS 6: envía comandos definidos por el usuario desde PHP

CentOS 6: envía comandos definidos por el usuario desde PHP

Tengo un panel de control web y necesito permitir que mis usuarios envíen comandos a su aplicación.

Tengo un problema similar a la inyección SQL.

$user_input='good command';
shell_exec('tmux send-keys session1:0 "'.$user_input.'" C-m');

Esto enviaría el comando tmux send-keys session1:0 "good command" C-m, lo cual está bien.

Pero el usuario también podría escribir algún otro.

$user_input='good command" C-m | rm / | tmux send-keys sessionUserMayNotDoAnyThingIn:0 "some command';
shell_exec('tmux send-keys session1:0 "'.$user_input.'" C-m');

Esto enviaría el comando.tmux send-keys session1:0 "good command" C-m | rm / | tmux send-keys sessionUseerMayNotDoAnyThingIn:0 "some command" C-m

(Eso enviaría 3 comandos)

tmux send-keys session1:0 "good command" C-m
rm /
tmux send-keys sessionUseerMayNotDoAnyThingIn:0 "some command" C-m

Entonces ¿cuál es la solución para esto?

Respuesta1

Puede usarlo escapeshellcmd()para escapar de comandos (primer token) y escapeshellarg()para escapar de argumentos.

información relacionada