网页不见了:记一次网页劫持过程

网页不见了:记一次网页劫持过程

背景

2023年国家网络安全周前后有大量的客户升级了内网设备及软件,升级完成后发现表单打开之后是空白的,可能第一次打开正常,第二次的时候又不正常。而且并不总是这样,过段时间又正常了。问题发生时浏览器控制台没有任何报错。

现象

后续又陆续收到了其他的反馈,主要有以下表现:

  • 页面空白
  • 页面无数据、无法保存、删除等

分析

针对无数据、无法保存、删除的问题,分析方向比较明确,从浏览器控制台中可以看到请求被中断了,且发现中断的请求类型为PUT、Delete,其余类型的请求正常。根据这个现象可以初步推断是防火墙或AC拦截了这些类型的请求导致。

针对页面空白的问题,从开发人员工具-网络中能够看到表单需要的脚本并未加载,只有少数几个脚本。另外在开启保留日志选项后能够看到网络中html页面加载了两次,第一次地址中是带hash路由的,第二次hash路由丢失。

路由丢失导致表单未能加载,从而出现空白页面的问题。

现在有两个线索,页面为什么加载了两次、第二次加载的页面路由为什么丢失了?

我们对比两次页面加载返回的html代码可以发现,第一次的html返回中在head部分多了一些脚本:

<script language="javascript">setTimeout("location.replace(location.href.split(\"#\")[0])",2000);</script>
<script type="text/javascript" src="http://1.1.1.2:89/cookie/flash.js"></script>
<script language="javascript">setURL("1.1.1.2");supFlash("18446744072909971032");</script>

我们的流量被劫持了!

在我们的页面代码返回后,首先执行了一次自动加载,新的地址中将hash丢掉。至此上面的两个问题都明确了,就是因为新增的脚本导致我们的页面执行了两次加载,同时路由丢失。

到这一步,我们大致可以猜测,客户环境中存在防火墙或行为管理的软硬件,这些设备劫持了我们的请求。最终与客户确认近期他们新上了深信服的AC。

解决

后通过与深信服技术确认,请求拦截的问题是由于深信服设备默认禁止了PUT和Delete请求,从AC中放开这个限制即可。

页面空白问题中插入的代码主要用于防共享识别,关掉该功能或将服务器ip添加全局白名单即可解决。

89端口是AC的防共享识别使用的,是和浏览器cookie有关,用于识别同一个IP使用不同浏览器上网的环境。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容