{"id":432,"date":"2006-11-23T00:04:10","date_gmt":"2006-11-22T23:04:10","guid":{"rendered":"http:\/\/www.zarrelli.org\/new_blog\/?p=432"},"modified":"2006-11-23T00:04:10","modified_gmt":"2006-11-22T23:04:10","slug":"hacking-la-fonera-step-by-step-guide","status":"publish","type":"post","link":"https:\/\/www.zarrelli.org\/blog\/hacking-la-fonera-step-by-step-guide\/","title":{"rendered":"Hacking la Fonera, step by step guide"},"content":{"rendered":"<p>Qualche giorno fa, sento da <a href=\"http:\/\/www.andreabeggi.net\/2006\/11\/20\/hacking-de-la-fonera2\/\" target=\"_blank\">Andrea<\/a> che La Fonera \u00e8 suscettibile di una <a href=\"http:\/\/bingobommel.blogspot.com\/2006\/11\/hacking-la-fonera-part-ii.html\"target=\"_blank\">code injection sull&#8217;interfaccia locale<\/a>. Ohib\u00f2, troppo allettante per non provarci ma&#8230;ahem&#8230;la mia Fonera \u00e8 gi\u00e0 aperta e quella di Andrea anche.<\/p>\n<p>Per fortuna, c&#8217;\u00e8 <a href=\"http:\/\/www.youtube.com\/watch?v=3KAAKyiqYxE\" target=\"_blank\">Andrea<\/a> il quale \u00e8 un infelice possessore di Fonera muta e alla mia richiesta di provare l&#8217;hack non ci ha pensato poi molto e si \u00e8 messo all&#8217;opera.<\/p>\n<p>Ebbene si, ha aperto la Fonera. Ora, anche lui, pu\u00f2 fregiarsi del titolo di &#8220;FON Liberator&#8221;. Mmmm&#8230;dove ho gi\u00e0 sentito questo termine?<\/p>\n<p>Gentilmente, Andrea ha accondisceso a scrivere una veloce guida all&#8217;utilizzo di questo nuovo hack.<\/p>\n<p><!--more--><\/p>\n<p><img decoding=\"async\" align=\"center\" id=\"image476\" src=\"https:\/\/www.zarrelli.org\/blog\/wp-content\/uploads\/2006\/11\/step1Submit.png\" alt=\"step1Submit.png\" \/><\/p>\n<p>\u00c8 il <a href=\"https:\/\/www.zarrelli.org\/blog\/wp-content\/uploads\/2006\/11\/step1.html\" target=\"_blank\">primo form<\/a> da inviare alla fonera.<strong><\/p>\n<p>Si tratta di un semplice form che<\/strong> utilizza il metodo post per inviare invia il campo <strong>&#8220;wifimode&#8221;<\/strong>all&#8217;indirizzo<\/p>\n<p><strong>http:\/\/192.168.10.1\/cgi-bin\/webif\/adv_wifi.sh<\/strong><\/p>\n<p>192.168.10.1 \u00e8 l&#8217;IP della Fonera, il vostro potrebbe essere differente, nel qual caso il valore va aggiornato alle vostre esigenze.<\/p>\n<p><strong>\/cgi-bin\/webif\/adv_wifi.sh <\/strong><\/p>\n<p>\u00c8 il cgi-bin che si occupa, tra le altre cose, di eseguire i comandi shell contenuti nel campo wifimode inviatogli (la fonera usa l&#8217;httpd di busybox e i cgi-bin sono script webif &#8211; un sistema di generazione dinamica di html tramite script shell e awk)<\/p>\n<p>Una volta inviato il form vi sar\u00e0 richiesta l&#8217;autenticazione http del webserver della fonera (esattamente come se vi collegaste da browser).<\/p>\n<p>Il valore predefinito della coppia login\/pass e&#8217;<\/p>\n<p><strong>Login:<\/strong> admin<br \/>\n<strong>Password:<\/strong> admin<\/p>\n<p>Potreste aver cambiato la password predefinita, nel qual caso utilizzate quella che avete definito.<\/p>\n<p>Come potete notare l&#8217;iniezione del codice richiama iptables dicendogli di aprire la porta 22 per le connessioni ssh.<\/p>\n<p><img decoding=\"async\" align=\"center\" id=\"image476\" src=\"https:\/\/www.zarrelli.org\/blog\/wp-content\/uploads\/2006\/11\/afterSubmit.png\" alt=\"afterSubmit.png\" \/><\/p>\n<p>Quello che vedete nell&#8217;immagine e&#8217; il testo che viene visualizzato nel browser dopo il submit e l&#8217;autenticazione: come potete osservare, si tratta del sorgente html dell&#8217;home page del webserver della fonera, preceduta da degli header. La prima riga \u00e8:<\/p>\n<p>&#8220;\/bin\/sh: \/tmp\/.webif\/config-fon: 2: Permission denied&#8221;<\/p>\n<p>Il permission denied non si riferisce al tentativo di accesso o iniezione del codice nella fonera, ma alla scrittura (o alla lettura, non sono sicuro, lo script fa entrambe le cose) del file <strong>\/tmp\/.webif\/config-fon<\/strong>.<\/p>\n<p>Non preoccupatevi di quella scritta, l&#8217;iniezione del codice \u00e8 andata a buon fine.<\/p>\n<p><img decoding=\"async\" align=\"center\" id=\"image476\" src=\"https:\/\/www.zarrelli.org\/blog\/wp-content\/uploads\/2006\/11\/step2Submit.png\" alt=\"step2Submit.png\" \/><\/p>\n<p>Si tratta del <a href=\"https:\/\/www.zarrelli.org\/blog\/wp-content\/uploads\/2006\/11\/step2.html\" target=\"_blank\">secondo form<\/a>. Il codice iniettato avvia dropbear, il server ssh della Fonera.<\/p>\n<p>Dopo l&#8217;invio del form si ripresenta lo stesso output visto per il primo.<\/p>\n<p><img decoding=\"async\" align=\"center\" id=\"image476\" src=\"https:\/\/www.zarrelli.org\/blog\/wp-content\/uploads\/2006\/11\/sshLogin.png\" alt=\"sshLogin.png\" \/><\/p>\n<p>A questo punto, collegatevi in <strong>ssh<\/strong>, come utente <strong>root<\/strong>. all&#8217;IP della fonera, la password<br \/>\n\u00e8 la stessa che avete usato per l&#8217;autenticazione, et voila&#8217;!<\/p>\n<p>Una volta loggatisi sulla Fonera occorre rinominare dropbear in<\/p>\n<p><strong>S50dropbear.<\/strong><\/p>\n<p><code>root@OpenWrt:\/#mv \/etc\/init.d\/dropbear \/etc\/init.d\/S50dropbear<\/code><\/p>\n<p>In questo modo la Fonera eseguir\u00e0 il file al boot del sistema.<\/p>\n<p>Quindi, ora avete un server ssh avviato a ogni boot della Fonera.<\/p>\n<p>Il secondo passo da compiere consiste nell&#8217;abilitare in maniera definitiva le connessioni ssh verso la Fonera. Perottenere questo risultato, bisogna <strong>editare<\/strong> il file<\/p>\n<p><code>\/etc\/firewall.user<\/code><\/p>\n<p>Con cosa? ovviamente con vi<\/p>\n<p>Le righe in questione sono le seguenti, come risulta chiaro dal commento:<\/p>\n<p><code>### Open port to WAN<\/code><br \/>\n<code>## -- This allows port 22 to be answered by (dropbear on) the router<\/code><br \/>\n<code># iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT<\/code><br \/>\n<code># iptables        -A input_rule      -i $WAN -p tcp --dport 22 -j ACCEPT<\/code><\/p>\n<p>Decommentate le due righe che iniziano per <strong>iptables<\/strong>.<\/p>\n<p>A questo punto vi baster\u00e0 riavviare la Fonera, oppure eseguire i due script sui quali avete apportato le modifiche:<\/p>\n<p><code>root@OpenWrt:\/#\/etc\/init.d\/S50dropbear<\/code><\/p>\n<p><code>root@OpenWrt:\/#\/etc\/firewall.user<\/code><\/p>\n<p>Se poi volete esagerare, disabilitando la possibilit\u00e0 che del codice inviato da Fon venga eseguito dalla Fonera, modificate <strong>\/bin\/thinclient<\/strong><\/p>\n<p><code>root@OpenWrt:\/#vi \/bin\/thinclient<\/code><\/p>\n<p>commentate la riga<\/p>\n<p><code>. \/tmp\/.thinclient.sh<\/code><\/p>\n<p>in fondo al file.<\/p>\n<p>Potete infine aggiungere questa<\/p>\n<p><code>cp \/tmp\/.thinclient.sh \/tmp\/thinclient-$(date'+%Y%m%d-%H%M')<\/code><\/p>\n<p>che alla ricezione dei file da parte di Fon, li salver\u00e0 nella directory <strong>\/tmp<\/strong> nel formato <strong>thinclient-AAAA-MM-GG-HHMM<\/strong>.<\/p>\n<p>In questo modo potrete controllarli di tanto in tanto (e ricordatevi anche di cancellarli, per non correre il rischio che vi occupino tutto lo spazio).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Qualche giorno fa, sento da Andrea che La Fonera \u00e8 suscettibile di una code injection sull&#8217;interfaccia locale. Ohib\u00f2, troppo allettante per non provarci ma&#8230;ahem&#8230;la mia Fonera \u00e8 gi\u00e0 aperta e quella di Andrea anche. Per fortuna, c&#8217;\u00e8 Andrea il quale \u00e8 un infelice possessore di Fonera muta e alla mia richiesta di provare l&#8217;hack non &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,118,120,151],"class_list":["post-432","post","type-post","status-publish","format-standard","hentry","category-fon","category-fonera","tag-fon","tag-fonera","tag-hacking","tag-home","tag-shell","tag-web","without-featured-image"],"_links":{"self":[{"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/posts\/432","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=432"}],"version-history":[{"count":0,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/posts\/432\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/media?parent=432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/categories?post=432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zarrelli.org\/blog\/wp-json\/wp\/v2\/tags?post=432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}