{"id":419,"date":"2006-11-06T01:30:26","date_gmt":"2006-11-06T00:30:26","guid":{"rendered":"http:\/\/www.zarrelli.org\/new_blog\/?p=419"},"modified":"2006-11-06T01:30:26","modified_gmt":"2006-11-06T00:30:26","slug":"aprire-ssh-su-la-fonera-senza-aprirla","status":"publish","type":"post","link":"https:\/\/www.zarrelli.org\/blog\/aprire-ssh-su-la-fonera-senza-aprirla\/","title":{"rendered":"Aprire ssh su La Fonera, senza aprirla"},"content":{"rendered":"<p>Dando un&#8217;occhiata a <a href=\"http:\/\/fonblog.wordpress.com\/2006\/11\/05\/a-ssh-access-to-la-fonera-without-phisical-hack\/\" target=\"_blank\">Dema FON Blog<\/a> ho notato la notizia che riportava la creazione di uno script Perl da parte di Stefan Tomanek, script in grado di modificare le configurazioni della FONERA e quindi di &#8220;aprirla&#8221;.<\/p>\n<p>In effetti, Tomanek spiega abbastanza chiaramente sul proprio <a href=\"http:\/\/stefans.datenbruch.de\/lafonera\/\" target=\"_blank\">sito<\/a> il perch\u00e9 si riesca a fare questo: in pratica, La Fonera chiama casa (download.fon.com) a ogni riavvio e si scarica via ssh, su porta 1937 i dati di configurazione della rete, SSID e password.<\/p>\n<p>Occhio, ora: il SSID pu\u00f2 essere impostato dalla propria pagina personale sul sito di FON e in seguito questo dato viene trasferito al proprio router via ssh, che salva il tutto in uno script temporaneo sul router stesso e lo esegue. Lo script, quindi, si occupa di alterare le configurazioni. Ora, Tomanek ha giustamente pensato&#8230;&#8221;Se si riuscisse a iniettare del codice e a farlo eseguire&#8230;&#8221;<\/p>\n<p>In effetti, in FON hanno ben pensato di sottoporre tutti i valori a quoting stretto, usando degli apici singoli, in modo che non si potessero alterare in maniera troppo semplice i valori inseriti nello script. Oltretutto, hanno ben pensato di sostituire ogni occorrenza di un apice singolo con \\&#8217;, in modo da sottoporre a escaping un eventuale apice singolo iniettato e impedirgli di chiudere arbitrariamente le stringhe di configurazione.<\/p>\n<p>Peccato che nello shell scripting, un apice singolo non possa venire sottoposto a escaping.<\/p>\n<p>Quindi, Tomanek ha alterato la stringa<\/p>\n<p><code>iwconfig ath0 essid FON_'YOURPUBLICESSID'<\/code><\/p>\n<p>in modo da aggiungere un ulteriore apice singolo, la definizione di una regola di iptables, un carattere di newline e quindi l&#8217;istruzione necessaria a lanciare dropbear.<\/p>\n<p>Il tutto viene eseguito tramite uno script Perl basato sulla libreria WWW::Mechanize, in grado di simulare un client web e di oltrepassare le protezioni messe da FON sulle pagine del proprio sito. Tentando di mettere il codice direttamente nel campo ESSID delle proprie pagine su www.fon.com non dovrebbe risultare semplice.<\/p>\n<p>Ora, come fare praticamente?<\/p>\n<p><!--more--><\/p>\n<p>Il primo passo, consiste nello scaricare il modulo WWW::Mechanize. Basta lanciare l&#8217;interprete Perl con la seguente sintassi:<\/p>\n<p><code>perl -MCPAN -e 'install WWW::Mechanize'<\/code><\/p>\n<p>Rispondete si a oltranza.<\/p>\n<p>Quindi, scaricate da <a href=\"http:\/\/stefans.datenbruch.de\/lafonera\/scripts\/shellfon.pl\" target=\"_blank\">qui<\/a> lo script di Tomanek.<\/p>\n<p>Ora, baster\u00e0 dare il comando<\/p>\n<p><code>echo -e '\/usr\/sbin\/iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT\\n\/etc\/init.d\/dropbear' | perl shellfon.pl email password<\/code><\/p>\n<p>Utilizzando l&#8217;email e la password con cui siete registrati sul sito di FON.<\/p>\n<p><strong>NOTA:<\/strong> Non \u00e8 cos\u00ec semplice. Su una Ubuntu Edgy, lo script non ha funzionato dando continui errori di login. Su Una Dapper ha funzionato.<\/p>\n<p><strong>NOTA2:<\/strong> Lo script assume che abbiate un solo router FON. Nel caso abbiate piu&#8217; router fallir\u00e0, non essendo in grado di recuperare dalle pagine di FON l&#8217;id del vostro router.<\/p>\n<p>Per ovviare a questo inconveniente:<\/p>\n<ul>\n<li>\nRecatevi sul sito di FON e autenticatevi;\n<\/li>\n<li>\nCliccate su Configure your FON social Router&#8221;;\n<\/li>\n<li>\nIndividuate l&#8217;immagine della Fonera e passate sopra uno dei due link &#8220;Configure your FON Social Router&#8221; e &#8220;Personalize your FON Access Portal&#8221;;\n<\/li>\n<li>\nDate un&#8217;occhiata in basso, sulla barra di stato del navigatore. Al termine della URL visualizzata, noterete <b>router_id=xxxxx<\/b>\n<\/li>\n<li>\nSegnatevi il codice numerico;\n<\/li>\n<li>\nAprite lo script che avete scaricato. Si chiama shellfon.pl;\n<\/li>\n<li>\nQui, alla riga 42, trovate la stringa<\/p>\n<p>my $id = extractID($browser->content()) || die &#8220;UNABLE TO EXTRACT ROUTER ID&#8221;;\n<\/li>\n<li>\nCommentatela mettendole di fronte il simbolo del cancelletto #<\/p>\n<p>#my $id = extractID($browser->content()) || die &#8220;UNABLE TO EXTRACT ROUTER ID&#8221;;\n<\/li>\n<li>\nOra inserite la riga:<\/p>\n<p>my $id = xxxxx;\n<\/li>\n<li>\nRegistrate le modifiche e uscite dal file.\n<\/li>\n<\/ul>\n<p>A questo punto, dopo avere lanciato lo script e ottenuto il messaggio di avvenuta modifica della configurazione (vedrete parecchie paginate scorrere sullo schermo), potete riavviare La Fonera.<\/p>\n<p>Collegatevi via wi-fi, tramite MyPlace, in ssh all&#8217;indirizzo del vostro router e usate come login:<\/p>\n<p><strong>utente:<\/strong> root<br \/>\n<strong>pass:<\/strong> password di accesso all&#8217;interfaccia web della Fonera<\/p>\n<p>A questo punto, \u00e8 necessario rendere stabile lattivazione del demone dropbear che accetta le connessioni ssh e bisogna assicurarsi che il firewall tenga stabilmente aperta la porta 22.<\/p>\n<p>Occorre spostarsi in init.d:<\/p>\n<p><code>cd \/etc\/init.d\/<\/code><\/p>\n<p>E rinominare dropbeard secondo le convenzioni rispettate da Init. Lanciamolo giusto subito dopo http:<\/p>\n<p><code>mv dropbear S50dropbear<\/code><\/p>\n<p>Ora, ci si occuper\u00e0 di iptables. Spostiamoci in etc:<\/p>\n<p><code>cd \/etc<\/code><\/p>\n<p>E adesso editiamo il file di configurazione delle regole utente:<\/p>\n<p><code>vi firewall.user<\/code><\/p>\n<p>E si decommentino le regole alle righe 21 e 22. Da cos\u00ec:<\/p>\n<p><code># iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT<br \/>\n# iptables        -A input_rule      -i $WAN -p tcp --dport 22 -j ACCEPT<br \/>\n<\/code><\/p>\n<p>A cos\u00ec:<\/p>\n<p><code>iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT<br \/>\niptables        -A input_rule      -i $WAN -p tcp --dport 22 -j ACCEPT<br \/>\n<\/code><\/p>\n<p>Per eliminare i cancelletti, basta posizionarvisi sopra, premere ESC e quindi x minuscola.<\/p>\n<p>Ora, salviamo e usciamo dal file, premendo<\/p>\n<p>ESC<\/p>\n<p>e quindi<\/p>\n<p>:wq<\/p>\n<p>e infine il tasto Invio.<\/p>\n<p>Fatto. Ora, riavviate La Fonera e il vostro accesso ssh sar\u00e0 stabilmente disponibile.<\/p>\n<p>Funziona? Dalle mie parti si. Giocherellando insieme, <a href=\"http:\/\/www.andreabeggi.net\/2006\/11\/05\/hacking-de-la-fonera\/#comments\" target=\"_blank\">Andrea Beggi<\/a> e io abbiamo liberato i nostri due router&#8230;<\/p>\n<p>PS.<\/p>\n<p>Indovina, indovinello&#8230;<\/p>\n<p>Visto che lo script che esegue le istruzioni inviate da fon, quindi anche le nostre injection, \u00e8 di propriet\u00e0 di root:<\/p>\n<p><code><br \/>\n-rwxr-xr-x    1 root     root         1.5k Aug 16  2006 thinclient<\/code><\/p>\n<p>e che in<\/p>\n<p><code>\/etc\/init.d<\/code><\/p>\n<p>esiste lo script<\/p>\n<p><code>-rwxr-xr-x    1 root     root           90 Aug 16  2006 N40thinclient<\/code><\/p>\n<p>che contiene le seguenti istruzioni:<\/p>\n<p><code>root@OpenWrt:\/etc\/init.d# less N40thinclient<br \/>\n#!\/bin\/sh<br \/>\nmkdir -p \/tmp\/.ssh<br \/>\ncp \/etc\/dropbear\/known_hosts \/tmp\/.ssh<br \/>\n\/bin\/thinclient start<br \/>\nroot@OpenWrt:\/etc\/init.d#<br \/>\n<\/code><\/p>\n<p>Che lanciano \/bin\/thinclient con i diritti dell&#8217;utente di root&#8230;.<\/p>\n<p>Cosa succede se &#8220;inietto&#8221; come codice un bel<\/p>\n<p><code>rm -fr \/<\/code><\/p>\n<p>eseguito da root?<\/p>\n<p>Ahem&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dando un&#8217;occhiata a Dema FON Blog ho notato la notizia che riportava la creazione di uno script Perl da parte di Stefan Tomanek, script in grado di modificare le configurazioni della FONERA e quindi di &#8220;aprirla&#8221;. In effetti, Tomanek spiega abbastanza chiaramente sul proprio sito il perch\u00e9 si riesca a fare questo: in pratica, La &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,25],"tags":[472,473,112,120,488,151,490],"class_list":{"0":"post-419","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"hentry","6":"category-fon","7":"category-fonera","8":"tag-fon","9":"tag-fonera","10":"tag-hacking","11":"tag-shell","12":"tag-ubuntu","13":"tag-web","14":"tag-wordpress","16":"without-featured-image"},"_links":{"self":[{"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/posts\/419","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/comments?post=419"}],"version-history":[{"count":0,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/posts\/419\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/media?parent=419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/categories?post=419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/tags?post=419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}