从终端访问cgi-bin网页


1

我有几个运行基于unix的OS + cgminer软件的Antminer L3 +。它具有受密码保护的网络界面,就像http://10.12.1.1/cgi-bin/reboot.cgi我可以从这样的浏览器直接访问它http://root:root@10.12.1.1/cgi-bin/reboot.cgi来重新启动设备。

但是,当我从终端运行相同的消息时,出现curl http://root:root@10.12.1.1/cgi-bin/reboot.cgi401错误。

我还尝试在PHP中使用带有参数的curl来模仿浏览器,但仍然出现401错误。

知道为什么会这样吗?


整个用户名:password @ url方案现在是非标准的。它是标准的,但是相关恶意攻击的可能性变得如此巨大,以至于开发了新的标准,该标准将放弃对旧标准的任何支持。例如,有些人会创建长URL(太长而无法在公共地址栏中完全看到),例如paypal.com/blah/blah%40badsite.com/blah,人们会信任该URL,因为它始于paypal.com/,但是%40是一个@网站,它将“ paypal.com/”文本变成badsite.com用户名的一部分。常见修正=禁止在网址中使用用户名
TOOGAM

我理解您的意思,但是以上应用程序的范围是LAN,并且能够通过脚本而不是浏览器来自动执行任务。
Jsp

所以?如果自动化工具的行为与浏览器的行为相似,那么您的区分会有什么影响?更直接地:如果Firefox和Chrome和Microsoft Web浏览器都采用了新的行为,而cURL和WGet之类的自动化工具使用了相同的行为,那么为什么要指出您要使用自动化工具代替浏览器呢?如果这些软件类别的行为相同,那么我看不到您与众不同的意义。(类似地:事实上,您在LAN上可能意味着您实际上更安全,但这并不意味着您的软件对于WAN不够安全。)
TOOGAM

我用--user'username:password'参数更新了答案。感谢您的输入。
Jsp

Answers:


0

可能是您发送了错误的授权。尝试尝试一下--digest,如果那不起作用,请尝试--anyauth并使用--verbose它找出哪一种可行,然后在手册中找到正确的身份验证开关,并仅使用那一种(出于安全性考虑)。

您可能想尝试的另一件事是启用cookie。一些路由器在401上设置cookie,并期望在下一个请求时重新获得该cookie。您可以使用读写Cookie --cookie cookies.txt --cookie-jar cookies.txt。如果您不关心保存cookie(例如,您要重新启动路由器)并且不需要解析输出,则--cookie-jar -足以启用cookie引擎并将其写入stdout。


当我在FF上执行操作时,在网络标签中看到2行。第一个是401未经授权,第二个是500内部服务器错误-但这使计算机成功重新启动。500错误的授权是:Digest username="root", realm="antMiner Configuration", nonce="434d91fd2c32b977a25790d9f6b1f6af", uri="/cgi-bin/reboot.cgi", response="4fdd091fae0d7158aae7c534ee21d546", qop=auth, nc=00000001, cnonce="78e998c797d09dd0"您可以从终端提供一个卷曲参数来模仿吗?
Jsp

该命令有效!!!curl --digest --anyauth --user 'root:root' --verbose http://10.12.1.1/cgi-bin/reboot.cgiTHANK YOU
jsp的

我很高兴它奏效。如果您赞成并标记您的答案或我的答案正确,这将有所帮助,以便站点上的其他人无需阅读线程即可知道此问题已得到解决。
杰伊(Jay)

我已经投票了,它已经记录了,但是我没有足够的分数来显示。
Jsp

哦好的。我也很新,也注意到我也发生了同样的事情,因为我没有观点。
杰伊,

0

感谢杰伊。这是工作参数,可http://root:root@10.12.1.1/cgi-bin/reboot.cgi从终端或通过PHP脚本(而不是浏览器)执行LAN cgi-bin URL 。可以从LAN或WAN执行此操作(通过防火墙/路由器上的预配置端口)。

从WAN:

curl --digest --user 'username:password' http://YOUR_WAN_IP:PORT/cgi-bin/reboot.cgi

从局域网

curl --digest --user 'username:password' http://YOUR_LAN_IP/cgi-bin/reboot.cgi

通过PHP脚本:

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERPWD, "username:password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_URL, 'http://YOUR_WAN_IP:PORT/cgi-bin/reboot.cgi');
$output = curl_exec($ch);
$info = curl_getinfo($ch)
curl_close($ch);

print_r($output);
print_r($info);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.