2025年渗透测试面试题总结-42(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。

目录

PHP安全审计要点

[1. 常见漏洞对应函数](#1. 常见漏洞对应函数)

[2. PHP安全特性](#2. PHP安全特性)

[3. 代码审计方法论](#3. 代码审计方法论)

Java安全深度解析

[1. 命令执行方式](#1. 命令执行方式)

[2. 反序列化原理](#2. 反序列化原理)

[3. ysoserial利用链示例](#3. ysoserial利用链示例)

[4. Shiro反序列化漏洞](#4. Shiro反序列化漏洞)

[5. 核心机制理解](#5. 核心机制理解)

[6. 代码审计重点](#6. 代码审计重点)

Python安全实践

[1. 非脚本工具开发](#1. 非脚本工具开发)

[2. Web框架安全](#2. Web框架安全)

[3. 代码审计关键](#3. 代码审计关键)

通用审计建议

复制代码
## PHP
1. 常见漏洞对应函数(挨个问)
- 命令执行
- 代码执行
- 文件包含
- 文件上传
- 文件删除
- SSRF
- ...
2. PHP安全特性有关注吗
3. 代码审计(mvc/非mvc)

## Java
1. Java执行命令的几种方式
2. Java反序列化的原理
3. 讲讲yso的链
4. Shiro 反序列化原理
5. 反射,代理,类加载这些熟悉吗
6. 代码审计

## Python
1. 是否写过非脚本的工具
2. Web框架(flask/django)
3. 代码审计

PHP安全审计要点

1. 常见漏洞对应函数
漏洞类型 危险函数/场景 审计要点
命令执行 system(), exec(), passthru(), shell_exec(), 反引号 `` 用户输入直接拼接命令参数
代码执行 eval(), assert(), preg_replace(/e), call_user_func(), create_function() 动态执行用户可控字符串
文件包含 include(), require(), include_once(), require_once() 未过滤的路径参数(LFI/RFI)
文件上传 move_uploaded_file() + 临时文件路径 未验证文件类型/内容,目录遍历
文件删除 unlink() 用户可控路径未校验
SSRF file_get_contents(), curl_exec(), fsockopen() 用户控制URL协议(如php://input
反序列化 unserialize() 魔术方法(__wakeup(), __destruct()
2. PHP安全特性
  • 类型弱校验===== 区别(如 "0e123" == "0" 为true)
  • 魔术引号废弃 (PHP 5.4+):需手动转义(addslashes() vs mysqli_real_escape_string()
  • 安全配置
    open_basedir(目录隔离)、disable_functions(禁用高危函数)、allow_url_include=Off
  • Filter扩展filter_var($input, FILTER_VALIDATE_URL) 过滤输入
3. 代码审计方法论
  • 非MVC架构
    追踪用户输入($_GET/$_POST) → 危险函数调用链,关注全局过滤缺失
  • MVC框架(如Laravel)
    重点审查路由控制器 → 中间件过滤 → ORM/SQL构建(避免原生SQL拼接)

Java安全深度解析

1. 命令执行方式
复制代码
java`// 1. Runtime执行 Runtime.getRuntime().exec("cmd /c whoami"); // 2. ProcessBuilder(更灵活) new ProcessBuilder("cmd", "/c", "calc").start(); // 3. JNI调用本地库(需编译) native void executeCommand(String cmd);`
2. 反序列化原理
  • 核心机制
    ObjectInputStream.readObject() 自动调用对象的readObject()readExternal()方法
  • 利用条件
    靶库中存在可串联的Gadget链(如InvokerTransformer + ConstantTransformer
3. ysoserial利用链示例
  • CommonsCollections链
    AnnotationInvocationHandlerLazyMap.get()ChainedTransformer.transform()
  • Fastjson链
    JdbcRowSetImplJNDI注入(lookup()触发LDAP/RMI请求)
4. Shiro反序列化漏洞
  • 根源 :Cookie中rememberMe字段使用AES-CBC加密
    → 密钥硬编码 → 伪造序列化数据触发readObject()
  • 利用:结合CommonsBeanutils等链构造内存马
5. 核心机制理解
  • 反射Class.forName(), Method.invoke() 动态加载/调用类
  • 动态代理InvocationHandler 拦截方法调用(AOP攻击面)
  • 类加载 :双亲委派机制 → 突破需自定义ClassLoader(如Tomcat热部署)
6. 代码审计重点
  • 框架入口 :Struts2的Action参数、Spring MVC的@RequestMapping
  • 表达式注入 :OGNL/SpEL表达式解析(如${@runtime.exec(...)}
  • 三方库漏洞:Log4j JNDI、Fastjson autoType等

Python安全实践

1. 非脚本工具开发
  • 场景:网络扫描器(Scapy)、GUI工具(PyQt)、RPC服务(gRPC)
  • 安全实践
    使用subprocess代替os.system() ,禁用pickle序列化协议
2. Web框架安全
框架 高危点 防御方案
Flask render_template_string()(SSTI) 禁止动态模板,用Jinja2沙箱
Django eval()执行用户输入 启用CSRF中间件,ORM防SQL注入
3. 代码审计关键
  • 输入校验input()sanitize(如html.escape()
  • 依赖风险requirements.txt 包含漏洞库(如requests SSRF)
  • 反序列化pickle.loads() → 重写__reduce__执行命令

通用审计建议

  1. 输入输出控制
    • 白名单校验 > 黑名单过滤
    • 输出编码(如HTML实体化)
  2. 最小权限原则
    • PHP:禁用exec函数
    • Java:配置SecurityManager沙箱
  3. 依赖管理
    • 定期扫描composer.json/pom.xml/requirements.txt
  4. 纵深防御
    • WAF拦截异常请求
    • RASP实时阻断漏洞利用
相关推荐
ssshooter18 小时前
MCP 服务 Streamable HTTP 和 SSE 的区别
人工智能·面试·程序员
白云偷星子18 小时前
MySQL笔记13
数据库·笔记·mysql
梵得儿SHI18 小时前
Java 反射机制深度剖析:性能与安全性的那些坑
java·开发语言·安全·反射·动态代理·性能·反射机制
施嘉伟18 小时前
静默安装金仓数据库,到底有多简单?
数据库
Tapdata18 小时前
实时物化视图的新路径:从传统 Join 到跨源实时查询
数据库
optimistic_chen18 小时前
【Java EE进阶 --- SpringBoot】Mybatis - plus 操作数据库
数据库·spring boot·笔记·java-ee·mybatis·mybatis-plus
AsiaLYF18 小时前
kotlin中MutableStateFlow和MutableSharedFlow的区别是什么?
android·开发语言·kotlin
2501_9160088919 小时前
iOS 发布全流程详解,从开发到上架的流程与跨平台使用 开心上架 发布实战
android·macos·ios·小程序·uni-app·cocoa·iphone
DIY机器人工房19 小时前
【嵌入式面试题】STM32F103C8T6 完整元器件解析 + 面试问题答案
stm32·单片机·面试·嵌入式·面试题·diy机器人工房
4Forsee19 小时前
【Android】浅析 Android 的 IPC 跨进程通信机制
android·java