[Lugro-mesh] Lo que tiene le bicho dentro

Sebastian Dominguez lugro-mesh@lugro.org.ar
Wed, 27 Jun 2007 09:42:35 -0300


El 26/06/07, Sebastián D. Criado <> escribió:
> Bueno, luego de andar husmeando por los java script y los htm de configuración
> del bicho, solo me quedaba ver donde era que mandaba las configuraciones para
> que se grabaran en el aparatejo.
>
> El tema es el siguiente.
>
> La web de configuración usa java script para casi todo.
> Había muchos js que no se usaban para nada y otros htm que quedaron por allí
> seguramente para pruebas y demás.
>
> (Ver el http://192.168.1.1/web_shell.htm. Ojo que solo funciona hasta que le
> erras a algún comando, luego hay que resetear duro al bicho para que funque
> de nuevo) Lo pego aquí para que se entienda lo que estoy diciendo:
>
> web_shell.htm:
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
> "http://www.w3.org/TR/html4/loose.dtd">
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
> <title>Web Shell</title>
> </head>
> <script>
> function ValidateForm(passForm)
> {
>
>         passForm.data_cmd.value = document.forms[0].Data_cmd.value;
>         passForm.submit();
> }
> function InitValue(passForm)
> {
>
> }
> </script>
> <body onload="InitValue();">
> <form name="web_shell" action="post.cgi" method="post">
> <input type="hidden" name="data_cmd" value='<%web_shell("data_cmd");%>'>
> <input type="hidden" name="cur_ipaddr" value="<%nvram_get("lan_ipaddr");%>">
> <input type="hidden" name="next_page" value="web_shell.htm">
> <input type="hidden" name="reboot" value="0">
>
> <table width="93%" height="377"  border="0">
>   <tr>
>     <td width="80%" height="59" scope="col">
>         <INPUT class=num maxLength=255 size=50 name=Data_cmd>
>
>         <input type="button" value="sent"
> onClick="ValidateForm(document.forms[0]);"></td>
>     </tr>
>   <tr>
>     <td scope="row">&nbsp;</td>
>   </tr>
> </table>
> <textarea cols="100" rows="15" name="PingRecord"><%web_shell("response");%>
>         </textarea>
> </form>
>
> </body>
>
> </html>
>
>
> Para poder volcar las configuraciones, las páginas usan document.form (es la
> forma que java script tiene para poder usar los datos de un form htm como
> parametro) y se lo mandaba a un post.cgi el cual, no existe.
>
> <form name="web_shell" action="post.cgi" method="post">
>
>
> el cual es llamado por este INPUT:
> <input type="button" value="sent"
> onClick="ValidateForm(document.forms[0]);"></td>
>
> function ValidateForm(passForm)
> {
>
>         passForm.data_cmd.value = document.forms[0].Data_cmd.value;
>         passForm.submit();
> }
>
> Al diferencia de muchos otros htm dentro del aparato, esta página en especia
> no invoca al javafuntion.js el cual tiene muchas funciones para hacer
> distintas cosas (ej, armar bien una IP o validar datos)
>
> Entonces. ¿A donde lo manda? y lo peor ¿Donde está el post.cgi que no conseguí
> por ningún lado?
>
> Lo único que quedaba era ver el binario del httpd.
> En charla con Gus, el me decía que allí no podría estas :D pero miren lo que
> encontre dentro:
>
> ^@^@post.cgi*^
>
> Y sigue:
> @^@^@marmot.cgi*^@delete_log.cgi*^@SaveCfgFile.cgi*^@^@^@^@
> UploadCfgFile.cgi*^@^@refresh_client.cgi*^@connect_ddns.cgi*^@^@^@system_restart.cgi*^
> @password.cgi*^@^@^@logout.cgi*^@parentalc.cgi*^@^@parentalc_config.cgi*^@^@^
> @parental_unblock.cgi*^@^@^@parental_tproxy.cgi*^@^@^@^@wep_passphrase.cgi*^
> @syslog_save.cgi*^@^@^@^@syslog_clean.cgi
>
> Lo que me indica (no puedo debuguear) que los cgi están compilados dentro del
> httpd.
> No solo encontre esto, si no también muchos html enbebidos dentro del binario.
>
> Ej: (si mirán al final podrán ver el dichoso nvram_commit que buscaba Gustavo)
> </BODY>
> ^@^@http://%s:
> %s/white_space.gif^@^@^@^@web_use_https^@^@^@https://%s/%s^@^@^@https://%s/white_space.gif^@^@http://%s/white_space.gif^@^@^@restart_w0_vlan0^@^@^@^@192.168.1.1^@wiz_set^@top.menu_screen.flash();
> ^@^@^@window.opener.top.menu_screen.flash();
> ^@delstatic_route_ipaddr^@^@delstatic_route_netmask^@route del -net %s
> netmask %s^@^@^@^@wl0_channel^@7^@^@^@traceroute %s > /var/tracert.txt
> &^@^@PingNum^@Unlimited^@^@^@PingSize^@^@^@^@ping -f -c %d -s %d %s
> &^@^@^@^@ping -f -c 1000 -s %d %s &^@^@%s > /tmp/web_shell.txt
> &^@^@^@lan_dhcps_enabled^@^@^@killall udhcpd
> &^@^@^@^@/bin/renew-wan.sh^@^@^@pppoe^@^@^@pptp^@^@^@^@Content-Disposition:^@^@^@^@name="file"^@^M
> ^@^@/tmp/config.bin^@config.bin^@^@old_ip^@^@fw_version^@^@ae1_macaddr^@lan_macaddr^@3ComSN^@^@nvram_statut^@^@^@^@wireless_version^@^@^@^@bootload_version^@^@^@^@httpd_password^@^@httpd_username^@^@httpd_realm^@wan_mac^@customer_firmware_version^@^@^@my_fw_version^@^@^@hw_version^@^@lan_ifname^@^@lan_ifnames^@wl0_macaddr^@lan_mac^@eth1_macaddr^@^@^@^@eth0_macaddr^@^@^@^@wan_ifname^@^@nvram
> commit^
>
> Encotre también con el tema del commit que hay comandos directamente
> enebebidos:
>
> Ej:
> echo "nvram commit ; sleep 3 ; reboot"
>
> Hasta está enbebida la pagina para el parental control
> http://filter.belkin.com/password.asp?SN=%s&PW=%s&FV=1.00.06
>
>
> Y hasta cosas de otros fabricantes: :D (aja, robando a la competencia)
> <head><title>Linksys Home Gateway Reference Design: Apply</title><
> Que podría ser de este bicho que se llama igual
> http://www.ciao.co.uk/Linksys_Wireless_G_ADSL_Home_Gateway_WAG354G__6274614
>
>
> Me parece que tenemos que ver con mayor detalle a este httpd si queremos saber
> como guarda los datos el bicho. Eso si, no se sí será muy util para nuestros
> propositos de dominación mundial :D
>
> Saludos.-
>
> --
Exelente laburo Cerebro.
Creo que para una etapa posterior esta información va a servir y
mucho. Nos va a dar la posibilidad de tambien dar una interfaz web de
configuracion.

Me es interesante, en sobremanera, los comandos embebidos en el Httpd.
En un principio pense que era lo que faltaba para poder escribir en la
flash (en interfaces web algo de experiencia tengo). Pero despues
pensando los pasos a seguir en el proyecto caigo en que de eso no va a
quedar nada.

Corrijanme si me equivoco, pero una vez flasheado, vamos a poder
escribir en la particion como si de un Linux comun se tratase, no?



Sin mas saluda atentamente

Pinky

Pd: (pagados los derechos  a la WB)
-- 
Sebastian Dominguez