[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: eseguire comandi da interfaccia web



io ho fatto una cosa analoga scrivendo una piccola applicazione php che faccio girare su lighttpd.
E' su un server non esposto.
Per eseguire i comandi sulla macchina uso suexec di apache (paradiga di privilege separation)
http://httpd.apache.org/docs/current/suexec.html
http://svn.apache.org/repos/asf/httpd/httpd/trunk/support/

io ho preso i sorgenti di suexec ho fatto una piccola modifica che mi serviva (vincolo sullo username / folder in cui risiedono gli script da eseguire)


Il giorno 30 gennaio 2015 16:33, Gian Uberto Lauri <saint@eng.it> ha scritto:
Pol Hallen writes:
 > mi chiedevo in che modo è possibile utilizzare un'interfaccia web per
 > riavvire un servizio (tipo samba) cliccando sul pulsante "riavvia".

Web application che reagisce ad una opportuna post.

 > Nel lato pratico: per creare l'interfaccia è meglio usare perl, php, o
 > cosa? (a memoria con html non si può... o si?)

Con html non si può, che viene interpretato dal tuo client.

O cosa.

PERL rischia di diventare read only, php pure e in ambedue i casi se
sfondi il programma sei nella macchina, oppure si scaricano i sorgenti
del programma e capiscono come funziona e come farlo malfunzionare per
i loro comodi.

Meglio un linguaggio eseguito da una VM (ruby, Python o Java).

Il tuo programma dovrebbe prendere dalla post le credenziali
dell'utente (ergo, fallo ascoltare su https e non http), verificarle e
poi fare uno shell-out per un bel "service smb restart" (o equivalente
con systemd) che a naso va eseguito con l'ID di root. Meglio usare una
api che permetta di fare lo user switch dall'interno dell'interprete
della web application.

Punti critici di sicurezza:

- l'interprete, sempre aggiornato e non deve girare come root

- la verifica delle credenziali lato server, se usi un DB e non usi un
  prepared statement apri la porta a vari tipi di attacchi di SQL
  injection (uno script kid con sqlmap può ravanarti il DB e forse la
  macchina).

- lo statement utilizzato per riavviare samba. Usare una cosa come

  "echo "$PASS_DA_POST" sudo -S -u "$USER_DA_POST" service samba restart"

  è una idea sbagliata (non si inietta solo lo SQL).

--
 /\           ___                                    Ubuntu: ancient
/___/\_|_|\_|__|___Gian Uberto Lauri_____               African word
  //--\| | \|  |   Integralista GNUslamico            meaning "I can
\/                 coltivatore diretto di software       not install
     già sistemista a tempo (altrui) perso...                Debian"

Warning: gnome-config-daemon considered more dangerous than GOTO


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-REQUEST@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmaster@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: [🔎] 21707.42039.768804.774083@mail.eng.it" target="_blank">https://lists.debian.org/[🔎] 21707.42039.768804.774083@mail.eng.it




--
Bi e a, bi e e, ba be, bi e i, ba be bi, bi e o, ba be bi bo
bi e u, bu, ba be bi bo bu
Ci e a, ci e e, ca ce, ci e i, ca ce ci, ci e o, ca ce ci co
ci e u, cu, ca ce ci co cu


Reply to: