跳到主要内容

httptpl

httptpl 库提供基于 YAML 模板(Nuclei 风格)的 HTTP 匹配与提取能力,对给定请求/响应套用 matcher/extractor 规则,判断是否命中并抽取数据,是模板化漏洞检测的底层匹配引擎。

典型使用场景:

  • 匹配提取:httptpl.MatchOrExtractHTTPFlow(req, rsp, yamlString, opts...) 用 YAML 模板对一次 HTTP 交互做匹配与字段提取。
  • 选项:httptpl.https 指定 HTTPS,httptpl.vars 注入模板变量。

与相邻库的关系:httptplnuclei(完整 PoC 模板执行)、fuzz/poc(请求构造发送)配合,把"matcher/extractor 规则"应用到任意流量上。

共 3 个函数

可变参数函数索引

函数参数返回值说明
httptpl.MatchOrExtractHTTPFlowreq any, rsp any, yamlString string, opts ...MatchOrExtractOption*MatchOrExtractResult, error针对单个 HTTP 请求/响应对,执行 yamlString 中定义的 nuclei 风格 matcher 与 extractor

可变参数函数详情

MatchOrExtractHTTPFlow

MatchOrExtractHTTPFlow(req any, rsp any, yamlString string, opts ...MatchOrExtractOption) (*MatchOrExtractResult, error)

针对单个 HTTP 请求/响应对,执行 yamlString 中定义的 nuclei 风格 matcher 与 extractor

必填参数

参数名类型说明
reqany请求报文(字符串或字节数组),可为空(将尝试从响应推导)
rspany响应报文(字符串或字节数组)
yamlStringstring定义 matchers/extractors 的 nuclei 风格 YAML 字符串

可选参数

可作为可变参数 opts ...MatchOrExtractOption 传入选项;共 2 个可用选项,详见 MatchOrExtractOption 选项列表

返回值

序号类型说明
r1*MatchOrExtractResult匹配/提取结果,包含是否命中(IsMatched)与提取到的变量(Extracted)
r2error错误信息,规则为空或解析失败时返回非空

示例

rsp = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<title>Example Domain</title>"
rule = `matchers:
- type: word
part: body
words:
- "Example Domain"`

result = httptpl.MatchOrExtractHTTPFlow("", rsp, rule)~
println(result.IsMatched) // OUT: true
assert result.IsMatched == true, "word matcher should match the response body"

可变参数选项列表

以下按选项类型汇总全部可变参数选项(原先重复在各主函数下的选项表已收拢到此处):

1. 类型:MatchOrExtractOption

涉及到的函数有:httptpl.MatchOrExtractHTTPFlow

选项函数参数返回值说明
httptpl.httpsenable boolMatchOrExtractOptionMatchOrExtractHTTPS 是一个配置选项,用于在解析请求 URL 时声明是否按 HTTPS 处理
httptpl.varsitems map[string]anyMatchOrExtractOptionMatchOrExtractVars 是一个配置选项,用于在匹配/提取执行期间注入自定义的 nuclei-dsl 变量