我最近在我的路由器中发现了一个漏洞,基本上给了我root访问权限。收获?有一个nonce
隐藏的表单值是随机生成的,必须发送才能使其工作,这使得很难"轻松"完成
所以基本上我想在javascript中做这样的事情:
- 获取
http://192.168.1.254/blah
- 使用正则表达式或类似方法提取随机数值
- 将随机数值放入当前页面的隐藏字段中
- 通过 POST 将表单提交到
http://192.168.1.254/blah
完成,其中包含随机数值和我要发送的其他表单值。
仅使用HTML和Javascript可以做到这一点吗?我对"必须在本地保存HTML文件然后打开"之类的事情持开放态度,我认为这是绕过跨域策略的一种方式。
但无论如何,这可能吗?我希望它至少能够从Firefox和Chrome运行。这方面的受众是那些具有一些技术知识的人。
编辑:我已经重写了这个,因为我原来的答案不正确。
由于您可以对本地文件进行 AJAX 调用,因此您可以执行以下操作。
"AJAX 页面"是发出请求的页面。"请求的页面"是不言自明的。
-
您的计算机上有 AJAX 页面。AJAX 页从您的计算机调用请求的页,与自身位于同一文件夹中。
-
您指示用户从其路由器获取请求的页面,并将其放在与 AJAX 页面相同的文件夹中。
-
跨域策略现在不再适用,因为这两个文件位于同一文件夹中。
-
您的页面可以有一个 POST 表单,其中
action
(目标页面)是跨域的,应该没有任何限制。
如果您可以在页面上运行PHP代码,请尝试使用cURL。这可以发出跨域请求。
这不能从常规的HTML页面完成。 同源策略将阻止您连接到路由器。 (将页面保存在本地无济于事;浏览器几年前开始严格限制本地页面的功能。
如果你真的想从浏览器做到这一点,你可以写一个扩展。 源限制不适用于浏览器扩展。