venerasf/Venera
GitHub: venerasf/Venera
一款基于 Go 语言构建、通过 Lua 脚本实现模块化扩展的漏洞利用与安全测试框架。
Stars: 64 | Forks: 5
Venera Framework
Venera 是一款用于自动化针对多种协议的自定义测试和攻击的工具。它基于 Lua 脚本语言构建了一个脚本引擎,使得可以为各种检查和漏洞利用创建模块。该框架是 Lua 脚本的管理器和解释器,提供了用于创建强大工具的函数和库,这些工具可集成到单元测试、漏洞扫描和漏洞利用阶段使用的服务中。用户可以创建自己的模块或使用社区制作的脚本,该工具可适应各种需求场景。
请参阅文档 [venera.farinap5.com](https://venera.farinap5.com/)
## 
### 下载并运行
不包含二进制文件,需要安装 Go 环境。
```
make install-go-apt
```
```
git clone git@github.com:farinap5/Venera.git
cd Venera
make run
```
### 帮助菜单
```
GENERIC COMMAND DESCRIPTION
--------------- -----------
help Show help menu. Type `help
`.
bash Spawns a shell
import Import a (edited) script
export Export a script (to edit)
globals Show global variables
vpm Venera package manager
exit Exits the prompt
search Searches a script
use Load a script
SCRIPT COMMAND DESCRIPTION
-------------- -----------
set Set value for a variable
run Run a script/module
back Exit module/script
options Show variables of script/module
lua Run Lua code in running script
info Info/metadata about script/module
reload Reloads the current script/module
```
使用 help 命令来描述每个命令并提供示例。
```
[vnr]>> help search
SEARCHING:
`search` list scripts.
`search match ` list matching patterns.
`search match:path ` list path matching.
`search match:description ` list description matching.
`search tag ` list matching tags.
```
界面简单示例:

## 模块是如何工作的?
模块是一个 Lua 脚本,可根据您的需要创建一个或多个目标来执行您想要的例程。
已完成的模块允许测试人员针对特定的已知漏洞进行测试,或对远程/本地目标执行通用验证。
**请参阅以下示例:** https://github.com/farinap5/Venera/tree/main/scripts/test。
模块有一些必要的表,如 `METADATA` 和 `VARS`,它们从 `Init()` 加载,然后是 `Main()` 函数作为自定义函数的入口点。
### 表 `METADATA`
`METADATA` 包含有关脚本的信息,以便 Venera 可以在其脚本库中识别此模块,所有字段都需要正确配置。
- `AUTHOR` 是一个字符串列表,包括创建脚本的人员或参与该漏洞利用研究的人员。
- `VERSION` 模块/脚本版本。
- `TAGS` 定义脚本及其用途的一些标签。可以根据标签搜索和执行脚本。
- `INFO` 脚本的描述,可以是漏洞利用的缺陷、测试类型、建议的缓解措施,由创建者决定。
```
METADATA = {
AUTHOR = {"Author1 "},
VERSION = "0.1",
TAGS = {"example","http","scanner"},
INFO = [[HTTP requests with lua-go]]
}
```
### 表 `VARS`
`VARS` 表加载脚本的变量,这些变量用作其操作的参数。
```
VARS = {
URL = {VALUE="http://example.com", NEEDED="yes", DESCRIPT="URL"},
METHOD = {VALUE="GET", NEEDED="yes", DESCRIPT="METHOD"}
}
```
当变量在 `VARS` 表中设置后,用户可以使用 `options` 命令列出这些变量,然后使用 `set` 命令为变量配置值:
```
(scripts/test/http.lua)>> options
VARIABLE DEFAULT NEEDED DESCRIPTION
-------- ------- ------ -----------
URL http://example.com yes URL
METHOD GET yes METHOD
```
如前所述,用户也可以使用 `set` 命令编辑这些变量:
```
(scripts/test/http.lua)>> set URL http://google.com
[OK] URL <- http://google.com
```
### 函数 `Init()`
当您运行 `use ` 时,`Init()` 函数会自动执行,从而加载元数据和变量。您可以在函数中放置其他内容,以便在首次交互时加载。
```
function Init()
Meta(METADATA) -- Load metadata
LoadVars(VARS) -- Load variables
end
```
### 函数 `Main()`
`Main()` 函数是自定义脚本的入口点。当用户输入 `run` 时会调用它。
```
function Main()
local request = http.request(VARS.METHOD.VALUE, VARS.URL.VALUE)
local result, err = client:do_request(request)
PrintSuccsln(result.code)
PrintSuccsln(result.body)
end
```
## 内置函数
您可以在脚本中调用这些函数,无需任何要求。这些函数用 Go 编写,可以从 Lua 脚本中调用。
`PrintSuccs( str )` 打印成功消息。
`PrintErr( str )` 打印错误消息。
`PrintInfo( str )` 打印信息消息。
`PrintSuccsln( str )` 打印带换行符的成功消息。
`PrintErrln( str )` 打印带换行符的错误消息。
`PrintInfoln( str )` 打印带换行符的信息消息。
`Print( str )` 打印字符串。
`Println( str )` 打印带换行符的字符串。
`RandomString( length=int , "a-zA-Z0-9" ) -> str` 生成随机字符串。
`Input( str ) -> str` 提示用户输入。
`Open( str ) -> str` 读取本地文件。
`Call( path=str )` 调用另一个脚本/模块。调用者脚本的 `ARGS` 会被被调用的脚本继承。标签:EVTX分析, Lua脚本, rizin, 协议测试, 多语言支持, 安全测试框架, 开源安全工具, 攻击框架, 日志审计, 模块化框架, 渗透工具, 漏洞利用框架, 网络安全, 逆向工程平台, 隐私保护