Skip to main content

相关定义

被动指纹(Passive)

  • 不请求: 不写request结构
  • / 请求, 无其它额外设置
  • icon: 使用 getIconContent 函数

主动指纹(Active)

除被动指纹外的情况都属于主动指纹

编写规范(Prepare a specification)

目前 lint 会检查以下内容
  1. celcheck:用于校验 cel 语句是否能够运行,类型推到的结果是否正确。
  2. schemacheck:校验脚本内容是否符合编写的 json schema 格式,用于检测是否有必须填写的字段缺失。
  3. payloadcheck:检查每一个 payload 分支内声明的变量类型是否是一致的。
  4. transportcheck:校验 rule 中的请求是否符合规范。
  5. 相关细节以及对应修复方式请参考YAML插件修复手册
当存在多个‘或’逻辑的时候,系统会按序执行,直到命中一个才会停止,所以,将常命中的规则放在越靠前的位置能够有效的减少不必要的发包
被动指纹指的是只向根路径发包,或者只使用获取icon的函数进行指纹识别的指纹,而除了这两种情况,其他的都属于主动指纹。
例如匹配discuz的时候,关键词中最好带有该产品的特殊的内容,例如discuz_uid等。 特别的:部分通用系统存在二次开发修改title的情况,因此title只能作为辅助判断的逻辑,只能算作加强规则,不能作为决定性证据
一般来讲,符合第四点的情况下,两条规则即可
一般有两种情况,一种是spring的访问/env等路径,有些时候会被拦;一种情况是path中带有admin,有些waf会拦截
icontains在匹配时会忽略匹配字母的大小写,增加资源消耗
get404Path函数做了一些特殊处理,这个函数可以保证一个目标将仅拥有一个404path,这样便于使用cache,降低发包,提高效率。
getIconContent函数可以在响应中获取icon地址,然后访问这个icon获取其字节流数据。
例如:kw_in_body_01、kw_in_body_02
详情参考:三目运算符的使用方式

通过 ICON HASH 匹配

建议规则名称:favicon_hash

便捷计算icon hash的方式

将下列代码放入powershell中运行,请确保你对应版本的python有安装requests,mmh3包
使用示例:

使用内置函数自动搜索 ICON 路径

自定义 ICON 路径

通过内容MD5匹配

建议规则名称:md5_in_[position]

通过 Body 关键字匹配

建议规则名称:kw_in_body

基础模版(Basic templates)

匹配的字符串中包含引号(inverted comma)

忽略大小写(ignore capitals)

二进制内容匹配(binary)

通过 Header 关键字匹配

建议规则名称:kw_in_header || kw_in_[header_name]

Server 匹配

不常见的 Header Key 匹配(规则名称统一使用 kw_in_header)

判断某个 Key 是否在 Headers 中

在完整响应头中匹配(raw_header)

通过 CERT 关键字匹配

建议规则名称:kw_in_cert

通过 404Path 进行特征匹配

多个 Context 匹配的简化写法

使用正则表达式进行匹配(RE)

使用正则提取信息(RE)