0x5A 奇安信-观星实验室
来源:https://github.com/vvmdx/Sec-Interview-4-2023
说明:本文件按原面经问题整理答题要点,答案为面试复习口径。
一面
1. 4、你有审计 Java 代码的经验,可以简单说一说吗?
参考完整回答(Java代码审计):
Java 审计我会从路由和鉴权开始,看 Controller、Filter、Interceptor、Spring Security/Shiro 配置和权限注解是否覆盖所有接口。数据访问层重点看 MyBatis 的 ${} 拼接、JPA 原生 SQL、排序字段拼接和多租户条件缺失。危险能力方面看反序列化、Fastjson/Jackson、SpEL/OGNL、模板引擎、文件上传下载、SSRF、XXE 和第三方依赖 CVE。
举例来说,审 SQL 注入时我会搜索 MyBatis XML 里的 ${},确认参数是否来自请求;如果是 order by,我会要求白名单字段映射。审越权时会看接口是否从 token 中取用户身份,并校验资源 owner,而不是直接使用请求里的 userId。
2. 8、PHP 反序列化的漏洞挖掘思路可以说一下吗?
参考完整回答(PHP代码审计):
PHP 审计我会先看入口文件、路由规则、控制器、公共函数和配置项,然后追踪 $_GET、$_POST、$_COOKIE、$_REQUEST、上传文件和 Header 到危险函数。重点函数包括 eval/assert、system/exec、include/require、unserialize、file_get_contents/file_put_contents、move_uploaded_file、SQL 执行函数和模板输出。
框架项目还要理解框架本身的过滤、ORM、路由和模板机制,不能只搜函数。比如 ThinkPHP 要看版本历史漏洞、控制器方法暴露、参数绑定、模型查询和模板渲染;原生 PHP 则要特别关注变量覆盖、文件包含、上传目录执行权限和弱类型比较。
二面
3. 3、TP 里面不是有个命令执行吗?可以说一说里面大概后利用是怎么利用的,比如现在目标站开启了 disabled_function
参考完整回答(命令执行):
命令执行漏洞是用户输入进入系统命令解释器,导致攻击者能拼接额外命令。危险点包括 system、exec、Runtime.exec、ProcessBuilder、popen、反引号、脚本调用等。利用不一定需要回显,可以通过延时、DNS 请求、写文件等方式验证。
修复的核心是不拼 shell 命令。能用语言内置 API 就不用系统命令;必须调用外部程序时使用参数数组,避免 shell=True,并对参数做白名单、长度、字符集和枚举校验。运行进程要低权限、容器隔离、限制出网,并记录异常命令调用。
4. 10、你有在大型攻防演练当中跟进过一些 VMware 类型的漏洞吗?展开聊聊
参考完整回答(你有在大型攻防演练当中跟进过一些vmware类型的漏洞吗展开聊聊):
这题我会这样完整回答:针对“10、你有在大型攻防演练当中跟进过一些 VMware 类型的漏洞吗?展开聊聊”,我会先说明它对应的安全场景和要解决的问题,再给出一个具体例子。比如在真实测试或审计中,我会先确认入口在哪里、用户输入是否可控、数据经过哪些处理、最终进入哪个敏感操作;验证时尽量使用低风险方式证明影响,例如观察响应差异、日志、时间延迟、回连记录或权限边界,而不是破坏数据。修复时从代码、配置和权限三方面处理:代码层使用安全 API、参数化、白名单和输出编码;配置层关闭危险功能、升级组件、限制网络和文件权限;权限层坚持最小权限,避免单点漏洞扩大影响。最后我会补充复测方法,用原触发条件验证漏洞不可再利用,并确认正常业务流程仍然可用。
5. 12、那如果不出网呢?
参考完整回答(那如果不出网呢):
这题我会这样完整回答:针对“12、那如果不出网呢?”,我会先说明它对应的安全场景和要解决的问题,再给出一个具体例子。比如在真实测试或审计中,我会先确认入口在哪里、用户输入是否可控、数据经过哪些处理、最终进入哪个敏感操作;验证时尽量使用低风险方式证明影响,例如观察响应差异、日志、时间延迟、回连记录或权限边界,而不是破坏数据。修复时从代码、配置和权限三方面处理:代码层使用安全 API、参数化、白名单和输出编码;配置层关闭危险功能、升级组件、限制网络和文件权限;权限层坚持最小权限,避免单点漏洞扩大影响。最后我会补充复测方法,用原触发条件验证漏洞不可再利用,并确认正常业务流程仍然可用。
返回安全面经目录