#!/usr/bin/env python ''' Copyright (C) 2020, WAFW00F Developers. See the LICENSE file for copying permission. ''' NAME = 'DynamicWeb Injection Check (DynamicWeb)' def is_waf(self): # 定义用于检测是否存在特定 Web 应用防火墙(WAF)的方案列表。 schemes = [ # 检查响应头中是否存在'X-403-Status-By'字段且其值为'dw.inj.check',attack=True 可能表示用于攻击检测场景。 self.matchHeader(('X-403-Status-By', r'dw.inj.check'), attack=True), # 检查响应内容中是否包含特定字符串,表示'by dynamic check'以及可能跟随最多十个任意字符和可选的'module'字符串。 self.matchContent(r'by dynamic check(.{0,10}?module)?') ] # 如果方案列表中的任何一个方案为真,则认为检测到了 WAF。 if any(i for i in schemes): return True else: return False