调制解调器拒绝login凭据如果我尝试通过http:// modem /连接。 如果我使用http:// <ipaddr> /

这是一个真正的bugger 🙂

我的调制解调器是ZTE ZXHN H108L,连接到一个linux防火墙/路由器/网关。 网关是运行DNS,DHCP,VPN和透明代理的Slackware 14.0系统。 网关有2个硬件网卡。 eth1连接到调制解调器(192.168.231.117), eth0连接到内部网(192.168.112.0/24)。

我使用dns给几个intranet和vpnnet主机的名字。 调制解调器有一个方便的名称“modem.skails.office”(或者如果我坐在这个内部网上的pc上,就是“调制解调器”)。 从/var/named/skails.office.hosts

 modem A 192.168.231.117 

nslookup从内网的所有电脑上正确parsing调制解调器地址。

 root@stargaze:~# nslookup modem Server: 127.0.0.1 Address: 127.0.0.1#53 Name: modem.skails.office Address: 192.168.231.117 root@stargaze:~# nslookup modem.skails.office Server: 127.0.0.1 Address: 127.0.0.1#53 Name: modem.skails.office Address: 192.168.231.117 

所以当我尝试从网关浏览器(firefox)访问调制解调器时,我inputhttp://192.168.231.117/ 。 我提供的凭据,我login罚款。

如果我试图通过发送地址http://modem/http://modem.skails.office/来做同样的事情,我仍然会出现login窗口,但它不会接受我的凭据。 我真的不知道这里可能是什么问题。

我使用tcpdump -i eth1 host modem and port 80来logging一个成功和不成功的尝试login并获取状态页面。

  1. 成功的tcpdump wget --user admin --password 1234 "http://192.168.231.117/status/status_deviceinfo.htm" -O -

连接到192.168.231.117:80 …已连接。
发送HTTP请求,等待响应… 401未经授权
重新使用现有的连接到192.168.231.117:80。
发送HTTP请求,等待响应… 200 OK
长度:未指定[text / html]

  1. tcpdump不可用 wget --user admin --password 1234 "http://modem/status/status_deviceinfo.htm" -O -

解决调制解调器(调制解调器)… 192.168.231.117
连接到调制解调器(调制解调器)| 192.168.231.117 |:80 …已连接。
发送HTTP请求,等待响应… 401未经授权
重用现有连接到调制解调器:80
发送HTTP请求,等待响应… 401未经授权
授权失败。

你能用它做什么吗? 你是否需要我可能没有想到的其他数据? 我如何进一步调查此事?

调制解调器的Web服务器不是用来处理Host HTTP头中除IP之外的东西,因此您获得了未定义的行为,在这种情况下,这意味着当您在该Host头中发送除IP以外的内容时,身份validation将失败。

通常情况下,除非你使用虚拟主机(这允许托pipe多个域下的多个站点指向相同的IP,并使用该Host头来告诉哪个站点被请求),你应该完全忽略这个头,开发者那固件显然没有做。 如果他们实际使用虚拟主机(不必要的),我不会感到惊讶,这就是为什么只有设置到路由器IP的特定Host头允许您进行身份validation,因为其他一切都不匹配该虚拟主机。

这个名字与它没有任何关系,只是curl / wget根据这个DNS名字自动设置正确的主机头。 如果你可以删除或覆盖该标题,并将其设置callback制解调器的IP,那么它会工作得很好(使用wget --header="Host:" ...来删除标题)。