Security Interview

0x82 京东

来源:vvmdx/Sec-Interview-4-2023,已转换为博客静态页面。

0x82 京东

来源:https://github.com/vvmdx/Sec-Interview-4-2023
说明:本文件按原面经问题整理答题要点,答案为面试复习口径。

一面

1. 问项目,干了什么?有什么优势?

参考完整回答(项目/实习经历):

项目经历我会用 STAR 讲完整,而不是只列技术名词。先说项目背景:这是一个什么系统、业务价值是什么、我负责哪块安全工作;再说任务:比如接口鉴权、代码审计、漏洞验证、应急处置或安全工具开发;然后讲行动:我如何定位入口、使用了哪些工具、验证了哪些风险、如何推动修复;最后讲结果:修复了什么漏洞、减少了什么暴露面、沉淀了什么规则或文档。

如果面试官深挖,我会准备一个具体案例。例如“我在某系统审计中发现订单详情接口只校验登录态,没有校验订单 owner,导致水平越权。我用两个普通账号互换订单 ID 复现,确认能读取他人数据。修复方案是在服务端统一鉴权中间件里加入用户、租户和资源归属校验,并补充异常访问日志。复测时原越权请求返回 403,正常用户访问不受影响。”

2. src相关

参考完整回答(漏洞挖掘经验):

漏洞挖掘我不会说成纯工具扫描。我的流程是先确定授权范围和资产清单,再根据资产类型选择策略:后台类系统重点看弱口令、越权、文件上传和接口泄露;API 类系统重点看鉴权、签名、重放和参数污染;老旧系统重点看组件版本和历史 CVE;云资产重点看对象存储、密钥泄露和安全组。

举例回答可以说:我曾在测试环境中通过 JS 文件和接口文档定位到一个未在页面展示的管理接口,用低权限账号访问后发现只校验登录态,没有校验角色,最终形成垂直越权。提交报告时我写了复现步骤、影响范围、截图证据、修复建议和复测结果。

3. 信息搜集流程,IP段如何定位?

参考完整回答(信息搜集流程ip段如何定位):

这题我会这样完整回答:针对“信息搜集流程,IP段如何定位?”,我会先说明它对应的安全场景和要解决的问题,再给出一个具体例子。比如在真实测试或审计中,我会先确认入口在哪里、用户输入是否可控、数据经过哪些处理、最终进入哪个敏感操作;验证时尽量使用低风险方式证明影响,例如观察响应差异、日志、时间延迟、回连记录或权限边界,而不是破坏数据。修复时从代码、配置和权限三方面处理:代码层使用安全 API、参数化、白名单和输出编码;配置层关闭危险功能、升级组件、限制网络和文件权限;权限层坚持最小权限,避免单点漏洞扩大影响。最后我会补充复测方法,用原触发条件验证漏洞不可再利用,并确认正常业务流程仍然可用。

4. 子域名搜集手段及其原理(不要讲工具类的)

参考完整回答(子域名搜集手段及其原理不要讲工具类的):

这题我会这样完整回答:针对“子域名搜集手段及其原理(不要讲工具类的)”,我会先说明它对应的安全场景和要解决的问题,再给出一个具体例子。比如在真实测试或审计中,我会先确认入口在哪里、用户输入是否可控、数据经过哪些处理、最终进入哪个敏感操作;验证时尽量使用低风险方式证明影响,例如观察响应差异、日志、时间延迟、回连记录或权限边界,而不是破坏数据。修复时从代码、配置和权限三方面处理:代码层使用安全 API、参数化、白名单和输出编码;配置层关闭危险功能、升级组件、限制网络和文件权限;权限层坚持最小权限,避免单点漏洞扩大影响。最后我会补充复测方法,用原触发条件验证漏洞不可再利用,并确认正常业务流程仍然可用。

5. 逆向用的什么工具?hook相关讲一讲?

参考完整回答(逆向用的什么工具hook相关讲一讲):

这题我会这样完整回答:针对“逆向用的什么工具?hook相关讲一讲?”,我会先说明它对应的安全场景和要解决的问题,再给出一个具体例子。比如在真实测试或审计中,我会先确认入口在哪里、用户输入是否可控、数据经过哪些处理、最终进入哪个敏感操作;验证时尽量使用低风险方式证明影响,例如观察响应差异、日志、时间延迟、回连记录或权限边界,而不是破坏数据。修复时从代码、配置和权限三方面处理:代码层使用安全 API、参数化、白名单和输出编码;配置层关闭危险功能、升级组件、限制网络和文件权限;权限层坚持最小权限,避免单点漏洞扩大影响。最后我会补充复测方法,用原触发条件验证漏洞不可再利用,并确认正常业务流程仍然可用。

6. 白盒审计有没有做过?cve、cnvd讲一讲

参考完整回答(漏洞挖掘经验):

漏洞挖掘我不会说成纯工具扫描。我的流程是先确定授权范围和资产清单,再根据资产类型选择策略:后台类系统重点看弱口令、越权、文件上传和接口泄露;API 类系统重点看鉴权、签名、重放和参数污染;老旧系统重点看组件版本和历史 CVE;云资产重点看对象存储、密钥泄露和安全组。

举例回答可以说:我曾在测试环境中通过 JS 文件和接口文档定位到一个未在页面展示的管理接口,用低权限账号访问后发现只校验登录态,没有校验角色,最终形成垂直越权。提交报告时我写了复现步骤、影响范围、截图证据、修复建议和复测结果。

7. csrf怎么修复?

参考完整回答(CSRF):

CSRF 的关键点是攻击者无法读取目标站响应,但可以诱导用户浏览器带着 Cookie 发起请求。如果用户已经登录,浏览器会自动携带 Cookie,导致转账、改密码、绑定邮箱等操作被伪造。

我会从三层防护回答:第一,关键状态变更请求必须校验 CSRF Token,Token 与会话绑定且不可预测;第二,校验 Origin/Referer,拦截跨站来源;第三,Cookie 设置 SameSite=Lax 或 Strict,HTTPS 下加 Secure。对于高危操作,还可以加二次确认、验证码或重新认证。只靠 GET 改状态是不安全的,状态变更应使用 POST/PUT/DELETE 并做服务端校验。

8. waf怎么绕?云waf怎么绕?

参考完整回答(WAF/IDS/误报):

WAF/IDS 误报多来自规则只看单个关键字、缺少业务上下文、参数位置不同、编码变化、正常运维脚本触发和资产类型差异。比如 mysql 执行 powershell 可能是运维脚本,也可能是入侵后的横向行为,不能只看一个命中点。

优化时我会做分层:高危明确攻击特征可以阻断;中低危先告警并结合频率、来源信誉、参数位置、响应码、命中规则数、登录态和资产重要性打分;对确定的正常业务加精确白名单,而不是大范围放行;持续把处置结果反馈到规则,形成闭环。

9. 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。

10. fastjson反序列化有没有了解?反序列化函数是哪个?讲一下细节

参考完整回答(Fastjson):

Fastjson 的典型问题和 autoType 反序列化有关。攻击者提交带 @type 的 JSON,让 Fastjson 实例化攻击者指定的类;如果目标环境存在可利用 gadget,就可能触发 JNDI、setter、副作用方法或反序列化链,造成远程命令执行、SSRF 或敏感操作。

回答时可以说利用条件包括:目标使用受影响版本、开启或绕过 autoType、类路径中存在可利用类、输入 JSON 可控。修复是升级到安全版本,关闭 autoType,使用白名单而不是黑名单,避免对外部输入做任意类型反序列化;同时限制应用出网,减少 JNDI 类漏洞的利用成功率,并在日志中监控 @type、JdbcRowSetImpl、TemplatesImpl 等高危特征。

11. log4j-rce漏洞原理,怎么发现?怎么打?操作流程是啥?

参考完整回答(Log4j/JNDI):

Log4j2 的 Log4Shell 漏洞是因为日志内容中的 ${jndi:...} 会触发 JNDI Lookup。攻击者只要能控制被记录到日志里的内容,比如 User-Agent、用户名、请求参数,就可能让服务器访问恶意 LDAP/RMI 地址,进而触发远程类加载或本地 gadget,造成 RCE。

完整修复是升级 Log4j 到安全版本;临时措施包括删除 JndiLookup 类、关闭 lookup、设置相关安全参数,但最终仍应升级。还要排查传递依赖,因为很多应用不是直接引入 Log4j;网络层限制服务器访问外部 LDAP/RMI;日志侧检索 ${jndi:、lower、upper、::- 等混淆特征,确认是否被探测或利用。

12. fastjson反序列化与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。

13. fastjson高版本怎么打?不出网怎么打?有什么利用链?

参考完整回答(Fastjson):

Fastjson 的典型问题和 autoType 反序列化有关。攻击者提交带 @type 的 JSON,让 Fastjson 实例化攻击者指定的类;如果目标环境存在可利用 gadget,就可能触发 JNDI、setter、副作用方法或反序列化链,造成远程命令执行、SSRF 或敏感操作。

回答时可以说利用条件包括:目标使用受影响版本、开启或绕过 autoType、类路径中存在可利用类、输入 JSON 可控。修复是升级到安全版本,关闭 autoType,使用白名单而不是黑名单,避免对外部输入做任意类型反序列化;同时限制应用出网,减少 JNDI 类漏洞的利用成功率,并在日志中监控 @type、JdbcRowSetImpl、TemplatesImpl 等高危特征。

14. 内网渗透横向手段,135、445端口

参考完整回答(内网渗透/横向):

内网渗透我会先确认当前落点的权限、网段、路由、DNS、域环境和出网情况。然后做低噪声主机发现和端口识别,重点关注域控、文件共享、数据库、中间件、运维平台和代码仓库。接着收集凭证线索,例如配置文件、历史命令、浏览器缓存、数据库连接串、共享目录和内存凭证;如果授权允许,再验证横向移动和权限提升路径。

防守视角我会补充:内网安全不能只靠边界防火墙,要做分区分域、最小权限、凭证隔离、禁用明文密码和本地管理员复用、开启 EDR、监控东西向流量、审计异常登录和远程执行行为。

15. 免杀相关?怎么判断是不是虚拟机环境?

参考完整回答(免杀):

免杀的本质是绕过静态特征、行为检测和沙箱检测。常见思路包括编码/加密载荷、分阶段加载、API 动态解析、混淆、反沙箱、内存加载和行为降噪。但在面试中我会注意边界,不展示可直接滥用的细节,而是从防守视角说明检测点。

防护上不能只依赖特征查杀,要结合行为监控、命令行审计、父子进程关系、网络外连、内存执行、脚本执行策略和最小权限。对企业来说,PowerShell 日志、EDR、应用白名单和出网控制很关键。

16. 怎么判断是域环境还是工作组,讲讲细节

参考完整回答(怎么判断是域环境还是工作组讲讲细节):

这题我会这样完整回答:针对“怎么判断是域环境还是工作组,讲讲细节”,我会先说明它对应的安全场景和要解决的问题,再给出一个具体例子。比如在真实测试或审计中,我会先确认入口在哪里、用户输入是否可控、数据经过哪些处理、最终进入哪个敏感操作;验证时尽量使用低风险方式证明影响,例如观察响应差异、日志、时间延迟、回连记录或权限边界,而不是破坏数据。修复时从代码、配置和权限三方面处理:代码层使用安全 API、参数化、白名单和输出编码;配置层关闭危险功能、升级组件、限制网络和文件权限;权限层坚持最小权限,避免单点漏洞扩大影响。最后我会补充复测方法,用原触发条件验证漏洞不可再利用,并确认正常业务流程仍然可用。

17. 如果是域环境你会怎么做?怎么拿下域控?

参考完整回答(内网渗透/横向):

内网渗透我会先确认当前落点的权限、网段、路由、DNS、域环境和出网情况。然后做低噪声主机发现和端口识别,重点关注域控、文件共享、数据库、中间件、运维平台和代码仓库。接着收集凭证线索,例如配置文件、历史命令、浏览器缓存、数据库连接串、共享目录和内存凭证;如果授权允许,再验证横向移动和权限提升路径。

防守视角我会补充:内网安全不能只靠边界防火墙,要做分区分域、最小权限、凭证隔离、禁用明文密码和本地管理员复用、开启 EDR、监控东西向流量、审计异常登录和远程执行行为。

18. 你提到的PTH、域委派攻击讲一下?实战中有遇到过吗?

参考完整回答(你提到的pth域委派攻击讲一下实战中有遇到过吗):

这题我会这样完整回答:针对“你提到的PTH、域委派攻击讲一下?实战中有遇到过吗?”,我会先说明它对应的安全场景和要解决的问题,再给出一个具体例子。比如在真实测试或审计中,我会先确认入口在哪里、用户输入是否可控、数据经过哪些处理、最终进入哪个敏感操作;验证时尽量使用低风险方式证明影响,例如观察响应差异、日志、时间延迟、回连记录或权限边界,而不是破坏数据。修复时从代码、配置和权限三方面处理:代码层使用安全 API、参数化、白名单和输出编码;配置层关闭危险功能、升级组件、限制网络和文件权限;权限层坚持最小权限,避免单点漏洞扩大影响。最后我会补充复测方法,用原触发条件验证漏洞不可再利用,并确认正常业务流程仍然可用。

19. 讲一讲云原生攻防思路以及手段,实战中遇到的云环境是什么样的?

参考完整回答(讲一讲云原生攻防思路以及手段实战中遇到的云环境是什么样的):

这题我会这样完整回答:针对“讲一讲云原生攻防思路以及手段,实战中遇到的云环境是什么样的?”,我会先说明它对应的安全场景和要解决的问题,再给出一个具体例子。比如在真实测试或审计中,我会先确认入口在哪里、用户输入是否可控、数据经过哪些处理、最终进入哪个敏感操作;验证时尽量使用低风险方式证明影响,例如观察响应差异、日志、时间延迟、回连记录或权限边界,而不是破坏数据。修复时从代码、配置和权限三方面处理:代码层使用安全 API、参数化、白名单和输出编码;配置层关闭危险功能、升级组件、限制网络和文件权限;权限层坚持最小权限,避免单点漏洞扩大影响。最后我会补充复测方法,用原触发条件验证漏洞不可再利用,并确认正常业务流程仍然可用。

20. docker逃逸的手段,分别讲讲各种手段原理

参考完整回答(容器安全):

容器安全要从镜像、运行时、编排和宿主机四层看。镜像层要避免使用高危基础镜像、硬编码密钥和 root 用户;运行时要限制特权容器、hostPath、hostNetwork、SYS_ADMIN 等危险能力;Kubernetes 层要控制 RBAC、ServiceAccount token、API Server 暴露、etcd 访问和网络策略;宿主机层要及时更新内核和容器运行时。

容器逃逸通常依赖特权配置、危险挂载、内核漏洞、Docker socket 暴露或 K8s 权限过大。防护是最小权限、只读文件系统、seccomp/AppArmor、禁止特权容器、镜像扫描、网络隔离和审计异常容器行为。

21. 还有一些内网情景题跟八股,忘记了,实在太多了,面了很久

参考完整回答(内网渗透/横向):

内网渗透我会先确认当前落点的权限、网段、路由、DNS、域环境和出网情况。然后做低噪声主机发现和端口识别,重点关注域控、文件共享、数据库、中间件、运维平台和代码仓库。接着收集凭证线索,例如配置文件、历史命令、浏览器缓存、数据库连接串、共享目录和内存凭证;如果授权允许,再验证横向移动和权限提升路径。

防守视角我会补充:内网安全不能只靠边界防火墙,要做分区分域、最小权限、凭证隔离、禁用明文密码和本地管理员复用、开启 EDR、监控东西向流量、审计异常登录和远程执行行为。

22. 反问(部门情况,工作内容)

参考完整回答(反问):

反问可以围绕岗位职责、团队方向、技术栈、培养机制、实习生预期、日常工作比例和后续流程。不要只问薪资和作息,可以问“这个岗位更偏漏洞研究、工程建设还是应急响应?”来体现目标感。

返回安全面经目录