Non sapevo se risponderti, una cosa del genere crea un buco di sicurezza enorme, ma se è per sperimentare...
Ti serve almeno un server web minimale, puoi usare quello di PHP (se hai installato php e php-cli), nato per provare codice al volo, ma non per essere usato come server pubblico.
Per esempio con:
fai partire il server accessibile da
127.0.0.1 sulla porta
1234; la document root è quella da cui viene lanciato il comando, (puoi impostarne una diversa con l'opzione
-t).
Per farti un esempio ho scritto al volo una pagina php a sicurezza zero, per provare il passaggio di dati via GET/POSTe e shell_exec().
Crea la pagina index.php contenente:
Codice: Seleziona tutto
<!DOCTYPE html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<?php
# phpinfo();
echo '<p>Ciao, sono la index</p>'."\n";
if (empty($_GET)) {
echo '<p>Non ci sono dati in $_GET<br><br>'."\n\n";
echo 'Clicca il collegamento per provare i dati GET <a href="index.php?chiave1=valore1&chiave2=valore2">link</a></p>'."\n";
}else{
echo '<br> '."\n";
echo '<p>Ok ci sono dati in $_GET:</p>'."\n";
echo '<pre>';
echo 'var_dump($_GET); : ';
var_dump($_GET);
echo '</pre>';
echo "\n".'<p>Clicca il collegamento per <strong>ricaricare la pagina senza inviare dati <a href="/">Ricarica</a></strong></p>'."\n";
}
if (empty($_POST)) {
echo '<p>Non ci sono dati in $_POST</p>'."\n";
?>
<form method="post" action="index.php">
Testo: <input type="text" name="testo" value="Qua il testo da inviare">
<input type="submit" name="submit" value="invia">
</form>
<?php
}else{
echo '<p>Ok ci sono dati in $_POST:</p>'."\n";
echo '<pre>';
echo 'var_dump($_POST); : ';
var_dump($_POST);
echo '</pre>';
if($_POST['testo'] == 'abracadabra'){
echo "<p>Hai inserito \"abracadabra\", mostro l'output di ls sulla home utente:</p>\n";
$output = shell_exec('ls /home/*');
echo "<pre>$output</pre>";
}
echo "\n".'<p>Clicca il collegamento per <strong>ricaricare la pagina senza inviare dati <a href="/">Ricarica</a></strong></p>'."\n";
}
?>
<p><a href="https://forum.ubuntu-it.org/search.php?search_id=active_topics">Discussioni attive - forum.ubuntu-it</a></p>
</body></html>
poi punti il browser all'indirizzo:
http://127.0.0.1:1234 (o
http://localhost:1234) e fai i tuoi esperimenti, modificando il codice della index, come ti pare.
Ps.: se, nel campo di testo, inserisci la stringa
abracadabra ed invii, potrai vedere l'output di
ls /home/*
Per fermare il server basta
Ctrl+c, nella fiestra del terminale.
Da quel che ho letto, per renderlo accessibile a tutte le interfacce di rete dovrai usare
0.0.0.0:NUMERO_PORTA, ma non ho provato.
Se ti interessa guarda:
https://www.php.net/manual/en/features. ... server.php
https://www.php.net/manual/en/function.shell-exec.php
sempre su php.net guarda system(), escapeshellarg(), escapeshellcmd() i filtri sanitize etc. (gli argomenti collegati, nel menù a destra).
Per impostare un minimo di sicurezza: host ammessi, pagine di errore etc. guarda:
https://www.sitepoint.com/taking-advant ... in-server/
Passo e chiudo.
Ciaux