将安全君呀设为"星标⭐️"
第一时间收到文章更新
声明: 安全君呀 公众号文章中的技术只做研究之用,禁止用来从事非法用途,如有使用文章中的技术从事非法活动,一切后果由使用者自负,与本公众号无关。
文章声明:本篇文章内容部分选取网络,如有侵权,请告知删除。
奇安信安服岗面试流程一般分为笔试、两轮技术面和 HR 面,部分岗位可能会有不同。整体流程较快,一个下午可能走完所有流程。
一、笔试
首先是笔试环节,分享几道记忆犹新的笔试题,大家可以一起来做一做,希望能对大家有帮助。
1、TCP三次握手四次挥手
三次握手
-
客户端 syn 发送到服务端,变成 SYN_SENT 状态
-
服务端 ack=syn+1 回传syn到客户端,变成SYN_RECV状态
-
客户端 ack=syn+1, 变成ESTABLISHED状态,传输给服务端
-
服务端收到ACK后变成ESTABLISHED状态,建立连接
SYN标志位为表示请求连接,ACK表示确认
四次挥手
客户端=主动关闭方
-
客户端FIN->服务端
-
服务端ACK=FIN+1->客户端,服务端到客户端的连接关闭
-
服务端FIN->客户端
-
客户端ACK=FIN+1->服务端
假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!
MSL=最大段寿命=TTL=最大生存时间=255s
2、ISO27000和等保(重点等保)
说一下ISO27000
ISO27000是国际知名的信息安全管理体系标准,适用于整个企业,不仅仅是IT部门,还包括业务部门、财务、人事等部门。引入信息安全管理体系就可以协调各个方面信息管理,从而使管理更为有效。保证信息安全不是仅有一个防火墙,或找一个24小时提供信息安全服务的公司就可以达到的。它需要全面的综合管理。
PDCA(plan do check action)管理循环
说一下等级保护制度
《信息安全等级保护管理办法》是为规范信息安全等级保护管理,提高信息安全保障能力和水平,维护国家安全、社会稳定和公共利益,保障和促进信息化建设,根据《中华人民共和国计算机信息系统安全保护条例》等有关法律法规而制定的办法。
差异
浅谈信息安全等级保护与ISO27000系列标准的异同 ISSN 1009-3044
等保是以国家安全、社会秩序和公共利益为出发点,构建国家的安全保障体系。27000系列是以保证组织业务的连续性,缩减业务风险,最大化投资收益为目的,保证组织的业务安全。
3、邮件钓鱼的准备工作有哪些?
a. 确定邮件钓鱼的形式:链接、文件
b. 收集目标相关邮箱
c. 编写钓鱼邮件文案
d. 匿名邮箱
e. 木马免杀测试、钓鱼站点搭建
f. 反溯源
4、判断出靶标的CMS,对外网打点有什么意义?
a. 判断当前使用的CMS是否存在Nday,尝试利用公开的POC、EXP进行测试。
b. 根据CMS特征关联同CMS框架站点,进行「敏感备份文件」扫描,有可能获取到站点备份文件。尝试从CMS源码进行代码审计,挖掘潜在漏洞。
5、Apache Log4j2的漏洞原理是什么?
由于Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。
6、水坑攻击和鱼叉攻击的区别是什么?
水坑攻击指的是黑客通过分析被攻击者的网络活动规律,寻找被攻击者经常访问的网站的弱点,先攻下该网站并植入攻击代码,等待被攻击者来访时实施攻击。
鱼叉攻击则是通常是指利用木马程序作为电子邮件的附件,发送到目标电脑上,诱导受害者去打开附件来感染木马。
7、如何手工判断靶标站点是Windows/Linux?
a. 大小写检测:Windows大小写不敏感,而Liunx大小写敏感
b. PING指令:根据TTL值,Windows一般情况下>100、Linux则<100
8、无法连接服务器3389端口的几种情况?
a. 3389端口处于关闭状态
b. 远程桌面默认端口号已被修改
c. 防火墙拦截
d. 处于内网环境
e. 超过了服务器最大连接数
f. 管理员设置了权限,指定用户才能通过3389端口进行远程桌面访问
9、如何建立隐藏用户?
a. net user test$ 123456 /add [建立隐藏用户]
b. net localgroup administrators test$ /add [将隐藏用户加入管理组]
10、为什么Mysql数据库的站点,无法连接?
a. 站库分离
b. 3306端口未对外开放
c. Mysql默认端口已被修改
11、文件上传功能的检测点有哪些?
a. 客户端JavaScript检测(文件后缀名检测)
b. 服务端检测(MINE类型检测、文件后缀名、文件格式头)
12、常见的未授权访问漏洞有哪些?
a. MongoDB 未授权访问漏洞
b. Redis 未授权访问漏洞
c. Memcached 未授权访问漏洞
d. JBOSS 未授权访问漏洞
e. VNC 未授权访问漏洞
f. Docker 未授权访问漏洞
g. ZooKeeper 未授权访问漏洞
h. Rsync 未授权访问漏洞
二、技术面
接着是技术面。一面通常持续 20 - 30 分钟,面试官比较友好。面试内容包括自我介绍、sql 的报错注入原理、布尔注入原理及用到的函数、sqlmap 常用参数及 --os-shell 原理、文件上传绕过方式、实习经历和学习渗透的时间、ctf 比赛经历和得奖情况、ctf 杂项题题型、windows 和 linux 系统的一些常见命令(如查看进程、结束进程、查看文件后 100 行、查看特定后缀文件等)、哥斯拉和蚁剑、菜刀的区别、反序列化漏洞和修复方式、熟悉的语言及用其写过的脚本和使用的库、是否在 src 平台提交过漏洞及情况、xss 的类型及漏洞原理、csrf、xss 和 ssrf 的区别、Linux 中查看 IP 的命令等。
二面大约也是 30 分钟,能看到面试官。主要内容有自我介绍、对奇安信的理解、常见端口和对应服务、计算机网络知识(如 OSI 七层模型)、实习经历及渗透网站的流程、网站信息收集内容和工具插件、熟悉的漏洞类型(如文件上传绕过方式、文件包含漏洞原理、sql 注入漏洞分类)、XXE 漏洞相关问题、熟悉的语言及相关项目、习惯的系统及系统命令、平时的学习途径和之后的学习安排、考虑发展的地方等。
最后是 HR 面,涉及到对公司的了解、自身优点、职业规划等方面的问题。
三、一面内容
(一)技术问题
-
在奇安信安服岗一面中,关于 SQL 的报错注入原理,主要是由于服务器端对用户可控参数中注入了 SQL 语法,改变原有 SQL 结构。有两种情况会造成 SQL 注入:一是使用字符串拼接的方式构造 SQL 语句;二是未对用户可控参数进行严格的过滤,便把参数内容拼接到 SQL 语句中。其危害包括获取数据库信息甚至获取服务器权限等。解决方案有使用预编译处理、模糊查询的特定形式、过滤关键词以及升级有安全漏洞的框架版本等。
-
文件上传绕过方式有前端 js 验证绕过、后端黑名单常见的绕过方式、后端白名单 00 截断绕过等。此外,文件上传漏洞的原理是程序员对用户上传部分的控制不足或者处理缺陷,导致用户可以上传可执行的动态脚本文件。利用条件包括有上传功能、知道文件上传后的路径、上传后的文件可以访问和执行。文件上传检测主要分为客户端检测与服务端检测,客户端检测可轻易绕过,服务端检测方式多样,常见的上传绕过方式还有大小写双重后缀名过滤绕过等。防御措施包括服务端验证绕过防御、验证文件内容、对上传后的文件统一随机命名、上传后的目录不能执行脚本、限制特定配置文件上传、更新 php 版本等。
-
CTF 比赛经历方面,可能会被问到参加过哪些比赛、得奖情况以及杂项题题型等。
-
linux 和 windows 系统相关命令包括 windows 中查看进程的命令(如任务管理器或 tasklist)、结束进程的命令(taskkill),linux 中查看文件后 100 行命令(暂时不清楚)、查看系统中指定后缀的文件并以管理员身份运行的命令(未知)。
-
哥斯拉、蚁剑、菜刀的区别:菜刀流量特征最开始是明文传输,后来采用 base64 加密,有 “eval” 函数用于执行传递的攻击 payload,(base64_decode ( _POST [z0] 接收到的数据;蚁剑(PHP 用 base64 加密)正文中有 @ini_set ("display_errors","0"); 这段代码基本是所有 WebShell 客户端链接 PHP 类 WebShell 都有的一种代码,且蚁剑混淆加密后参数名大多以 “_0x.....=” 这种形式;哥斯拉采用 base64 加密,有发送固定代码后响应为空、执行结果为固定内容等特征。
-
反序列化漏洞是指将对象从序列化状态恢复为对象的过程中出现的安全问题。修复方式有对输入进行严格校验、避免直接响应一些 sql 异常信息、自定义异常进行响应等。
-
xss、csrf、ssrf 的区别:XSS 是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器在渲染服务器返回的 html 页面时,出现了预期值之外的脚本语句被执行;CSRF 是服务器端没有对用户提交的数据进行随机值校验,且对 http 请求包内的 refer 字段校验不严,导致攻击者可以利用用户的 Cookie 信息伪造用户请求发送至服务器;SSRF 是服务器对用户提供的可控 URL 过于信任,没有对攻击者提供的 URL 进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。
(二)经历问题
会被问到实习经历和学习渗透的时间,以及用 python 写过的脚本和使用过的库等,比如 pandas、request、re 等库。
四、二面内容
(一)技术问题
-
自我介绍后,会考查对奇安信的了解,常见端口和对应服务。
-
SSH 端口号为 22,Redis 的端口号为 6379,Mysql 端口为 3306,Oracle 端口为 1521,Sqlserver 端口为 1433。
-
询问计算机网络知识,如 OSI 七层模型。
-
OSI 七层模型包括物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。物理层主要定义物理设备如何传输数据,如机器的硬件、网卡端口、网线等;数据链路层在通信实体间建立数据链路连接,可选择二进制或 ASCII 码形式传输数据流;网络层为数据在结点之间传输创建逻辑链路,如输入网址时,网络层会找到网址对应的 IP 地址;传输层向用户提供可靠的端到端服务,屏蔽了下层数据通信的细节;应用层为应用软件提供服务,构建于 TCP 协议之上,屏蔽了网络传输相关细节。
-
涉及实习经历,网站渗透流程、信息收集内容和工具等。
-
实习经历中,渗透网站的流程一般包括信息收集、漏洞扫描、漏洞利用、权限提升等步骤。信息收集的内容包括网站的域名、IP 地址、端口开放情况、服务器类型、操作系统、中间件版本、网站目录结构、敏感文件等。用到的工具插件有 Nmap、Burp Suite、Sqlmap 等。
-
考查熟悉的漏洞类型,如文件上传绕过方式、文件包含漏洞原理、sql 注入漏洞分类等。
-
文件上传绕过方式有前端 js 验证绕过、后端黑名单常见的绕过方式、后端白名单 00 截断绕过等。文件包含漏洞的原理是程序对文件包含的处理不当,导致可以包含恶意文件。sql 注入漏洞分类有联合查询注入、报错型注入、布尔型注入、延时注入、堆叠注入等,从数据类型上有字符型、数字型,从注入位置可以分为 GET 型、POST 型、HTTP 头部、cookie 数据,从数据库来分有 Mysql、MsSQL、Oracle、Access,分三大类回显、盲注、带外。
-
了解 XXE 漏洞危害等问题。
-
XXE 漏洞是 XML 外部实体注入攻击,会引发敏感文件读取等安全问题。危害包括读取本地或远程敏感文件、执行系统命令等。
(二)习惯与学习问题
-
询问习惯的系统,以及系统相关命令。
-
习惯使用 Windows 系统,Windows 中查看系统用户的命令可以使用 net user,查看共享文件夹的命令暂不清楚。
-
了解平时的学习途径和之后的学习安排,找到自己的薄弱点。
-
平时的学习途径有在线课程、技术博客、参加 CTF 比赛等。之后的学习安排是加强对序列化、sql 和内网渗透的学习,薄弱点也在于此。
四、其他岗位面试情况参考
-
不同岗位的面试流程和问题有所不同,但都可能涉及专业知识、项目经历和个人能力等方面。
-
奇安信系统开发岗位面试会问到 C++ 多态、libevent、MySQL 事务等问题。例如在 C++ 多态方面,多态是面向对象编程的重要特性之一,通过虚函数实现。在 libevent 中,select、poll、epoll 分别有不同的特点,epoll 的效率较高,尤其是在处理大量连接时。MySQL 事务保证了数据的一致性和完整性,包括事务的 ACID 特性等。
-
Java 岗位会问到项目细节和 linux 常用命令等。比如在项目中,可能会被追问某个项目的实现原理,超出负责模块的范围也可能会被问到。Linux 常用命令方面,如 top 命令的每一列含义、kill 9 9 的含义等。
-
如系统开发岗位会问到 C++ 多态、libevent、MySQL 事务等问题;java 岗位会问到项目细节和 linux 常用命令等。
-
C++ 多态是通过虚函数实现的,允许子类对象以父类指针或引用的形式被调用,从而实现不同的行为。
-
libevent 是一个高性能的事件通知库,select、poll、epoll 分别是不同的 I/O 多路复用机制。select 有最大连接数限制,poll 解决了 select 的一些问题,但在大规模连接时效率仍不高。epoll 采用事件触发方式,效率更高,尤其在处理大量连接时表现出色。
-
MySQL 事务具有原子性、一致性、隔离性和持久性。事务可以保证一组操作要么全部成功,要么全部失败,从而保证数据的一致性。事务的隔离级别可以控制并发操作之间的相互影响,防止数据的不一致性。
五、总结与建议
1、面试过程中很多问题需要深入理解原理,不能只停留在使用层面。通过奇安信安服岗的面试可以看出,面试官在技术问题上不仅仅关注工具的使用方法,更注重对原理的理解。例如在 SQL 注入、文件上传绕过、反序列化漏洞等问题上,都要求面试者能够清晰地阐述其原理及危害,并且提出有效的修复方式。只有深入理解原理,才能在实际工作中更好地应对各种安全问题,提高解决问题的能力。
2、对自己的简历要了如指掌,写的工具和知识一定要真正掌握。在面试中,面试官会根据简历中的内容进行提问,如果对自己写的工具和知识不熟悉,很容易在回答问题时出现漏洞,给面试官留下不好的印象。因此,在准备面试时,一定要对简历中的内容进行仔细梳理,确保自己对所写的工具和知识有深入的了解和掌握。
3、准备面试时可以阅读相关书籍,如《图解 TCP/IP》《图解 http》《白帽子说 web 安全》。这些书籍涵盖了网络安全领域的基础知识和前沿技术,对于准备奇安信安服岗面试以及提升自身的专业水平都有很大的帮助。通过阅读这些书籍,可以系统地学习网络安全的相关知识,了解行业的发展趋势,为面试和未来的工作打下坚实的基础。
欢迎大家在下面评论点赞加关注,让我们一起在网安之路越走越远!!!
原文始发于微信公众号(安全君呀):分享一次奇安信安服岗面试全流程
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论