0x10 华顺信安-安全服务工程师
来源:https://github.com/vvmdx/Sec-Interview-4-2023
说明:本文件按原面经问题整理答题要点,答案为面试复习口径。
1. 自我介绍
参考完整回答(自我介绍):
可以按“背景、方向、项目、工具、优势、求职动机”来讲。示例:我主要学习网络安全方向,熟悉 Web 漏洞、渗透测试、Linux 安全、日志分析和代码审计;项目中做过资产收集、漏洞验证、权限控制或应急处置,常用 Burp、Nmap、sqlmap、Wireshark、Linux 等工具。最后强调自己能从漏洞原理、利用条件和修复方案三个层面分析问题。
2. 红蓝队经验
参考完整回答(红蓝队经验):
这题我会这样完整回答:针对“红蓝队经验”,我会先说明它对应的安全场景和要解决的问题,再给出一个具体例子。比如在真实测试或审计中,我会先确认入口在哪里、用户输入是否可控、数据经过哪些处理、最终进入哪个敏感操作;验证时尽量使用低风险方式证明影响,例如观察响应差异、日志、时间延迟、回连记录或权限边界,而不是破坏数据。修复时从代码、配置和权限三方面处理:代码层使用安全 API、参数化、白名单和输出编码;配置层关闭危险功能、升级组件、限制网络和文件权限;权限层坚持最小权限,避免单点漏洞扩大影响。最后我会补充复测方法,用原触发条件验证漏洞不可再利用,并确认正常业务流程仍然可用。
3. 关于shiro漏洞了解多少
参考完整回答(Shiro反序列化):
Shiro 经典反序列化漏洞通常出现在 rememberMe 功能。Shiro 会把序列化对象加密后放进 rememberMe Cookie,如果密钥是默认值或泄露,攻击者就能用这个密钥加密恶意序列化数据发给服务端,服务端解密后反序列化,触发 CommonsCollections 等 gadget 链。
我会回答形成原因是:客户端可控 Cookie、服务端自动解密反序列化、密钥弱或默认、环境中存在可用 gadget。修复包括升级 Shiro,使用随机强密钥,禁用不必要的 rememberMe,减少危险依赖,开启出网限制,并监控异常 rememberMe Cookie 长度、特征和反序列化异常。
4. 说说你APP测试的经验
参考完整回答(APP安全测试):
APP 安全测试我会从客户端、通信、服务端接口和本地存储四块看。客户端侧做 APK 反编译,查看敏感信息硬编码、加固情况、调试开关、WebView 配置和组件暴露;通信侧抓包看 HTTPS、证书校验、是否可中间人、参数签名和重放;接口侧测试越权、注入、弱鉴权、验证码绕过;本地侧看 SharedPreferences、SQLite、日志和缓存中是否存敏感数据。
常用工具包括 jadx、apktool、MobSF、Frida、Objection、Burp、Charles。遇到证书绑定可以用 Frida hook 或测试包关闭校验,但要在授权环境中进行。
5. xposed用的什么框架,有没有自己写过app解密
参考完整回答(APP安全测试):
APP 安全测试我会从客户端、通信、服务端接口和本地存储四块看。客户端侧做 APK 反编译,查看敏感信息硬编码、加固情况、调试开关、WebView 配置和组件暴露;通信侧抓包看 HTTPS、证书校验、是否可中间人、参数签名和重放;接口侧测试越权、注入、弱鉴权、验证码绕过;本地侧看 SharedPreferences、SQLite、日志和缓存中是否存敏感数据。
常用工具包括 jadx、apktool、MobSF、Frida、Objection、Burp、Charles。遇到证书绑定可以用 Frida hook 或测试包关闭校验,但要在授权环境中进行。
6. Xss、SSRF、SQL 产生的原因,修复方案?
参考完整回答(XSS):
XSS 是用户可控内容被浏览器当成脚本执行。反射型常见于搜索参数或错误提示,存储型常见于评论、昵称、工单内容,DOM 型常见于前端从 location、hash、postMessage 中取值后写入页面。影响包括窃取用户信息、发起越权操作、劫持页面、钓鱼和横向传播。
修复要按输出上下文处理:输出到 HTML 文本要 HTML 编码,输出到属性要属性编码,输出到 JS 字符串要 JS 编码,输出到 URL 要限制协议并 URL 编码。富文本不能自己写黑名单,应该用成熟清洗库。Cookie 设置 HttpOnly、Secure、SameSite,降低被盗风险;CSP 可以限制脚本来源,作为纵深防御。
7. 如果你Xss打了后台,发现是内网的怎么办
参考完整回答(XSS):
XSS 是用户可控内容被浏览器当成脚本执行。反射型常见于搜索参数或错误提示,存储型常见于评论、昵称、工单内容,DOM 型常见于前端从 location、hash、postMessage 中取值后写入页面。影响包括窃取用户信息、发起越权操作、劫持页面、钓鱼和横向传播。
修复要按输出上下文处理:输出到 HTML 文本要 HTML 编码,输出到属性要属性编码,输出到 JS 字符串要 JS 编码,输出到 URL 要限制协议并 URL 编码。富文本不能自己写黑名单,应该用成熟清洗库。Cookie 设置 HttpOnly、Secure、SameSite,降低被盗风险;CSP 可以限制脚本来源,作为纵深防御。
8. 假设给你一个目标站,你要怎么做?
参考完整回答(假设给你一个目标站你要怎么做):
这题我会这样完整回答:针对“假设给你一个目标站,你要怎么做?”,我会先说明它对应的安全场景和要解决的问题,再给出一个具体例子。比如在真实测试或审计中,我会先确认入口在哪里、用户输入是否可控、数据经过哪些处理、最终进入哪个敏感操作;验证时尽量使用低风险方式证明影响,例如观察响应差异、日志、时间延迟、回连记录或权限边界,而不是破坏数据。修复时从代码、配置和权限三方面处理:代码层使用安全 API、参数化、白名单和输出编码;配置层关闭危险功能、升级组件、限制网络和文件权限;权限层坚持最小权限,避免单点漏洞扩大影响。最后我会补充复测方法,用原触发条件验证漏洞不可再利用,并确认正常业务流程仍然可用。
9. linux和windows提权知多少。
参考完整回答(Linux安全):
Linux 安全我会从账号、权限、进程、网络、启动项、日志和补丁几个方面回答。账号侧检查 /etc/passwd、sudoers、SSH key、弱口令和异常登录;权限侧关注 SUID/SGID、777 目录、敏感文件权限和 Web 目录可写可执行;进程和网络侧用 ps、top、ss、lsof 看异常进程和外连;持久化侧看 crontab、systemd、rc.local、shell profile 和自启动服务。
加固时禁用 root 远程登录,使用密钥和 MFA,最小化 sudo 权限,关闭不必要服务,配置防火墙,开启日志审计,及时打补丁。发现入侵时先保留证据,再做隔离和清除。
10. 会不会进程注入?
参考完整回答(SQL注入):
SQL 注入的本质是用户输入进入 SQL 语句后被数据库当作语法执行,改变了原本查询逻辑。比如登录、搜索、筛选、排序、导出接口中,如果后端直接拼接 username、id、keyword、orderBy 等参数,就可能导致布尔盲注、报错注入、联合查询、时间盲注甚至写文件或提权。
修复上我会首选预编译和参数化查询,让用户输入只作为数据而不是 SQL 语法。对于 order by、表名、列名这类无法直接用占位符的位置,不能拼接用户输入,而应该做白名单映射,例如前端传 name,后端映射到固定字段 user_name;排序方向只允许 asc/desc。除此之外,还要限制数据库账号权限、关闭详细报错、记录异常 SQL 行为,并在上线前做 SAST/DAST 和手工复测。
11. 做过几次应急?
参考完整回答(应急响应):
应急响应我会按“发现、遏制、分析、清除、恢复、复盘”回答。发现阶段确认告警来源和影响范围;遏制阶段先隔离主机或封禁恶意 IP,避免扩散;分析阶段看进程、网络连接、账号、计划任务、启动项、Web 目录、日志和流量,确认入侵入口和攻击链;清除阶段删除后门、修补漏洞、重置凭证;恢复阶段验证业务和安全状态;最后形成复盘报告和加固清单。
常用命令包括 ps、top、ss、lsof、last、journalctl、crontab、systemctl、find、sha256sum、tcpdump。关键是证据保全,不要一上来就删文件导致无法溯源。
12. 讲讲windows和linux应急你咋做的
参考完整回答(应急响应):
应急响应我会按“发现、遏制、分析、清除、恢复、复盘”回答。发现阶段确认告警来源和影响范围;遏制阶段先隔离主机或封禁恶意 IP,避免扩散;分析阶段看进程、网络连接、账号、计划任务、启动项、Web 目录、日志和流量,确认入侵入口和攻击链;清除阶段删除后门、修补漏洞、重置凭证;恢复阶段验证业务和安全状态;最后形成复盘报告和加固清单。
常用命令包括 ps、top、ss、lsof、last、journalctl、crontab、systemctl、find、sha256sum、tcpdump。关键是证据保全,不要一上来就删文件导致无法溯源。
13. 用过没用过我们家的goby和fofa?
参考完整回答(用过没用过我们家的goby和fofa):
这题我会这样完整回答:针对“用过没用过我们家的goby和fofa?”,我会先说明它对应的安全场景和要解决的问题,再给出一个具体例子。比如在真实测试或审计中,我会先确认入口在哪里、用户输入是否可控、数据经过哪些处理、最终进入哪个敏感操作;验证时尽量使用低风险方式证明影响,例如观察响应差异、日志、时间延迟、回连记录或权限边界,而不是破坏数据。修复时从代码、配置和权限三方面处理:代码层使用安全 API、参数化、白名单和输出编码;配置层关闭危险功能、升级组件、限制网络和文件权限;权限层坚持最小权限,避免单点漏洞扩大影响。最后我会补充复测方法,用原触发条件验证漏洞不可再利用,并确认正常业务流程仍然可用。
14. 会不会apk反编译?
参考完整回答(APP安全测试):
APP 安全测试我会从客户端、通信、服务端接口和本地存储四块看。客户端侧做 APK 反编译,查看敏感信息硬编码、加固情况、调试开关、WebView 配置和组件暴露;通信侧抓包看 HTTPS、证书校验、是否可中间人、参数签名和重放;接口侧测试越权、注入、弱鉴权、验证码绕过;本地侧看 SharedPreferences、SQLite、日志和缓存中是否存敏感数据。
常用工具包括 jadx、apktool、MobSF、Frida、Objection、Burp、Charles。遇到证书绑定可以用 Frida hook 或测试包关闭校验,但要在授权环境中进行。
15. 你python水平咋样?
参考完整回答(越权):
越权分水平越权和垂直越权。水平越权是同权限用户访问他人资源,例如 A 用户通过修改 orderId 看到 B 用户订单;垂直越权是低权限用户访问高权限功能,例如普通用户调用管理员删除接口。根因通常是服务端只校验“是否登录”,没有校验“是否有权访问这个资源或动作”。
测试时我会准备两个不同角色或不同用户账号,对比请求中的 userId、tenantId、role、resourceId、orderId 等参数,尝试替换后看响应是否越界。修复必须在服务端统一鉴权,基于当前登录用户从服务端上下文取身份,校验角色、租户和资源归属,不能相信前端传来的 role 或 userId。
16. 你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 则要特别关注变量覆盖、文件包含、上传目录执行权限和弱类型比较。
返回安全面经目录