Security Interview

0x57 安恒-卫兵实验室

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

0x57 安恒-卫兵实验室

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

1. 1、你的简历与你之前发过来的简历有什么变化吗?

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

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

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

2. 3、最近出了 Weblogic 的一个新的洞,你有研究过吗?自己在研究的时候有没有思考过别人是怎么挖出来的洞。

参考完整回答(最近出了weblogic的一个新的洞你有研究过吗自己在研究的时候有没有思考过别人是怎么挖出来的洞):

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

3. 4、你觉得挖什么样子的洞比较好呢?你一般是怎么开展研究的

参考完整回答(你觉得挖什么样子的洞比较好呢你一般是怎么开展研究的):

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

4. 7、你是什么状况下去学习 golang 的呢?是出于什么考虑呢

参考完整回答(你是什么状况下去学习golang的呢是出于什么考虑呢):

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

5. 8、为什么在连连只实习了一个月呢?都做了什么业务

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

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

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

6. 9、能简单说说在连连做了什么渗透测试吗?

参考完整回答(能简单说说在连连做了什么渗透测试吗):

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

7. 10、能说一说常见的 SQL 注入种类吗?自己有绕过过一些 SQL 注入的 waf 吗?

参考完整回答(SQL注入绕过):

SQL 注入绕过通常是因为防护用了黑名单,比如只过滤空格、逗号、select、union 这类关键字。攻击者可以用大小写混淆、注释符、URL 编码、宽字节、换行、括号、函数等价替代、布尔盲注、时间盲注、二次注入等方式绕过。例如过滤空格时可能用 /**/、换行或括号替代;过滤逗号时,MySQL 某些场景可以用 join、from for 或子查询改写。

但我在面试中会强调:绕过技巧说明黑名单不可靠,修复不能继续堆规则。正确做法还是参数化查询、白名单映射、最小权限和统一 ORM/DAO 层封装。安全设备如 WAF 可以作为辅助,但不能代替代码层修复。

8. 11、一般是怎么绕 waf 呢?具体说说

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

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

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

9. 12、有遇到过语意型的 waf 吗?自己是怎么 bypass 的呢?

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

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

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

10. 13、如果给到你一个1day,你要怎么样进行漏洞分析呢?

参考完整回答(0day):

0day 是厂商未知或尚未发布补丁的漏洞。面试中聊 0day 我会重点讲研究方法而不是夸大结果:先从攻击面和历史漏洞模式入手,做补丁 diff、协议/接口分析、代码审计、模糊测试或组件变更分析;发现异常后构造最小 PoC,确认影响范围和版本;最后负责任披露给厂商或平台。

防护 0day 不能依赖补丁,更多靠纵深防御:最小暴露、WAF/RASP、行为检测、出网限制、最小权限、资产指纹和应急预案。

11. 14、又问了我如果就是一个 SQL 注入的 1day,让你漏洞分析,你会怎么分析呢,比如是有些特定条件下的 SQL 注入,比如什么什么配置文件下,你会怎么分析呢?

参考完整回答(0day):

0day 是厂商未知或尚未发布补丁的漏洞。面试中聊 0day 我会重点讲研究方法而不是夸大结果:先从攻击面和历史漏洞模式入手,做补丁 diff、协议/接口分析、代码审计、模糊测试或组件变更分析;发现异常后构造最小 PoC,确认影响范围和版本;最后负责任披露给厂商或平台。

防护 0day 不能依赖补丁,更多靠纵深防御:最小暴露、WAF/RASP、行为检测、出网限制、最小权限、资产指纹和应急预案。

12. 15、那你这样分析流程不会很耗时间吗?如果ddl之前你还没有分析完漏洞呢?你会怎么办?

参考完整回答(那你这样分析流程不会很耗时间吗如果ddl之前你还没有分析完漏洞呢你会怎么办):

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

13. 我大致了解你的情况了,能说说 SSRF 怎么样才能最好的利用呢?

参考完整回答(SSRF):

SSRF 是服务端请求伪造,攻击者控制 URL 参数,让服务器代替攻击者去访问目标。因为请求从服务端发出,所以可以访问攻击者本来访问不到的内网服务,比如 127.0.0.1、Redis、Consul、Kubernetes API、云厂商元数据地址 169.254.169.254 等。常见入口是图片抓取、URL 预览、文件下载、Webhook、PDF 生成和远程资源导入。

修复时我会做“解析后校验”而不是简单字符串判断。首先限制协议,只允许 http/https;其次使用白名单域名或固定资源代理;再次 DNS 解析后校验 IP,禁止私有地址、回环地址、链路本地地址、IPv6 本地地址和保留地址;还要处理重定向,每次跳转后重新校验;最后限制端口、超时时间、响应大小,并通过网络层让业务容器无法直连内网敏感服务和云元数据。

14. 20、那如果在变量里面呢?你要怎么过滤

参考完整回答(SQL注入绕过):

SQL 注入绕过通常是因为防护用了黑名单,比如只过滤空格、逗号、select、union 这类关键字。攻击者可以用大小写混淆、注释符、URL 编码、宽字节、换行、括号、函数等价替代、布尔盲注、时间盲注、二次注入等方式绕过。例如过滤空格时可能用 /**/、换行或括号替代;过滤逗号时,MySQL 某些场景可以用 join、from for 或子查询改写。

但我在面试中会强调:绕过技巧说明黑名单不可靠,修复不能继续堆规则。正确做法还是参数化查询、白名单映射、最小权限和统一 ORM/DAO 层封装。安全设备如 WAF 可以作为辅助,但不能代替代码层修复。

15. 我直接说了 dns rebinding,我说这种攻击非常可观。面试官问我还有没有其他的呢?我补充了 @ 符绕过,进制转换,句号替换.符号。

参考完整回答(DNS安全):

DNS 的作用是把域名解析为 IP,常见过程是浏览器/系统先查缓存和 hosts,再问本地递归解析器,递归解析器从根、顶级域、权威 DNS 逐级查询并返回结果。安全问题包括 DNS 劫持、缓存投毒、域传送泄露、子域名接管、DNS 隧道、DGA 域名和解析记录暴露真实 IP。

防护上,权威 DNS 要关闭未授权 AXFR,合理配置解析记录和 TTL;重要域名开启 DNSSEC 能降低篡改风险;企业侧监控异常 DNS 查询、长随机子域名和 TXT 大流量;对子域名下线要同时回收云资源,避免子域名接管。

16. 24、关于内存马有了解嘛?可以简单讲讲有哪些内存马吗?

参考完整回答(内存马):

内存马是不依赖传统落地 WebShell、驻留在应用运行时里的后门。Java Web 里常见形态包括动态注册 Filter、Servlet、Listener、Interceptor、Controller,或者通过 Agent、字节码增强挂入请求链。它的特点是文件落地少、重启后可能消失或通过其他方式重新注入,常规文件查杀不一定能发现。

排查时我会看异常路由、Filter/Servlet 注册表、线程、类加载器、堆内存、访问日志和异常响应特征;也可以通过 Arthas、JMX、RASP/EDR 做运行时检查。防护上要修入口漏洞、限制反射和动态类加载风险、最小权限运行,并加强运行时完整性监控。

17. 25、内存马的查杀了解过原理吗?

参考完整回答(内存马):

内存马是不依赖传统落地 WebShell、驻留在应用运行时里的后门。Java Web 里常见形态包括动态注册 Filter、Servlet、Listener、Interceptor、Controller,或者通过 Agent、字节码增强挂入请求链。它的特点是文件落地少、重启后可能消失或通过其他方式重新注入,常规文件查杀不一定能发现。

排查时我会看异常路由、Filter/Servlet 注册表、线程、类加载器、堆内存、访问日志和异常响应特征;也可以通过 Arthas、JMX、RASP/EDR 做运行时检查。防护上要修入口漏洞、限制反射和动态类加载风险、最小权限运行,并加强运行时完整性监控。

返回安全面经目录