首页
社区
课程
招聘
[原创] AnubisWAF的分析
发表于: 2025-9-14 20:13 591

[原创] AnubisWAF的分析

2025-9-14 20:13
591

0x00 前言

最近看到了不少文章在吹AnubisWAF,尤其是某些Linux圈的文章。开源的WAF自然是极好的,为聊表敬意,让我们拆解一下Anubis玩一玩。

图片描述

0x01 坑1

不知道干什么就先开个HTTP Debugger看看。
pkt
非常直来直往的。不过既然这是一篇踩坑文章,让我们跳过js PoW等无关紧要的细节,直接从最初版的代码考虑。

我们的第一反应肯定是这个流程:
访问网站->获取challenge->解决challenge->获取Cookie
但是卡就卡在获取Cookie这一步。当我们访问....api/pass-challenge?challenge=....时,并没有见到应有的302,而是400了。根据网页内容,我们知道,是Cookie出锅了。

仔细检查后不难发现Challenge设置了3个Cookie,但是我们的浏览器在进行pass-challenge时,却并非如此:
Challenge
图片描述
经过了一番文档查找后我们发现,虽然MDN并没有这么规定,但是Chrome浏览器并不会携带控Cookie。仅需删除此Cookie就应该好了吧。

0x02 坑2

在进行上述修改后,我们虽然得到了200的响应码,但是其内容如下是另一个全新且一致的challenge页面。就好像我们没有通过验证一下。继续使用HTTP Debugger,发现得到了正确的302,但是在接下来的请求中python发送了一个并未携带正确Cookie的GET。
P1
重新检查requests文档我们可以注意到,requests库在被重定向时并不会保留中间状态的Cookie,让我们设置followRedirects=false。
果不其然,我们得到了正确的Cookie。

0x03 坑3

虽然得到了正确的Cookie,但是请求还是400了。继续检查网页可以发现“http-equiv="refresh"”字样,估计是和cf一样验证了等待时间。
加入了sleep后问题消失。

0x04 碎碎念

至此拆解差不多完成。不过给我的感觉是Anubis并不能算是一个完整的WAF,因为后续测试感觉它什么拦截也没有。就,xss,sql,目录穿越之类的基本检查都比较的...稀碎...
Anubis亦缺少基本的拉黑功能。你看我前面失败那么多次正经WAF肯定早给我ip拉黑了,但是它没有。
除此之外Anubis的PoW也不太对劲,因为它不抗并行。我写了一个可以在数十毫秒内完成PoW(内心:有快速算法的PoW也没谁了)的求解器,它可以在我的Github中(这里,需要IntelCPU+Java17以得到最佳性能;Python没法这么快)找到。

总的来说,敢于写一个FOSS的WAF总是好的,但是它不值$50;也比不上SamWaf(开源)或者雷池(不开源但是有免费版)这种同类产品。作为玩具倒是很精巧。

就这些?

0x05 给调包人看的

肯定有人是搜到了这个贴子,并不想看技术分析而是想调包。行,看这里:
截止发稿日,它能够求解社区版的全部challenge,和官网以及git中全部的赞助者列表中使用了AnubisWAF的赞助者的定制版的challenge。我不知道作者会不会根据本文的内容更新,或者存在我不知道的定制版。如果有就烦请您自己摁一下F12吧。

Install

1
pip install anubis-solver

Use

1
2
3
4
5
6
7
8
import requests
from anubis_solver import solve
 
cookie = solve("0a9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6X3j5h3u0#2L8r3!0#2M7#2)9J5k6i4y4&6M7%4c8W2L8i4y4Q4x3V1j5`.")
print(cookie)
 
content = requests.get("eeeK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6X3j5h3u0#2L8r3!0#2M7#2)9J5k6i4y4&6M7%4c8W2L8i4y4Q4x3V1j5`.", headers={"Cookie": cookie}, verify=False).text
print(content)

完结撒花。


[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

最后于 2025-9-15 11:43 被the_hs编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回