-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Labels
Description
受到西厢计划第三季的启发,本人在近日不停地构造乱七八糟的http报文,测试能否逃过gfw的关键词检测.实验站点为sis001.
已知关键词检测分三步:协议检测,拆包,关键词匹配.通过缩小范围,本人发现其协议判断基于头部关键词"GET / ",匹配逻辑可能为:
GET -> 第一个回车 -> 是否为键值对(a:b) -> a是否为host -> 是的话开始匹配后面的域名,否的话跳到下一个回车,继续第三步.
也就是说,就算请求的是sis001.com.cn也会触发封锁.
所以能够逃过检测的报文可以这样:
(报头GET前有内容,如果是回车的话部分服务器勉强能响应这种报文)
\nGET / HTTP/1.1\nHost:sis001.com.cn\nConnection:close\n\n
或者这样:
(夹了一个非键值对的内容,多数服务器可以正常响应这种报文)
GET / HTTP/1.1\na\nHost:sis001.com.cn\nConnection:close\n\n
发送了这种报文后包括sis001等网站就能正常返回页面而不会被reset了.
如果gfw要修补这种漏洞,我觉得其实可以直接匹配第一个遇到的"\nHost:",再匹配后面的域名就行了.
参考资料:
HTTP URL/深度关键词检测
翻墙路由器的原理与实现
Metadata
Metadata
Assignees
Labels
Projects
Milestone
Relationships
Development
Select code repository
Activity