Day 0017:Web漏洞扫描(OpenVAS)解析

一、NVT脚本解析:漏洞检测的"DNA"

1. NVT脚本结构

每个NVT脚本都是一个Lua脚本,包含以下核心模块:

lua

Lua 复制代码
-- 示例:检测Apache HTTPd 2.4.49路径穿越漏洞(CVE-2021-41773)
script_id = "1.3.6.1.4.1.25623.1.0.10001" -- 唯一标识符
script_version = "$Revision: 12345 $"
script_tag(name:"cvss_base", value:"9.8")
script_tag(name:"cvss_base_vector", value:"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H")


-- 漏洞检测逻辑
http_port = get_kb_item("Services/www")
if not http_port then http_port = 80 end


-- 发送恶意请求
res = http_send_recv(
port:http_port,
data:"GET /cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd HTTP/1.1\r\nHost: " .. get_host_name() .. "\r\n\r\n"
)


-- 响应分析
if res and res:match("root:.*:0:0:") then
report = "Vulnerable to CVE-2021-41773 - Path Traversal"
security_message(port:http_port, data:report)
end
2. 脚本执行流程
  1. 服务发现:通过Nmap或Banner抓取识别目标服务
  2. 协议交互:根据服务类型选择对应协议插件(HTTP/FTP/SMB等)
  3. 特征匹配
    • 发送畸形请求(如SQL注入测试' OR 1=1 --
    • 分析响应时间、返回码、错误信息等特征
  4. 结果判定:结合CVSS评分决定是否记录漏洞
3. 自定义NVT开发

当检测内部业务系统时,可开发专属NVT:

lua

Lua 复制代码
-- 示例:检测企业OA系统未授权访问
script_category(ACT_ATTACK)
script_family("Web Application Abuses")


-- 定义检测逻辑
if http_get_cache(item:"/oa/api/v1/user/info") then
if res.body:match('"username":"admin"') then
security_message(port:80, data:"Unauthorized admin access detected")
end
end

二、扫描过程深度优化:精准与效率的平衡

1. 扫描引擎架构
bash 复制代码
┌─────────────┐ ┌──────────────┐
│ Web UI │──────>│ GVM Daemon │
└─────────────┘ └──────────────┘
│
▼
┌───────────────────────┐
│ OpenVAS Scanner Engine │
│ - 插件管理器 │
│ - 任务调度器 │
│ - 结果聚合器 │
└───────────────────────┘
2. 性能优化参数

bash

bash 复制代码
# 调整扫描速度(0-5,5为最快)
openvasmd --modify-scanner=scanner_id --speed=3


# 设置超时时间(单位:秒)
openvasmd --modify-target=target_id --alive-tests=Consider Alive


# 启用多线程扫描
openvasmd --modify-scanner=scanner_id --max-checks=20
3. 高级扫描策略
  • 混合扫描

    bash

bash 复制代码
# 先进行快速端口扫描,再执行深度漏洞检测
nmap -F 192.168.1.0/24 > nmap_results.xml
openvasmd --import=nmap_results.xml
  • 增量扫描:仅检测新开放端口和服务

  • 认证扫描

    bash

bash 复制代码
# 使用SSH密钥认证扫描Linux服务器
openvasmd --ssh-credential=ssh_key_id 192.168.1.100

三、报告解读实战:从数据到行动方案

1. 漏洞生命周期管理

|------------------------------------|
| ┌─────────────┐ ┌──────────────┐ |
| │ 扫描发现 │──────>│ 漏洞确认 │ |
| └─────────────┘ └──────────────┘ |
| |
| |
| ┌─────────────┐ ┌──────────────┐ |
| │ 风险评估 │──────>│ 修复跟踪 │ |
| └─────────────┘ └──────────────┘ |

2. 关键报告字段解析
  • QoD(Quality of Detection):检测置信度(0-100)
  • BID:Bugtraq ID(历史漏洞追踪号)
  • CPE:通用平台枚举(精确描述受影响组件)
  • XREF:交叉引用其他漏洞库(如OSVDB、MSRC)
3. 修复建议落地示例

markdown

bash 复制代码
**漏洞**: CVE-2023-28432 - Apache ActiveMQ 反序列化漏洞


**修复步骤**:
1. 立即升级到5.16.3+版本
2. 临时缓解措施:
- 限制管理接口访问:`iptables -A INPUT -p tcp --dport 8161 -j DROP`
- 禁用JMX控制台:修改`activemq.xml`中`<managementContext>`配置
3. 验证修复:
- 重新扫描确认漏洞消失
- 检查日志文件:`tail -f /var/log/activemq/activemq.log`

四、高级应用场景:超越基础扫描

1. API集成开发

python

python 复制代码
# Python示例:通过REST API获取扫描结果
import requests


url = "https://openvas:9390/api/v1/get_report"
headers = {
"X-API-Key": "your_api_key",
"Content-Type": "application/json"
}


response = requests.post(url, headers=headers, json={"report_id": "123e4567-e89b-12d3-a456-426614174000"})
print(response.json())
2. 分布式扫描架构
bash 复制代码
┌─────────────┐ ┌──────────────┐
│ Manager │──────>│ Scanner 1 │
└─────────────┘ └──────────────┘
│
│
▼
┌──────────────┐
│ Scanner 2 │
└──────────────┘
  • 负载均衡:自动分配扫描任务
  • 结果聚合:统一展示多节点扫描结果
  • 故障转移:节点失效自动任务迁移
3. 合规性检查
  • PCI DSS合规:检测支付系统漏洞
  • GDPR合规:识别数据泄露风险
  • 等保2.0:生成符合中国网络安全等级保护要求的报告

五、实战避坑指南

1. 常见误报处理
  • 场景:检测到已修复的CVE-2017-5638(Struts2漏洞)
  • 解决
    1. 确认组件版本:curl -s http://target/struts2-showcase/index.action | grep "Struts 2.5.22"
    2. 验证补丁应用:检查WEB-INF/lib/struts2-core-2.5.22.jar文件哈希
    3. 添加例外:在OpenVAS中标记为"False Positive"
2. 性能瓶颈优化
  • 问题:扫描1000+主机时CPU占用过高

  • 解决

    bash

bash 复制代码
# 调整并发扫描数
openvasmd --set max_parallel_tasks=50


# 启用结果缓存
openvasmd --set cache_ttl=3600
3. 最新漏洞检测
  • CVE-2024-23923(Apache HTTPd 2.4.62 路径泄露)

    bash

bash 复制代码
# 手动更新NVT库
greenbone-nvt-sync --rsync


# 创建自定义扫描任务
openvasmd --create-target=new_target --hosts=192.168.1.0/24
openvasmd --create-task=new_task --config="Full and Fast Ultimate" --target=new_target

掌握了OpenVAS从底层原理到高级应用的完整知识体系。建议在实际环境中部署演练,通过"扫描-分析-修复-验证"的完整闭环,真正将理论知识转化为安全防护能力。

相关推荐
optimistic_chen15 分钟前
【Java EE进阶 --- SpringBoot】Mybatis - plus 操作数据库
数据库·spring boot·笔记·java-ee·mybatis·mybatis-plus
凉、介33 分钟前
ARM 总线技术 —— AMBA 入门
arm开发·笔记·学习
日更嵌入式的打工仔1 小时前
嵌入式入门:APP+BSP+HAL 三层分级架构浅析
笔记·单片机·嵌入式硬件·学习
来旺1 小时前
互联网大厂Java面试全解析及三轮问答专项
java·数据库·spring boot·安全·缓存·微服务·面试
长桥夜波1 小时前
【第十八周】机器学习笔记07
人工智能·笔记·机器学习
摇滚侠1 小时前
Spring Boot 3零基础教程,yml文件中配置和类的属性绑定,笔记15
spring boot·redis·笔记
摇滚侠2 小时前
Spring Boot 3零基础教程,WEB 开发 HTTP 缓存机制 笔记29
spring boot·笔记·缓存
大白的编程日记.2 小时前
【Linux学习笔记】线程同步与互斥之生产者消费者模型
linux·笔记·学习
新子y2 小时前
【小白笔记】strip的含义
笔记·python
摇滚侠2 小时前
Spring Boot 3零基础教程,WEB 开发 内容协商 接口返回 YAML 格式的数据 笔记35
spring boot·笔记·后端