Vajra与Nuclei模板扫描:如何自定义规则检测特定漏洞
【免费下载链接】vajraVajra is a highly customizable target and scope based automated web hacking framework to automate boring recon tasks and same scans for multiple target during web applications penetration testing.项目地址: https://gitcode.com/gh_mirrors/va/vajra
Vajra是一款高度可定制的自动化Web渗透测试框架,能够帮助安全测试人员自动完成枯燥的侦察任务和多目标扫描。本文将详细介绍如何利用Vajra集成的Nuclei模板扫描功能,自定义规则来检测特定漏洞,提升Web应用安全测试的效率和准确性。
什么是Nuclei模板扫描?
Nuclei是一款基于模板的快速漏洞扫描工具,通过预定义的YAML模板可以检测各种常见漏洞。Vajra框架深度集成了Nuclei,在tools/templates-scan.sh脚本中实现了对不同类型漏洞的自动化扫描。该脚本支持多种扫描模式,包括文件暴露、管理面板、配置错误、技术栈识别、漏洞检测和令牌泄露等。
Vajra的扫描界面展示了Nuclei模板扫描的过程,支持多种漏洞类型检测
快速开始:Vajra中Nuclei的默认配置
在Vajra中,Nuclei的安装和配置已经自动化。通过install/install.sh脚本,系统会自动下载Nuclei二进制文件并克隆官方模板库:
# 自动安装Nuclei的关键步骤 wget https://github.com/projectdiscovery/nuclei/releases/download/v2.2.0/nuclei_2.2.0_linux_amd64.tar.gz tar -zxf nuclei_2.2.0_linux_amd64.tar.gz chmod +x nuclei && mv nuclei /bin/ git clone https://github.com/projectdiscovery/nuclei-templates.git默认情况下,Vajra将Nuclei模板存储在./tools/nuclei-templates/目录下,并通过index.js中的多个执行点调用不同类别的模板进行扫描,例如:
// 检测CVE漏洞的调用示例 exec('echo https://www.' + req.body.domain + '| nuclei -t ./tools/nuclei-templates/cves/ -o ./tools/' + req.body.domain + "_cve.txt", { maxBuffer: 1024 * 1200 }, (err) => { ... })自定义Nuclei规则的完整指南
1. 了解Nuclei模板结构
一个标准的Nuclei模板是YAML格式的文件,包含以下核心部分:
id: 模板唯一标识符info: 漏洞描述和元数据requests: 发送的HTTP请求配置matchers: 响应匹配规则
以下是一个简单的模板示例,用于检测特定的服务器头信息:
id: custom-server-header-detection info: name: 自定义服务器头检测 author: 安全测试人员 severity: info requests: - method: GET path: - "/" matchers: - type: word words: - "Server: CustomServer"2. 创建自定义模板文件
在Vajra项目中,建议将自定义模板放在./tools/nuclei-templates/custom/目录下(如果不存在请创建)。例如,创建一个检测特定路径泄露的模板./tools/nuclei-templates/custom/path-disclosure.yaml。
3. 配置Vajra调用自定义模板
修改tools/templates-scan.sh脚本,添加自定义模板的调用逻辑:
# 在文件末尾添加自定义模板扫描逻辑 if [ "$2" = "custom" ]; then cat ./tools/$1_custom_subdomain.txt | nuclei -t ./tools/nuclei-templates/custom/ -no-color -silent >> ./tools/$1_subdomain_custom.txt fi4. 在Web界面中启用自定义扫描
Vajra的Web界面已经包含Nuclei相关配置。通过public/static/js/script.js中的代码控制扫描选项的显示:
document.getElementById("nuclei").style.display = "block";在前端页面(views/index.ejs)中,Nuclei扫描选项默认隐藏,需要通过JavaScript动态显示。添加自定义扫描选项后,用户可以在Web界面中直接触发自定义规则扫描。
Vajra的扫描结果页面展示了Nuclei检测到的漏洞详情,包括自定义规则的扫描结果
实战案例:检测特定CMS漏洞
假设我们需要检测某款CMS的特定版本漏洞,可以创建如下自定义模板:
id: cms-specific-vulnerability info: name: 特定CMS版本漏洞检测 author: 安全测试人员 severity: high description: 检测目标是否使用存在漏洞的CMS版本 requests: - method: GET path: - "/wp-includes/version.php" matchers: - type: regex regex: - 'wp_version = "5.8.1"'将此模板保存到./tools/nuclei-templates/custom/cms-vuln.yaml,然后运行:
./tools/templates-scan.sh target customVajra会使用自定义模板扫描目标,并将结果保存到./tools/target_subdomain_custom.txt。
高级技巧:优化Nuclei扫描性能
- 模板分类管理:将自定义模板按漏洞类型(如
cves/、misconfig/)分类存放,便于维护 - 使用变量替换:在模板中使用
{{Host}}等变量,提高模板通用性 - 调整并发参数:在
nuclei命令中添加-c 50(50并发)参数,加快扫描速度 - 结果过滤:使用
-severity high,critical只显示高风险漏洞
总结
通过Vajra与Nuclei的结合,安全测试人员可以轻松实现自定义漏洞规则的检测。从模板创建到集成调用,Vajra提供了完整的自动化流程,让漏洞扫描更加高效、灵活。无论是常规安全检查还是特定漏洞检测,Vajra都能成为Web渗透测试的得力助手。
希望本文能帮助你更好地利用Vajra的Nuclei模板扫描功能,提升安全测试的效率和覆盖面。如有任何问题,欢迎查阅项目中的CREDITS.md文件,获取更多关于Nuclei集成的信息。
【免费下载链接】vajraVajra is a highly customizable target and scope based automated web hacking framework to automate boring recon tasks and same scans for multiple target during web applications penetration testing.项目地址: https://gitcode.com/gh_mirrors/va/vajra
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考