Finalmente ho un po’ di tempo da dedicare a questo post..
Trascorrendo molto tempo tra i banchi del Politecnico di Milano, prima o poi, si sente la necessità di collegarsi alla shell ssh sulla quale ci sarebbe da lanciare un paio di comandi al volo. Ci sono tante soluzioni a questo problema, pienamente lecite, con caratteristiche differenti.
La prima che mi viene in mente è quella del tunneling su https, che consente di arrivare ad avere anche una vpn. Questo rappresenta un vantaggio per la flessibilità e la completezza dell’accesso che si guadagna. Per contro, richiede che ci sia un servizio attivo su una porta particolare configurato sul server cui connettersi. Il proxy del Politecnico, infatti, non permette la http connect su porte arbitrarie. Se si ha la possibilità di configurare a pieno il server dall’altra parte, questa è sicuramente la soluzione più adatta. Si possono fare considerazioni di opportunità a riguardo, ma le lascio al buon senso di ognuno.
Se invece non si può/vuole arrivare a tanto, ed era il mio caso, si può usare un approccio diverso. Io cercavo qualcosa che mi desse una shell sulla porta 80, con interfaccia web possibilmente. L’ideale per non avere problemi di firewall nè al poli nè altrove..
Dopo un po’ di ricerche ho trovato Ajaxterm. Seguendo una guida molto semplice ho ottenuto che Ajaxterm fosse accessibile solo su https. Ho inoltre provveduto a settare un minimo di protezione per accedere ad Ajaxterm stesso, per diminuire il rischio di attacchi.
Ajaxterm offre anche delle caratteristiche molto interessanti di usabilità, se usato con un browser come firefox (meglio non usare chrome) riguardo la possibilità di usare i tasti funzione, ctrl, e se si consente l’accesso di javascript agli appunti, si può anche incollare testo nel terminale.
Naturalmente questa soluzione non è il massimo della flessibilità, ad esempio non consente di usare scp per copiare file dalla macchina remota. Se a questo si può rimediare semplicemente mettendo i file da scaricare nella document root di apache, diverso è il caso in cui si volesse caricare dei file sulla macchina remota. Se il protocollo ftp non è consentito, un workaround può essere quello di utilizzare un servizio esterno o una pagina php per effettuare gli upload. Magari scriverò qualcosa a riguardo più in là..
E voi, come fate per accedere alla shell remota da reti proxate?
La ajax-shell è una soluzione che ponderavo anch’io, ma che è stata bocciata dai miei coninquilini virtuali (per inciso condivido un server con Radu) per ragioni si sicurezza.
Nel caso specifico del Poli, c’è chi afferma che il traffico non sia filtrato anche in base al contenuto (pacchetti http) ma meramente per la porta di destinazione.
Una soluzione, anche se poco elegante, sarebbe fare ascoltare sshd in una porta che il poli-fascist-firewall consideri legittima.
Non sono troppo d’accordo sui problemi di sicurezza, una volta che la cosa è configurata _almeno_ come ho fatto io. Dopo tutto esegue login (se si usa root come username) o ssh localhost (per gli altri utenti). Non vedo molto spazio per manovre illecite, non più di quanto non ci sia su ssh stesso. Inoltre i dati vengono inviati in post, che elimina il rischio che rimangano loggati dal proxy / apache. Se poi usi https sei a posto del tutto.
Riguardo il proxy del poli, se lo scrivo è perchè è stato esplicitamente chiesto a chi gestisce
Bene allora ripresenterò la mozione ajax, visto che una shell per lo sviluppo rails è necessaria.
C’è una certa diffidenza in tutto ciò che contiene la parola javascript (e php in minor frequenza), e dopo aver visto in opera gli attackers ai briefing CTF capisco anche il perchè
Sante ma perchè non provi ad usare corkscrew che a me andava alla perfezione???
http://www.agroman.net/corkscrew/
L’unica cosa è che devi settare il servizio sshd sul server sulla porta 443.
Ciao
Hendrix
Il proxy del Politecnico, infatti, non permette la http connect su porte arbitrarie
Ma siamo proprio sicuri io ho molti dubbi a riguardo…
se hai una risp dall’asi passala in lista
Hendrix
Sicuri.. Non posso girare la mail, però anche le prove che ho fatto io confermano (l’autenticazione NTLM non c’entra).
Corkscrew, appunto, richiede di configurare ssh su una porta che nel mio caso è già occupata.
Poi ne riparliamo e mi mistri la tual soluzione
Ciao
Hendrix