pull/2/head
Safe3 2 years ago
parent a600425186
commit d01d1913f6

@ -1 +1 @@
tina.js.org
waf.uusec.com

@ -4,6 +4,10 @@ article img.sd {
margin-top: 20px;
}
article h2 img.emoji {
height: 1.75rem;
}
section.cover.has-mask .mask {
opacity: 0;
height: 100vh;

File diff suppressed because one or more lines are too long

@ -1,3 +1,5 @@
- [官网](https://www.uusec.com/)
- [首页](/)
- [指南](/#main)
- [API](/api/README.md)
- [博客](https://blog.uusec.com/)

@ -0,0 +1,309 @@
## 全局配置
### init_by_lua_block
- 类型: ``table``
- 默认值: ``{ host = "127.0.0.1", port = 3306, user = "root", password = "safe3.waf" }``
- 用法:
```lua
local conf = { host = "127.0.0.1", port = 3306, user = "root", password = "safe3.waf" }
```
local conf变量位于/uuwaf/conf/uuwaf.conf中用于配置waf要读取配置的mysql数据库连接的ip、端口号、用户名和密码。
## 规则
这里对规则所用到的一些变量和相关函数进行说明更多规则编写方法请大家参照WAF管理后台中的规则管理当中的众多实际例子。
### 规则变量
#### 请求阶段变量
##### waf.ip
- 类型: ``string``
- 默认值: ``客户端访问ip``
- 用法: 只读用于获取客户端访问ip可以在WAF后台站点管理中配置客户端ip来源获取方式为Socket或X-Forwarded-For中的倒序第n个ip。
##### waf.host
- 类型: ``string``
- 默认值: ``客户端访问host头``
- 用法: 只读。
##### waf.requestLine
- 类型: ``string``
- 默认值: ``原始的request line数据``
- 用法: 只读。
##### waf.uri
- 类型: ``string``
- 默认值: ``解码处理过的URI不带参数``
- 用法: 只读。
##### waf.method
- 类型: ``string``
- 默认值: ``请求方法``
- 用法: 只读。
##### waf.reqUri
- 类型: ``string``
- 默认值: ``原始URI带参数``
- 用法: 只读。
##### waf.userAgent
- 类型: ``string``
- 默认值: ``客户端请求的User-Agent头数据``
- 用法: 只读。
##### waf.referer
- 类型: ``string``
- 默认值: ``客户端请求的Referer头数据``
- 用法: 只读。
##### waf.reqContentType
- 类型: ``string``
- 默认值: ``客户端请求的Content-Type头数据``
- 用法: 只读。
##### waf.XFF
- 类型: ``string``
- 默认值: ``客户端请求的X-Forwarded-For头数据``
- 用法: 只读。
##### waf.origin
- 类型: ``string``
- 默认值: ``客户端请求的Origin头数据``
- 用法: 只读。
##### waf.reqHeaders
- 类型: ``table``
- 默认值: ``请求的所有header对象``
- 用法: 只读。
##### waf.hErr
- 类型: ``string``
- 默认值: ``请求header解析出错信息``
- 用法: 只读。
##### waf.isQueryString
- 类型: ``bool``
- 默认值: ``true或false``
- 用法: 只读,是否存在请求参数。
##### waf.reqContentLength
- 类型: ``number``
- 默认值: ``0``
- 用法: 只读请求body内容长度整数值。
##### waf.queryString
- 类型: ``table``
- 默认值: ``请求url参数key、value``
- 用法: 只读。
##### waf.qErr
- 类型: ``string``
- 默认值: ``请求参数解析出错信息``
- 用法: 只读。
##### waf.form
- 类型: ``table``
- 默认值: ``请求body对象``
- 用法: 只读。
##### waf.form["RAW"]
- 类型: ``string``
- 默认值: ``请求body的原始数据``
- 用法: 只读。
##### waf.form["FORM"]
- 类型: ``table``
- 默认值: ``请求body参数key、value``
- 用法: 只读,表单如: {uid="12",vid={[1]="select",[2]="a from b"}}。
##### waf.form["FILES"]
- 类型: ``table``
- 默认值: ``解析出的请求body中上传文件信息``
- 用法: 只读,文件信息如: {name={[1]="filename",[2]="file content"}}。
##### waf.fErr
- 类型: ``string``
- 默认值: ``解析请求body出错信息``
- 用法: 只读,一般是恶意畸形请求包。
##### waf.cookies
- 类型: ``table``
- 默认值: ``请求cookie参数key、value``
- 用法: 只读。
##### waf.cErr
- 类型: ``string``
- 默认值: ``解析请求cookie出错信息``
- 用法: 只读。
#### 返回http头阶段新增变量
##### waf.status
- 类型: ``number``
- 默认值: ``返回http状态整数值``
- 用法: 只读。
##### waf.respHeaders
- 类型: ``table``
- 默认值: ``返回的所有header对象key、value``
- 用法: 只读。
##### waf.respContentLength
- 类型: ``number``
- 默认值: ``返回body内容长度整数值``
- 用法: 只读。
##### waf.respContentType
- 类型: ``string``
- 默认值: ``服务端返回的Content-Type头数据``
- 用法: 只读。
#### 返回页面阶段新增变量
##### waf.respBody
- 类型: ``string``
- 默认值: ``返回body页面内容``
- 用法: 只读。
### 规则 API
#### 规则通用 API
##### waf.startWith(sstr,dstr)
- 参数: ``sstr 为原字符串dstr 为查找字符串``
- 功能: 判断字符串 sstr 是否以 dstr 开头
- 返回值: ``true 或 false``
##### waf.endWith(sstr,dstr)
- 参数: ``sstr 为原字符串dstr 为查找字符串``
- 功能: 判断字符串 sstr 是否以 dstr 结尾
- 返回值: ``true 或 false``
##### waf.toLower(sstr)
- 参数: ``sstr 为原字符串``
- 功能: 将字符串 sstr 转化为小写
- 返回值: ``sstr 小写``
##### waf.contains(sstr,dstr)
- 参数: ``sstr 为原字符串dstr 为查找字符串``
- 功能: 判断字符串 sstr 是否在字符串 dstr
- 返回值: ``true 或 false``
##### waf.rgxMatch(sstr,pat,ext)
- 参数: ``sstr 为原字符串pat 为正则表达式ext 为正则属性``
- 功能: 在字符串 sstr 中匹配正则表达式 pat
- 返回值: ``true 或 false``
##### waf.kvFilter(v,match,valOnly)
- 参数: ``v 为要匹配对象match 为匹配函数,valOnly 为 true 则只匹配 value``
- 功能: 用于匹配 cookie、queryString 等 keyvalue 键值对数据,在对象 v 中用 match 函 数匹配内容
- 返回值: ``true,匹配内容或 false,nil``
##### waf.knFilter(v,match,p)
- 参数: ``v 为要匹配对象match 为匹配函数p 为 1 时匹配上传文件名,为 0 时文件内容``
- 功能: 用于过滤上传文件信息,在对象 v 中用 match 函数匹配内容
- 返回值: ``true,匹配内容或 false,nil``
##### waf.jsonFilter(v, match,parsed,valOnly)
- 参数: ``v 为要匹配对象match 为匹配函数parsed 为 false 时解析类型为字符串 v 值,为 true 时解析类型为 table 的 v 值, valOnly 为 true 则只匹配 value``
- 功能: 用于遍历过滤请求中的 json 数据,在对象 v 中用 match 函数匹配内容
- 返回值: ``true,匹配内容或 false,nil``
##### waf.base64Decode(str)
- 参数: ``str 为要解码的 base64 字符串``
- 功能: 用于解码 base64 数据为明文数据
- 返回值: ``明文字符串或 nil``
##### waf.checkSQLI(str)
- 参数: ``str 为要检测的字符串``
- 功能: 基于语义引擎检测 sql 注入攻击
- 返回值: ``true 或 false``
##### waf.checkRCE(str)
- 参数: ``str 为要检测的字符串``
- 功能: 基于语义引擎检测命令注入攻击
- 返回值: ``true 或 false``
##### waf.checkPT(str)
- 参数: ``str 为要检测的字符串``
- 功能: 基于语义引擎检测路径遍历攻击
- 返回值: ``true 或 false``
##### waf.strCounter(sstr,dstr)
- 参数: ``sstr 为原字符串dstr 为查找字符串``
- 功能: 计算字符串 dstr 在 sstr 中出现的次数
- 返回值: ``整数``
##### waf.pmMatch(sstr,dict)
- 参数: ``sstr 为原字符串dict 为查找字典,以 lua 表的形式,如:{“aaa”, “bbb”, “ccc”}``
- 功能: 高效多模匹配多个字符串,发现其中一个字符串立即返回
- 返回值: ``true字典中的字符串或 falsenil``
##### waf.urlDecode(sstr)
- 参数: ``sstr 为原字符串``
- 功能: 将 sstr 进行 url 解码还原成字符串
- 返回值: ``解码后的字符串``
##### waf.htmlEntityDecode(sstr)
- 参数: ``sstr 为原字符串``
- 功能: 将字符串 sstr 进行 html 实体解码
- 返回值: ``解码后的字符串``
##### waf.hexDecode(sstr)
- 参数: ``sstr 为原字符串``
- 功能: 将字符串 sstr 进行 hex 解码
- 返回值: ``解码后的字符串``

@ -0,0 +1 @@
- [API](api/README.md)

@ -6,7 +6,7 @@
!> **南墙**WEB应用防火墙简称`uuWAF`是有安科技推出的一款全方位网站防护产品。通过有安科技专有的WEB入侵异常检测等技术结合有安科技团队多年应用安全的攻防理论和应急响应实践经验积累的基础上自主研发而成。协助各级政府、企/事业单位全面保护WEB应用安全实现WEB服务器的全方位防护解决方案。
## 技术优势 <!-- {docsify-ignore} -->
## :dart: 技术优势 <!-- {docsify-ignore} -->
- :libra: 先进语义引擎
南墙采用业界领先的`SQL、XSS、RCE、LFI` 4种基于语义分析的检测引擎结合多种深度解码引擎可对`base64、json、form-data`等HTTP内容真实还原从而有效抵御各种绕过WAF的攻击方式并且相比传统正则匹配具备准确率高、误报率低、效率高等特点管理员无需维护庞杂的规则库即可拦截多种攻击类型。
@ -21,7 +21,7 @@
## 界面预览 <!-- {docsify-ignore} -->
## :art: 界面预览 <!-- {docsify-ignore} -->
南墙为你提供了简单易用的WAF后台管理界面安装完成后所有操作都可以在浏览器中完成所有配置无需重启立即生效远超市面上大部分免费WAF产品如`ModSecurity`,如下:

@ -4,14 +4,14 @@
## 事前准备 <!-- {docsify-ignore} -->
?> :blue_book: 如果你还不熟悉南墙,建议先阅读 [南墙WAF使用手册](https://waf.uusec.com/_media/南墙WAF使用手册.pdf)。
## :beginner:事前准备 <!-- {docsify-ignore} -->
?> 如果你还不熟悉南墙,建议先阅读 [南墙WAF使用手册](https://waf.uusec.com/_media/南墙WAF使用手册.pdf)。
## 登录后台 <!-- {docsify-ignore} -->
## :computer: 登录后台 <!-- {docsify-ignore} -->
?> :pushpin: 浏览器打开 https://127.0.0.1:4443/ 默认用户名admin密码wafadmin
?> 浏览器打开 https://127.0.0.1:4443/ 默认用户名admin密码wafadmin
!> 注意登录后请及时修改默认密码并开启动态口令以保证WAF管理后台账户安全。由于后台动态口令采用的是安全性更高的HMAC-SHA256算法与一般动态口令客户端不兼容这里建议iOS用户使用 [Google Authenticator](https://apps.apple.com/cn/app/google-authenticator/id388497605),安卓用户使用 [FreeOTP](https://f-droid.org/zh_Hans/packages/org.liberty.android.freeotpplus/)。

@ -3,8 +3,8 @@
## 参与方法
?> :gift_heart: 贡献者以 PR 的方式向 github 南墙社区仓库内提交。
## :gift_heart: 参与方法 <!-- {docsify-ignore} -->
?> 贡献者以 PR 的方式向 github 南墙社区仓库内提交。
- 规则提交位置: https://github.com/Safe3/uuWAF/tree/master/rules
- 插件提交位置: https://github.com/Safe3/uuWAF/tree/master/plugins
- PR 中根据 Pull Request 的模板填写规则或插件信息
@ -13,8 +13,8 @@
## 奖励措施
?> :gem: 参与贡献即可获得与 uuWAF 社区版内部大佬技术切磋交流的机会。提交 PR 过程中会有内部大佬审核,帮助改进规则和插件,共同进步。
## :gem: 奖励措施 <!-- {docsify-ignore} -->
?> 参与贡献即可获得与 uuWAF 社区版内部大佬技术切磋交流的机会。提交 PR 过程中会有内部大佬审核,帮助改进规则和插件,共同进步。
- 提交一个规则或插件即可进入 uuWAF 核心贡献者群,参与讨论热点安全技术,且有机会与大佬们面对面交流。
- 对于 uuWAF 商业版年费用户在当年的商业版授权有效期内只需在提交5个插件或规则即可再免费续一年商业升级。

@ -3,8 +3,8 @@
## 配置要求 <!-- {docsify-ignore} -->
?> :anchor: 南墙对配置要求极低,详细如下:
## :hotsprings: 配置要求 <!-- {docsify-ignore} -->
?> 南墙对配置要求极低,详细如下:
```
- 处理器64位 1千兆赫(GHz)或更快。
@ -17,8 +17,8 @@
## 一键安装 <!-- {docsify-ignore} -->
?> :rocket: 南墙安装及其简便,通常在几分钟内即可安装完毕,具体耗时视网络下载情况而定。
## :rocket: 一键安装 <!-- {docsify-ignore} -->
?> 南墙安装及其简便,通常在几分钟内即可安装完毕,具体耗时视网络下载情况而定。
!> 注意请尽量选择一台纯净CentOS Linux 7 x86_64环境的服务器安装因为安装过程会卸载旧的MySQL数据库并重新安装如果没有备份可造成旧的MySQL数据丢失。
@ -28,7 +28,7 @@ bash环境下执行如下命令
wget https://waf.uusec.com/waf-install && chmod +x waf-install && ./waf-install
```
?> :congratulations: 安装成功后会显示 “ 恭喜您,安装完成!”
?> 安装成功后会显示 “ 恭喜您,安装完成!”
!> 注意:安装完成后请第一时间修改/uuwaf/web/conf/conf.yaml文件中的jwtKey登录认证加密密钥然后执行如下命令使配置生效。

@ -3,13 +3,13 @@
<head>
<meta charset="UTF-8">
<title>南墙Web应用防火墙 | 一款社区驱动的免费、高性能、高扩展顶级Web应用安全防护产品</title>
<link rel="icon" href="./favicon.ico" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="一款社区驱动的免费、高性能、顶级Web安全防护产品">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="//unpkg.com/docsify/lib/themes/vue.css">
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css">
<link rel="stylesheet" href="./_media/custom.css">
<link rel="stylesheet" href="//at.alicdn.com/t/font_539333_ah8wb2hv6yknvcxr.css">
<link href="https://fonts.googleapis.com/css?family=Lobster"rel="stylesheet">
<link rel="stylesheet" href="./_media/font.css">
</head>
<body>
<div id="app"></div>
@ -19,7 +19,7 @@
repo: 'https://github.com/Safe3/uuWAF',
loadSidebar: true,
loadNavbar: true,
subMaxLevel: 2,
subMaxLevel: 5,
auto2top: true,
markdown: {
gfm: true,
@ -39,10 +39,11 @@
},
}
</script>
<script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
<script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
<script src="//unpkg.com/docsify-pagination/dist/docsify-pagination.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-bash.min.js"></script>
<script src="//unpkg.com/prismjs/components/prism-diff.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify@4/lib/docsify.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/docsify@4/lib/plugins/search.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-bash.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-markdown.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-lua.min.js"></script>
<script src="./_media/docsify-pagination.min.js"></script>
</body>
</html>

Loading…
Cancel
Save