真正破解你的AWVS
字数 1182 2025-08-10 12:17:59

AWVS漏洞扫描器反连平台认证绕过技术详解

1. 背景介绍

AWVS (Acunetix Web Vulnerability Scanner) 是业内最强大的Web漏洞扫描器之一,但在实际渗透测试中发现其针对log4j等需要外联平台的漏洞检测存在缺陷。本文详细分析该问题并提供完整的解决方案。

2. 问题发现与分析

2.1 初始发现问题

  • 在AWVS检测项中确认存在log4j漏洞检测功能
  • 实际扫描log4j靶场时却无法检测出漏洞
  • 通过代理服务器(Burp Suite)分析扫描流量

2.2 关键发现

  • AWVS使用外联平台bxss.me进行认证
  • 认证数据包路径为/ng/auth (POST请求)
  • AWVS根据响应中的success字段判断认证是否成功
  • 只有认证成功时才会进行需要外联平台的漏洞检测

3. 手动验证方法

3.1 使用Burp Suite进行中间人攻击

  1. 配置AWVS使用Burp作为代理服务器
  2. 启动扫描log4j靶场
  3. 在Burp中拦截认证请求响应
  4. 修改响应内容,将success值从false改为true
  5. 放行修改后的响应

3.2 验证结果

  • 扫描流量中出现大量反连平台数据包
  • 最终成功检测出log4j漏洞

4. 自动化解决方案

由于手动操作繁琐,提出自动化解决方案:

4.1 系统修改

  1. 修改本地hosts文件,添加:
    127.0.0.1 bxss.me
    
    使bxss.me域名解析到本地

4.2 Python自动化脚本

from cryptography import x509
from cryptography.x509.oid import NameOID
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from datetime import datetime, timedelta
from flask import Flask, jsonify, request
import os

app = Flask(__name__)

@app.route('/ng/auth', methods=['POST'])
def auth():
    return jsonify(success=True, msg="!p1")

def generate_self_signed_cert(cert_path, key_path):
    if not os.path.exists(cert_path) or not os.path.exists(key_path):
        key = rsa.generate_private_key(
            public_exponent=65537,
            key_size=4096,
            backend=default_backend()
        )
        subject = issuer = x509.Name([
            x509.NameAttribute(NameOID.COUNTRY_NAME, u"US"),
            x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, u"California"),
            x509.NameAttribute(NameOID.LOCALITY_NAME, u"San Francisco"),
            x509.NameAttribute(NameOID.ORGANIZATION_NAME, u"My Company"),
            x509.NameAttribute(NameOID.COMMON_NAME, u"localhost"),
        ])
        cert = x509.CertificateBuilder().subject_name(
            subject
        ).issuer_name(
            issuer
        ).public_key(
            key.public_key()
        ).serial_number(
            x509.random_serial_number()
        ).not_valid_before(
            datetime.utcnow()
        ).not_valid_after(
            datetime.utcnow() + timedelta(days=365)
        ).sign(key, hashes.SHA256(), default_backend())

        with open(cert_path, "wb") as f:
            f.write(cert.public_bytes(serialization.Encoding.PEM))

        with open(key_path, "wb") as f:
            f.write(key.private_bytes(
                encoding=serialization.Encoding.PEM,
                format=serialization.PrivateFormat.TraditionalOpenSSL,
                encryption_algorithm=serialization.NoEncryption()
            ))

if __name__ == '__main__':
    CERT_PATH = 'selfsigned_cert.pem'
    KEY_PATH = 'selfsigned_key.pem'
    generate_self_signed_cert(CERT_PATH, KEY_PATH)
    app.run(host='0.0.0.0', port=443, ssl_context=(CERT_PATH, KEY_PATH))

4.3 脚本功能说明

  1. 使用Flask创建简单的Web服务
  2. 监听443端口(HTTPS)
  3. 自动生成自签名证书
  4. /ng/auth的POST请求返回{"success": true, "msg": "!p1"}

4.4 使用步骤

  1. 保存上述代码为Python文件(如awvs_auth_bypass.py)
  2. 运行脚本:python awvs_auth_bypass.py
  3. 确保脚本持续运行
  4. 正常使用AWVS进行扫描

5. 技术原理总结

  1. 认证机制:AWVS依赖外联平台bxss.me的认证
  2. 认证缺陷:仅检查响应中的success字段,无其他验证
  3. 解决方案
    • 通过DNS欺骗将bxss.me指向本地
    • 本地模拟认证服务器返回成功响应
  4. 效果:完全启用AWVS内置的反连平台功能

6. 注意事项

  1. 需要管理员权限修改hosts文件
  2. 脚本需要Python环境和相关依赖(cryptography, flask)
  3. 443端口不能被占用
  4. 防火墙需允许443端口的入站连接
  5. 自签名证书可能引起浏览器警告,但对AWVS无影响

7. 扩展应用

该方法不仅适用于log4j漏洞检测,还可用于AWVS所有依赖外联平台的漏洞检测功能,包括但不限于:

  • SSRF漏洞
  • XXE漏洞
  • 各种反连类漏洞检测

通过此方法,可以完全解锁AWVS的高级扫描功能,无需依赖官方外联平台。

AWVS漏洞扫描器反连平台认证绕过技术详解 1. 背景介绍 AWVS (Acunetix Web Vulnerability Scanner) 是业内最强大的Web漏洞扫描器之一,但在实际渗透测试中发现其针对log4j等需要外联平台的漏洞检测存在缺陷。本文详细分析该问题并提供完整的解决方案。 2. 问题发现与分析 2.1 初始发现问题 在AWVS检测项中确认存在log4j漏洞检测功能 实际扫描log4j靶场时却无法检测出漏洞 通过代理服务器(Burp Suite)分析扫描流量 2.2 关键发现 AWVS使用外联平台bxss.me进行认证 认证数据包路径为 /ng/auth (POST请求) AWVS根据响应中的 success 字段判断认证是否成功 只有认证成功时才会进行需要外联平台的漏洞检测 3. 手动验证方法 3.1 使用Burp Suite进行中间人攻击 配置AWVS使用Burp作为代理服务器 启动扫描log4j靶场 在Burp中拦截认证请求响应 修改响应内容,将 success 值从 false 改为 true 放行修改后的响应 3.2 验证结果 扫描流量中出现大量反连平台数据包 最终成功检测出log4j漏洞 4. 自动化解决方案 由于手动操作繁琐,提出自动化解决方案: 4.1 系统修改 修改本地hosts文件,添加: 使bxss.me域名解析到本地 4.2 Python自动化脚本 4.3 脚本功能说明 使用Flask创建简单的Web服务 监听443端口(HTTPS) 自动生成自签名证书 对 /ng/auth 的POST请求返回 {"success": true, "msg": "!p1"} 4.4 使用步骤 保存上述代码为Python文件(如 awvs_auth_bypass.py ) 运行脚本: python awvs_auth_bypass.py 确保脚本持续运行 正常使用AWVS进行扫描 5. 技术原理总结 认证机制 :AWVS依赖外联平台bxss.me的认证 认证缺陷 :仅检查响应中的success字段,无其他验证 解决方案 : 通过DNS欺骗将bxss.me指向本地 本地模拟认证服务器返回成功响应 效果 :完全启用AWVS内置的反连平台功能 6. 注意事项 需要管理员权限修改hosts文件 脚本需要Python环境和相关依赖(cryptography, flask) 443端口不能被占用 防火墙需允许443端口的入站连接 自签名证书可能引起浏览器警告,但对AWVS无影响 7. 扩展应用 该方法不仅适用于log4j漏洞检测,还可用于AWVS所有依赖外联平台的漏洞检测功能,包括但不限于: SSRF漏洞 XXE漏洞 各种反连类漏洞检测 通过此方法,可以完全解锁AWVS的高级扫描功能,无需依赖官方外联平台。