2025年渗透测试面试题总结-37(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
🌐 PHP安全相关
1. 审计流程
2. 命令执行函数
3. 文件上传函数
4. 代码执行函数
5. vendor目录安全
6. PHPUnit漏洞利用
7. 无文件WebShell实现
☕ Java安全相关
1. 通用漏洞组合利用
2. 命令执行相关类
3. 框架审计重点
4. 审计流程与重点
5. Tomcat回显技术
6. 内存马实现
🔍 其他安全领域
1. POC/EXP开发心得
2. 漏洞复现经验
3. Linux提权姿势
4. Linux渗透关键文件
💎 总结
PHP安全相关 1. 审计流程 2. 命令执行函数 3. 文件上传函数 4. 代码执行函数 5. vender目录 6. phpunit 7. php可以构造无文件shell吗# Java安全相关 1. 挖过的通用洞,你会怎么利用(组合) 2. 命令的函数或包 3. java哪些框架,审过哪些框架,它们常出现的问题是什么 4. 审计流程,你一般关注哪些洞,或擅长挖哪种类型 5. tomcat做回显 6. 内存马的实现# 其他 - 写poc/exp的经历和心得 - 复现的一些漏洞 - Linux 提权的姿势 - Linux下有哪些文件进行渗透时比较关注的,及文件权限问题 - dirty cow 的时间及其修复版本(哪年后就没法用了)
🌐 PHP安全相关
1. 审计流程
- 入口点扫描:追踪用户输入(
$_GET
/$_POST
/$_COOKIE
/文件上传/Header)。- 敏感函数溯源:全局搜索
eval()
、system()
、move_uploaded_file()
等函数,分析参数是否可控。- 依赖库检查:审查
composer.json
及vendor
目录,检测第三方库漏洞(如已知CVE)。- 安全配置审计:检查
php.ini
(allow_url_include=Off
、disable_functions
等)。- 业务逻辑漏洞:重点审计权限校验、支付流程、密码重置等关键功能。
2. 命令执行函数
高危函数 风险场景 system()
执行系统命令并直接输出结果 exec()
执行命令但无回显(需手动输出) passthru()
直接输出二进制数据(如图片) shell_exec()
执行命令并返回完整字符串 popen()
创建进程管道(可读写) 🔐 防御:禁用函数列表 + 使用
escapeshellarg()
过滤参数。
3. 文件上传函数
- 核心函数:
move_uploaded_file()
(将临时文件移至目标路径)。- 漏洞点:
- 未校验文件类型(仅前端验证)。
- 路径拼接可控(
../
目录穿越)。- 文件名未重命名(导致覆盖敏感文件)。
- 防御:白名单校验 MIME 类型 + 随机重命名 + 存储目录禁用执行权限。
4. 代码执行函数
函数 触发方式 eval()
执行字符串中的 PHP 代码 assert()
执行表达式(常用于后门) preg_replace()
使用 /e
修饰符执行替换内容create_function()
动态创建匿名函数(参数注入) call_user_func()
回调函数参数可控 💥 案例:
<?php eval($_REQUEST['cmd']);?>
构成 WebShell。
5. vendor目录安全
- 作用:存放 Composer 安装的第三方库。
- 风险:
- 未删除开发依赖(如测试脚本
vendor/phpunit
)。- 包含已知漏洞库(如
guzzlehttp
的SSRF漏洞)。- 防御:
- 生产环境删除
.git
和测试文件。- 定期运行
composer audit
扫描漏洞。
6. PHPUnit漏洞利用
- 常见漏洞:
- 测试脚本暴露:
/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
可直接执行任意代码(CVE-2017-9841)。- 反序列化链:利用
__destruct()
或__wakeup()
触发恶意操作。- 修复:删除生产环境的
phpunit
目录。
7. 无文件WebShell实现
✅ 支持方式:
- 内存驻留:通过
php://filter
或.htaccess
加载恶意载荷到内存。php# 利用 .htaccess AddHandler application/x-httpd-php .jpg php_value auto_prepend_file "data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7Pz4="
- 共享内存:
shmop
扩展写入恶意代码到共享内存段。- OPcache:覆盖缓存中的编译结果(需服务器权限)。
☕ Java安全相关
1. 通用漏洞组合利用
漏洞组合 利用效果 反序列化 + JNDI注入 触发远程类加载(如 Log4j2) XStream + XXE 读取服务器敏感文件 Spring Cloud + SpEL 表达式注入执行命令 Shiro + Padding Oracle 伪造身份认证 Cookie
2. 命令执行相关类
类/方法 所属框架 Runtime.getRuntime().exec()
JDK 原生 ProcessBuilder.start()
JDK 原生 GroovyShell.evaluate()
Groovy ScriptEngine.eval()
JDK 脚本引擎 @ShellMethod
(Spring Shell)Spring Boot
3. 框架审计重点
框架 常见漏洞 审计关注点 Spring SpEL 注入、CVE-2022-22965 参数绑定、表达式解析 Fastjson 反序列化漏洞(<=1.2.47) AutoType
校验逻辑Shiro 硬编码密钥、RememberMe 反序列化 Cookie 加密算法与密钥强度 Struts2 OGNL 表达式注入 拦截器参数过滤机制 Hibernate SQL 注入(HQL) 拼接查询语句
4. 审计流程与重点
- 入口定位:
- HTTP 请求入口(Servlet、Controller)。
- 配置文件(
web.xml
、spring-config.xml
)。- 漏洞聚焦:
- 反序列化:
readObject()
、ObjectInputStream
。- 表达式注入:SpEL、OGNL、EL 表达式解析点。
- 权限绕过:拦截器配置错误、
@PreAuthorize
缺失。- 工具辅助:Fortify、CodeQL 扫描 + 人工验证。
5. Tomcat回显技术
java// 通过 Response 对象写入执行结果 @RequestMapping("/rce") public void rce(HttpServletRequest req, HttpServletResponse res) throws IOException { String cmd = req.getParameter("cmd"); Process p = Runtime.getRuntime().exec(cmd); BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = reader.readLine()) != null) { res.getWriter().write(line + "\n"); } }
🔧 无回显场景:使用 DNSLog 或 HTTP 请求外带数据。
6. 内存马实现
- Filter型:动态注册恶意 Filter 拦截请求。
javaFilter filter = new EvilFilter(); FilterRegistration.Dynamic registration = servletContext.addFilter("evil", filter); registration.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
- Controller型:利用 Spring 的
RequestMappingHandlerMapping
动态添加恶意路由。- Agent型:通过 Java Agent 修改字节码(如
javassist
修改AbstractTranslet
)。
🔍 其他安全领域
1. POC/EXP开发心得
- 原则:
- 环境兼容:适配不同版本(如 Python 2/3、JDK 版本)。
- 无害化:避免
rm -rf
等危险操作,使用id
/whoami
验证。- 技巧:
- 使用
requests.Session()
保持会话(应对 Cookie 验证)。- 多线程加速检测(如爆破路径)。
2. 漏洞复现经验
漏洞类型 代表案例 关键点 RCE Log4j2 (CVE-2021-44228) JNDI 服务构造(LDAP) 反序列化 Fastjson (CVE-2022-25845) 绕过 AutoType 校验 SSRF Weblogic (CVE-2014-4210) 内网端口扫描
3. Linux提权姿势
类型 命令/工具 适用场景 SUID滥用 find / -perm -4000 2>/dev/null
查找可执行文件(如 vim
)内核漏洞 dirtycow
(CVE-2016-5195)Linux < 4.8.3(2016年前) 定时任务劫持 注入恶意代码到 /etc/cron*
权限配置错误 环境变量劫持 export PATH=.:$PATH
调用相对路径程序 📅 Dirty Cow修复:2016年10月披露,Linux 内核 ≥ 4.8.3 已修复。
4. Linux渗透关键文件
文件路径 用途 权限要求 /etc/passwd
用户列表(可读) 所有用户 /etc/shadow
密码哈希(需 root) root ~/.ssh/id_rsa
用户私钥 属主用户 /etc/crontab
系统定时任务 root /var/log/auth.log
登录日志(需 sudo) adm 组用户
💎 总结
- PHP安全核心:过滤输入、禁用危险函数、隔离第三方库。
- Java安全核心:反序列化链防御、表达式沙箱、权限最小化。
- 渗透关键:内核漏洞时效性(如 Dirty Cow)、权限配置审计(SUID/Cron)