本文仅供学习参考,如有侵权可私信本人删除,请勿用于其他途径,违者后果自负!

如果觉得文章对你有所帮助,可以给博主点击关注和收藏哦!

网站链接

aHR0cHM6Ly93d3cuZ2RzZ2ouY29tL25vdGljZS8=

waf简介

近期遇到一个一个比较有意思的网站,使用了waf进行防护。

什么是waf?简单来说就是应用防火墙,防止一切对于网站不利的行为,懂得都懂不展开说了。

官网:雷池 WAF | 下一代 Web 应用防火墙 | 免费使用

有兴趣的可以了解一下,个人感觉做的还是很好的。

网站分析

waf检测分析

按照常规思路,分析一个网站肯定是要打开F12的,然后刷新页面抓包。

映入眼帘就会有一个按钮需要点击,那么点击之后会出现一个新的变化。

开发者工具被检测了,将F12分离出去依然会被检测。

遇到这种情况只能从头打上断点,然后慢慢分析是什么原因导致了,这一步比较需要耐心。

清除缓存,刷新页面就是干。

首先会初始化一些内容

这部分倒是没什么特别,继续向下看,有两处比较关键。

一个是onload部分,另一部分是会导入这个js文件。至此waf的环境已经初始化完成了。

直接进到这个js文件,具体的调试细节不再展开讲了。大致说一下是怎么检测的

通过图可以看出会对一些比较熟悉的自动化工具和常见指纹做了检测,检测也比较细致,大概有40多项的检测。

主要是调用这个函数。

当分数>=100就会触发风控,那么简单,直接改写js文件本地替换,分数想定多少不就是自己说了算吗。

这样waf的检测就过掉了。

网络请求分析

反调试过去之后,就可以看网络请求面板了,比较显眼的是一个wasm的请求(可以移步上一篇文章:js逆向-wasm初体验)

流程如下:

  1. 首次请求获取完成waf的初始化,请求状态码为468,上文也有体现,主要是获取client_id(关键词搜索SafeLineChallenge)和waf的js文件;
  2. issue接口会拿第一次返回的client_id 进行请求,返回一个数组和issue_id
  3. verify接口则是校验环境是否合法

这三部做完后,如果没有意外就可以过掉风控拿到数据了。

值得注意的是要使用session保持状态。

代码分析

在verify这个接口请求参数会有一个数组和第二个接口返回的明显不同,毫无疑问是经过了某种处理。

所以直接在这个地方下断即可。

这个就是已经处理好的数组了。

向上跟一层 就能找到,但是再次刷新却发现断点会消息,一查看发现是一个临时文件。

这个地方搞了好久,但是答案在之前就已经得到了。

临时链接将calc的内容写入了进去,直接找到这个文件打下断点理论也是可以的。

但是还是打不下来😂,尝试了很久发现勾上这个就能进入这个临时文件了。

这部分的wasm直接全扣,按照之前的方法基本零成本就可以获取结果。

然后再把返回的结果update进cookie就可以愉快的请求了

最后

你以为把这些搞完之后就能获取数据吗?在响应正文中还是埋了一个小彩蛋,不剧透了可以自己尝试一下。

在这里插入图片描述

更多推荐