diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/access.lua b/apps/openresty/1.21.4.3-0-focal/www/common/waf/access.lua
deleted file mode 100644
index 67040aea..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/access.lua
+++ /dev/null
@@ -1,394 +0,0 @@
-local match = string.match
-local ngxMatch=ngx.re.match
-local unescape=ngx.unescape_uri
-local get_headers = ngx.req.get_headers
-local cjson = require "cjson"
-local content_length=tonumber(ngx.req.get_headers()['content-length'])
-local method=ngx.req.get_method()
-
-
-local function optionIsOn(options)
- return options == "on" or options == "On" or options == "ON"
-end
-
-local logPath = ngx.var.logdir
-local rulePath = ngx.var.RulePath
-local PostDeny = optionIsOn(ngx.var.postDeny)
-
-local function getClientIp()
- IP = ngx.var.remote_addr
- if IP == nil then
- IP = "unknown"
- end
- return IP
-end
-local function write(logfile,msg)
- local fd = io.open(logfile,"ab")
- if fd == nil then return end
- fd:write(msg)
- fd:flush()
- fd:close()
-end
-local function log(method,url,data,ruletag)
- local attackLog = optionIsOn(ngx.var.attackLog)
- if attackLog then
- local realIp = getClientIp()
- local ua = ngx.var.http_user_agent
- local servername=ngx.var.server_name
- local time=ngx.localtime()
- local line = nil
- if ua then
- line = realIp.." ["..time.."] \""..method.." "..servername..url.."\" \""..data.."\" \""..ua.."\" \""..ruletag.."\"\n"
- else
- line = realIp.." ["..time.."] \""..method.." "..servername..url.."\" \""..data.."\" - \""..ruletag.."\"\n"
- end
- local filename = logPath..'/'..servername.."_"..ngx.today().."_sec.log"
- write(filename,line)
- end
-end
-------------------------------------规则读取函数-------------------------------------------------------------------
-local function read_json(var)
- file = io.open(rulePath..'/'..var .. '.json',"r")
- if file==nil then
- return
- end
- str = file:read("*a")
- file:close()
- list = cjson.decode(str)
- return list
-end
-
-local function select_rules(rules)
- if not rules then return {} end
- new_rules = {}
- for i,v in ipairs(rules) do
- if v[3] == 1 then
- table.insert(new_rules,v[1])
- end
- end
- return new_rules
-end
-
-local function read_str(var)
- file = io.open(rulePath..'/'..var,"r")
- if file==nil then
- return
- end
- local str = file:read("*a")
- file:close()
- return str
-end
-
-local html=read_str('warn.html')
-
-local function say_html()
- local redirect = optionIsOn(ngx.var.redirect)
- if redirect then
- ngx.header.content_type = "text/html"
- ngx.status = ngx.HTTP_FORBIDDEN
- ngx.say(html)
- ngx.exit(ngx.status)
- end
-end
-
-local function whiteUrlCheck()
- local urlWhiteAllow = optionIsOn(ngx.var.urlWhiteAllow)
- if urlWhiteAllow then
- local urlWhiteList = read_json('url_white')
- if urlWhiteList ~= nil then
- for _, rule in pairs(urlWhiteList) do
- if ngxMatch(ngx.var.uri, rule, "isjo") then
- return true
- end
- end
- end
- end
- return false
-end
-
-local function fileExtCheck(ext)
- local fileExtDeny = optionIsOn(ngx.var.fileExtDeny)
- if fileExtDeny then
- local fileExtBlockList = read_json('fileExtBlockList')
- local items = Set(fileExtBlockList)
- ext=string.lower(ext)
- if ext then
- for rule in pairs(items) do
- if ngx.re.match(ext,rule,"isjo") then
- log('POST',ngx.var.request_uri,"-","file attack with ext "..ext)
- say_html()
- end
- end
- end
- end
- return false
-end
-function Set (list)
- local set = {}
- for _, l in ipairs(list) do set[l] = true end
- return set
-end
-
-local function getArgsCheck()
- local argsDeny = optionIsOn(ngx.var.argsDeny)
- if argsDeny then
- local argsCheckList=select_rules(read_json('args_check'))
- if argsCheckList then
- for _,rule in pairs(argsCheckList) do
- local uriArgs = ngx.req.get_uri_args()
- for key, val in pairs(uriArgs) do
- if type(val)=='table' then
- local t={}
- for k,v in pairs(val) do
- if v == true then
- v=""
- end
- table.insert(t,v)
- end
- data=table.concat(t, " ")
- else
- data=val
- end
- if data and type(data) ~= "boolean" and rule ~="" and ngxMatch(unescape(data),rule,"isjo") then
- log('GET',ngx.var.request_uri,"-",rule)
- say_html()
- return true
- end
- end
- end
- end
- end
- return false
-end
-
-
-local function blockUrlCheck()
- local urlBlockDeny = optionIsOn(ngx.var.urlBlockDeny)
- if urlBlockDeny then
- local urlBlockList=read_json('url_block')
- for _, rule in pairs(urlBlockList) do
- if rule ~= "" and ngxMatch(ngx.var.request_uri, rule, "isjo") then
- log('GET', ngx.var.request_uri, "-", rule)
- say_html()
- return true
- end
- end
- end
- return false
-end
-
-function ua()
- local ua = ngx.var.http_user_agent
- if ua ~= nil then
- local uaRules = select_rules(read_json('user_agent'))
- for _,rule in pairs(uaRules) do
- if rule ~="" and ngxMatch(ua,rule,"isjo") then
- log('UA',ngx.var.request_uri,"-",rule)
- say_html()
- return true
- end
- end
- end
- return false
-end
-function body(data)
- local postCheckList = select_rules(read_json('post_check'))
- for _,rule in pairs(postCheckList) do
- if rule ~="" and data~="" and ngxMatch(unescape(data),rule,"isjo") then
- log('POST',ngx.var.request_uri,data,rule)
- say_html()
- return true
- end
- end
- return false
-end
-local function cookieCheck()
- local ck = ngx.var.http_cookie
- local cookieDeny = optionIsOn(ngx.var.cookieDeny)
- if cookieDeny and ck then
- local cookieBlockList = select_rules(read_json('cookie_block'))
- for _,rule in pairs(cookieBlockList) do
- if rule ~="" and ngxMatch(ck,rule,"isjo") then
- log('Cookie',ngx.var.request_uri,"-",rule)
- say_html()
- return true
- end
- end
- end
- return false
-end
-
-local function denyCC()
- local ccRate = read_str('cc.json')
- local ccDeny = optionIsOn(ngx.var.CCDeny)
- if ccDeny and ccRate then
- local uri=ngx.var.uri
- ccCount=tonumber(string.match(ccRate,'(.*)/'))
- ccSeconds=tonumber(string.match(ccRate,'/(.*)'))
- local access_uri = getClientIp()..uri
- local limit = ngx.shared.limit
- local req,_=limit:get(access_uri)
- if req then
- if req > ccCount then
- ngx.exit(503)
- return true
- else
- limit:incr(access_uri,1)
- end
- else
- limit:set(access_uri,1,ccSeconds)
- end
- end
- return false
-end
-
-local function get_boundary()
- local header = get_headers()["content-type"]
- if not header then
- return nil
- end
-
- if type(header) == "table" then
- header = header[1]
- end
-
- local m = match(header, ";%s*boundary=\"([^\"]+)\"")
- if m then
- return m
- end
-
- return match(header, ";%s*boundary=([^\",;]+)")
-end
-
-local function whiteIpCheck()
- local ipWhiteAllow = optionIsOn(ngx.var.ipWhiteAllow)
- if ipWhiteAllow then
- local ipWhiteList=read_json('ip_white')
- if next(ipWhiteList) ~= nil then
- for _,ip in pairs(ipWhiteList) do
- if getClientIp()==ip then
- return true
- end
- end
- end
- end
- return false
-end
-
-local function blockIpCheck()
- local ipBlockDeny = optionIsOn(ngx.var.ipBlockDeny)
- if ipBlockDeny then
- local ipBlockList=read_json('ip_block')
- if next(ipBlockList) ~= nil then
- for _,ip in pairs(ipBlockList) do
- if getClientIp()==ip then
- ngx.exit(403)
- return true
- end
- end
- end
- end
- return false
-end
-
-local function handleBodyKeyOrVal(kv)
- if type(kv) == "table" then
- if type(kv[1]) == "boolean" then
- return
- end
- data = table.concat(kv, ", ")
- else
- data = kv
- end
- if data then
- if type(data) ~= "boolean" then
- body(data)
- end
- end
-end
-
-local function postCheck()
- if method == "POST" then
- local boundary = get_boundary()
- local fileExtDeny = optionIsOn(ngx.var.fileExtDeny)
- if boundary and fileExtDeny then
- local protocol = ngx.var.server_protocol
- if protocol == "HTTP/2.0" then
- return
- end
- local len = string.len
- local sock = ngx.req.socket()
- if not sock then
- return
- end
- ngx.req.init_body(128 * 1024)
- sock:settimeout(0)
- local contentLength = nil
- contentLength = tonumber(ngx.req.get_headers()['content-length'])
- local chunk_size = 4096
- if contentLength < chunk_size then
- chunk_size = contentLength
- end
- local size = 0
- while size < contentLength do
- local data, err, partial = sock:receive(chunk_size)
- data = data or partial
- if not data then
- return
- end
- ngx.req.append_body(data)
- if body(data) then
- return true
- end
- size = size + len(data)
- local m = ngxMatch(data, 'Content-Disposition: form-data; (.+)filename="(.+)\\.(.*)"', 'ijo')
- if m then
- fileExtCheck(m[3])
- fileTranslate = true
- else
- if ngxMatch(data, "Content-Disposition:", 'isjo') then
- fileTranslate = false
- end
- if fileTranslate == false then
- if body(data) then
- return true
- end
- end
- end
- local less = content_length - size
- if less < chunk_size then
- chunk_size = less
- end
- end
- ngx.req.finish_body()
- else
- ngx.req.read_body()
- local bodyObj = ngx.req.get_post_args()
- if not bodyObj then
- return
- end
- for key, val in pairs(bodyObj) do
- handleBodyKeyOrVal(key)
- handleBodyKeyOrVal(val)
- end
- end
- end
-end
-
-if whiteIpCheck() then
-elseif blockIpCheck() then
-elseif denyCC() then
-elseif ngx.var.http_Acunetix_Aspect then
- ngx.exit(444)
-elseif ngx.var.http_X_Scan_Memo then
- ngx.exit(444)
-elseif whiteUrlCheck() then
-elseif ua() then
-elseif blockUrlCheck() then
-elseif getArgsCheck() then
-elseif cookieCheck() then
-elseif PostDeny then
- postCheck()
-else
- return
-end
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/init.lua b/apps/openresty/1.21.4.3-0-focal/www/common/waf/init.lua
deleted file mode 100644
index 84f342c3..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/init.lua
+++ /dev/null
@@ -1 +0,0 @@
-ngx.log(ngx.INFO,"init success")
\ No newline at end of file
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/args_check.json b/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/args_check.json
deleted file mode 100644
index 0b1767cb..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/args_check.json
+++ /dev/null
@@ -1,26 +0,0 @@
-[
- ["\\.\\./\\.\\./", "\u76ee\u5f55\u4fdd\u62a41", 1 ],
- ["(?:etc\\/\\W*passwd)", "\u76ee\u5f55\u4fdd\u62a43", 1 ],
- ["(gopher|doc|php|glob|^file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 1 ],
- ["base64_decode\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee43", 1],
- ["(?:define|eval|file_get_contents|include|require|require_once|shell_exec|phpinfo|system|passthru|char|chr|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog)\\(", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee44", 1 ],
- ["\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[", "\u4e00\u53e5\u8bdd\u6728\u9a6c\u8fc7\u6ee45", 1],
- ["select.+(from|limit)", "SQL\u6ce8\u5165\u8fc7\u6ee42", 1 ],
- ["(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 1 ],
- ["benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 1],
- ["(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 1],
- ["(?:(?:current_)user|database|concat|extractvalue|polygon|updatexml|geometrycollection|schema|multipoint|multipolygon|connection_id|linestring|multilinestring|exp|right|sleep|group_concat|load_file|benchmark|file_put_contents|urldecode|system|file_get_contents|select|substring|substr|fopen|popen|phpinfo|user|alert|scandir|shell_exec|eval|execute|concat_ws|strcmp|right)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 1 ],
- ["\\<(iframe|script|body|img|layer|div|meta|style|base|object)", "XSS\u8fc7\u6ee41", 1],
- ["(invokefunction|call_user_func_array|\\\\think\\\\)", "ThinkPHP payload\u5c01\u5835", 1 ],
- ["^url_array\\[.*\\]$", "Metinfo6.x XSS\u6f0f\u6d1e", 1],
- ["(extractvalue\\(|concat\\(0x|user\\(\\)|substring\\(|count\\(\\*\\)|substring\\(hex\\(|updatexml\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 1],
- ["(@@version|load_file\\(|NAME_CONST\\(|exp\\(\\~|floor\\(rand\\(|geometrycollection\\(|multipoint\\(|polygon\\(|multipolygon\\(|linestring\\(|multilinestring\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee402", 1],
- ["(ORD\\(|MID\\(|IFNULL\\(|CAST\\(|CHAR\\()", "SQL\u6ce8\u5165\u8fc7\u6ee41", 1],
- ["(EXISTS\\(|SELECT\\#|\\(SELECT)", "SQL\u6ce8\u5165\u8fc7\u6ee41", 1],
- ["(bin\\(|ascii\\(|benchmark\\(|concat_ws\\(|group_concat\\(|strcmp\\(|left\\(|datadir\\(|greatest\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 1],
- ["(?:from.+?information_schema.+?)", "", 1],
- ["(array_map\\(\"ass)", "\u83dc\u5200\u6d41\u91cf\u8fc7\u6ee4", 1],
- ["'$", "test", 1],
- ["\\${jndi:", "log4j2\u62e6\u622a", 1 ],
- ["terrewrewrwr", "", 1]
-]
\ No newline at end of file
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/cc.json b/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/cc.json
deleted file mode 100644
index 2286d9b8..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/cc.json
+++ /dev/null
@@ -1 +0,0 @@
-100/60
\ No newline at end of file
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/cookie_block.json b/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/cookie_block.json
deleted file mode 100644
index 659a58c0..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/cookie_block.json
+++ /dev/null
@@ -1,12 +0,0 @@
-[
- ["base64_decode\\(","一句话木马过滤3",1],
- ["\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)\\[","一句话木马过滤5",1],
- ["select.+(from|limit)","SQL注入过滤2",1],
- ["(?:(union(.*?)select))","SQL注入过滤3",1],
- ["sleep\\((\\s*)(\\d*)(\\s*)\\)","SQL注入过滤5",1],
- ["benchmark\\((.*)\\,(.*)\\)","SQL注入过滤6",1],
- ["(?:from\\W+information_schema\\W)","SQL注入过滤7",1],
- ["(?:(?:current_)user|database|schema|connection_id)\\s*\\(","SQL注入过滤8",1],
- ["into(\\s+)+(?:dump|out)file\\s*","SQL注入过滤9",1],
- ["group\\s+by.+\\(","SQL注入过滤10",1]
-]
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/file_ext_block.json b/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/file_ext_block.json
deleted file mode 100644
index 4bfec715..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/file_ext_block.json
+++ /dev/null
@@ -1 +0,0 @@
-["php","jsp"]
\ No newline at end of file
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/ip_block.json b/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/ip_block.json
deleted file mode 100644
index 0637a088..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/ip_block.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/ip_white.json b/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/ip_white.json
deleted file mode 100644
index 0637a088..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/ip_white.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/post_check.json b/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/post_check.json
deleted file mode 100644
index 22d80c6e..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/post_check.json
+++ /dev/null
@@ -1,22 +0,0 @@
-[
- ["\\.\\./\\.\\./", "\u76ee\u5f55\u4fdd\u62a41", 1],
- ["(?:etc\\/\\W*passwd)", "\u76ee\u5f55\u4fdd\u62a43", 1],
- ["(gopher|doc|php|glob|^file|phar|zlib|ftp|ldap|dict|ogg|data)\\:\\/", "PHP\u6d41\u534f\u8bae\u8fc7\u6ee41", 1],
- ["base64_decode\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee41", 1],
- ["(?:define|eval|file_get_contents|include|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog|file_put_contents|fopen|urldecode|scandir)\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee42", 1],
- ["\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee43", 1],
- ["select.+(from|limit)", "SQL\u6ce8\u5165\u8fc7\u6ee42",1],
- ["(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43",1],
- ["benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 1],
- ["(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 1],
- ["(?:(?:current_)user|database|concat|extractvalue|polygon|updatexml|geometrycollection|schema|multipoint|multipolygon|connection_id|linestring|multilinestring|exp|right|sleep|group_concat|load_file|benchmark|file_put_contents|urldecode|system|file_get_contents|select|substring|substr|fopen|popen|phpinfo|user|alert|scandir|shell_exec|eval|execute|concat_ws|strcmp|right)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48",1],
- ["(extractvalue\\(|concat\\(|user\\(\\)|substring\\(|count\\(\\*\\)|substring\\(hex\\(|updatexml\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 1],
- ["(@@version|load_file\\(|NAME_CONST\\(|exp\\(\\~|floor\\(rand\\(|geometrycollection\\(|multipoint\\(|polygon\\(|multipolygon\\(|linestring\\(|multilinestring\\(|right\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee402", 1],
- ["(substr\\()", "SQL\u6ce8\u5165\u8fc7\u6ee410", 1],
- ["(ORD\\(|MID\\(|IFNULL\\(|CAST\\(|CHAR\\()", "SQL\u6ce8\u5165\u8fc7\u6ee41", 1],
- ["(EXISTS\\(|SELECT\\#|\\(SELECT|select\\()", "SQL\u6ce8\u5165\u8fc7\u6ee41", 1],
- ["(array_map\\(\"ass)", "\u83dc\u5200\u6d41\u91cf\u8fc7\u6ee4", 1],
- ["(bin\\(|ascii\\(|benchmark\\(|concat_ws\\(|group_concat\\(|strcmp\\(|left\\(|datadir\\(|greatest\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 1],
- ["(?:from.+?information_schema.+?)", "", 1],
- ["\\${jndi:", "log4j2\u62e6\u622a", 1]
-]
\ No newline at end of file
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/url_block.json b/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/url_block.json
deleted file mode 100644
index 0637a088..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/url_block.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/url_white.json b/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/url_white.json
deleted file mode 100644
index 0637a088..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/url_white.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
\ No newline at end of file
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/user_agent.json b/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/user_agent.json
deleted file mode 100644
index 1f812573..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/user_agent.json
+++ /dev/null
@@ -1,17 +0,0 @@
-[
- ["(WPScan|HTTrack|antSword|harvest|audit|dirbuster|pangolin|nmap|sqln|hydra|Parser|libwww|BBBike|sqlmap|w3af|owasp|Nikto|fimap|havij|zmeu|BabyKrokodil|netsparker|httperf| SF/)", "\u5173\u952e\u8bcd\u8fc7\u6ee41", 1],
- ["(?:define|eval|file_get_contents|include|require_once|shell_exec|phpinfo|system|passthru|chr|char|preg_\\w+|execute|echo|print|print_r|var_dump|(fp)open|alert|showmodaldialog|file_put_contents|fopen|urldecode|scandir)\\(", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee42", 1],
- ["\\$_(GET|post|cookie|files|session|env|phplib|GLOBALS|SERVER)", "\u4e00\u53e5\u8bdd*\u5c4f\u853d\u7684\u5173\u952e\u5b57*\u8fc7\u6ee43", 1],
- ["select\\s+.+(from|limit)\\s+", "SQL\u6ce8\u5165\u8fc7\u6ee42", 1],
- ["(?:(union(.*?)select))", "SQL\u6ce8\u5165\u8fc7\u6ee43", 1],
- ["benchmark\\((.*)\\,(.*)\\)", "SQL\u6ce8\u5165\u8fc7\u6ee46", 1],
- ["(?:from\\W+information_schema\\W)", "SQL\u6ce8\u5165\u8fc7\u6ee47", 1],
- ["(?:(?:current_)user|database|schema|connection_id)\\s*\\(", "SQL\u6ce8\u5165\u8fc7\u6ee48", 1],
- ["(extractvalue\\(|concat\\(0x|user\\(\\)|substring\\(|count\\(\\*\\)|substring\\(hex\\(|updatexml\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 1],
- ["(@@version|load_file\\(|NAME_CONST\\(|exp\\(\\~|floor\\(rand\\(|geometrycollection\\(|multipoint\\(|polygon\\(|multipolygon\\(|linestring\\(|multilinestring\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee402", 1],
- ["(substr\\()", "SQL\u6ce8\u5165\u8fc7\u6ee410", 1],
- ["(ORD\\(|MID\\(|IFNULL\\(|CAST\\(|CHAR\\))", "SQL\u6ce8\u5165\u8fc7\u6ee41", 1],
- ["(EXISTS\\(|SELECT\\#|\\(SELECT)", "SQL\u6ce8\u5165\u8fc7\u6ee41", 1],
- ["(array_map\\(\"ass)", "\u83dc\u5200\u6d41\u91cf\u8fc7\u6ee4", 1],
- ["(bin\\(|ascii\\(|benchmark\\(|concat_ws\\(|group_concat\\(|strcmp\\(|left\\(|datadir\\(|greatest\\()", "SQL\u62a5\u9519\u6ce8\u5165\u8fc7\u6ee401", 1]
-]
\ No newline at end of file
diff --git a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/warn.html b/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/warn.html
deleted file mode 100644
index 760808b9..00000000
--- a/apps/openresty/1.21.4.3-0-focal/www/common/waf/rules/warn.html
+++ /dev/null
@@ -1,136 +0,0 @@
-
-