Sorry, looks like your network settings are preventing access to this feature.
省流: 微软疑似封禁了部分idc节点,可以使用其他更好的代理节点或使用请求头插件伪造来源地址
解决方法
- 换节点
- 使用ModHeader等修改请求头的插件/软件/方式将
X-Forwarded-For修改为任意非黑名单ip(如1.1.1.1)
查看节点是否被封禁
- 如果返回的是
{"result":{"value":"UnauthorizedRequest","message":"Sorry, you need to login first to access this service."}或任意内容,说明节点未被封禁 - 如果返回一片空白,那就是没了
测试
- 使用oci(已封禁节点) 直接get 空白
- 使用oci 修改来源为1.1.1.1 成功
- 使用oci 修改来源为另一台oci ip 失败
- 使用gcp 直接get 成功
- 使用gcp 修改来源为1.1.1.1 成功
- 使用gcp 修改来源为oci ip失败
分析
做网站的都知道在有前端cdn情况下后端是没法知晓访问者的ip的,需要cdn给源站传递访客信息。
最规范的传递方式就是让cdn修改header中的X-Forwarded-For为访客ip,后端再执行相应逻辑。
但鲜有人知header在结构上更接近一个二元数组,而非字典,也就是说一个'header的'key(比如X-Forwarded-For)可以对应多个value(1.0.0.1,1.0.0.2)
而后端若采用字典方式去获取,只能解得第一个(1.0.0.1)。
正常情况下,访客发出的请求header中是不会存在X-Forwarded-For,所以bing cdn采取的加入访客ip方式应该是append(添加,而非修改)。
但当我们提前加入一个伪造的ip,这将成为第一个,而cdn添加的真实ip则成为第二个,使得欺骗后端防火墙认为自己的来源是第一个ip。
换句话说,你只要把来源伪造成任意非黑名单ip即可。
此漏洞明显,修复方式简单,故修改
header的可能不会存留很久。