前言:
最近跟我的一些读者交流,有一位读者的经历让我记忆深刻:
“有一次和大学同学聚会,和几个在 BAT 的同学聊了聊技术,发现自己在创业公司这几年,完全是吃老本的状态,没有什么机会精进技术,同样是工作了三年,和同学的差距越来越大”
我继续问他,他说真正让他受打击的是这个月的一次面试。
“面的是一个大厂,面试官问了很多问题,一大半的问题我都是一知半解,回答上来问题也是特没底。
大概回顾了这场面试:上来先是问了网络基础知识,TCP/IP 模型、对等模型、IP 协议等等,这部分我还算准备得充分。第二部分开始复杂了,主要是 Web 应用程序技术、安全工具-信息收集、渗透测试的问题,像是 SQL 注入、漏洞扫描,验证码安全,业务安全问题?我之前工作上经历的少,加上自己技术储备浅薄,到这部分时我就感觉自己快凉了。面试到最后,问了的,当时已经懵了,我只记得一个问题:你知道怎么挖漏洞吗?我。。。。“
面完后他说,觉得自己在技术上欠了很多债,最惨的是,在这之前他根本不知道。
听了这位读者的经历,于是有了今天这篇文章。很多工作了 1-3 年的安全人,想够一够 3w 月薪的岗位,但在底层技术上却有很大的问题:
毕业几年,表面上用过很多技术,但都没能深入学习,一年的工作经验,干了好几年。结果就是遇到实际问题时无从下手,最终还是走着普通工程师的道路,和高手的距离越来越远。
都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。
技术发展得这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到安全架构师/技术专家?我总结了这 8 大能力——
- 熟练掌握各种渗透测试工具并且对其原理有深入了解(不仅限于 Burpsuite、sqlmap、appscan、AWVS、nmap、MSF,cobalt strike 等等)
- 至少掌握一门开发语言,操作语言不限 C/C 、Golang、Python、Java 都可,要求至少能上手写代码
- 熟练掌握常见的攻防技术以及对相关漏洞( web 或二进制)的原理有深入的理解
- 具有丰富的实战经验可独立完成渗透测试工作
- 能从防御者或者运维人员的角度思考攻防问题,对后渗透有深入了解者更佳
- 对安全有浓厚的兴趣和较强的独立钻研能力,有良好的团队精神
- 具备渗透大型目标的经验,特别是擅长内网渗透这一块的。
- 熟悉常见 Windows,Linux 安全机制,具备一定的安全开发能力以及 problem solving 能力
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动地抽出 10 小时用来学习,不出半年,你就能看出变化。
我这里有一份网络安全经典解析视频和滴滴、美团等大厂的面试真题,里面有很多渗透测试面试的必考点、高频点、加薪点,看看大厂的渗透测试工程师都有哪些要求,知己知彼才能百战不殆。想要的同学可以关注 转发一波 私信【资料】即可免费获取
【资料获取】
如果没有很好的自律性,没人指导,盲目自学大概率就是浪费时间精力,因为不仅效率低、学习没有体系,学完了也没办法保证就业
那么要怎么要才能系统学习 然后吊打面试官呢?
下面我给大家整理一些渗透测试/网络安全工程师大厂热门面试题
Web 安全主要包括 HTTP 协议、注入漏洞、XSS 漏洞、SSRF 漏洞、CSRF 漏洞、文件处理漏洞、访问控制漏洞、会话管理漏洞等。
1.1 HTTP 协议
http 是一个简单的请求-响应协议,它通常运行在 TCP 之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以 ASCII 码形式给出;而消息内容则具有一个类似 MIME 的格式。
学习要点:
请求方法:
1.2 注入漏洞
- OPTIONS, PUT, DELETE,和 TRACE 方法的基本概念
- HTTP 请求的基本方法和产生的请求结果
- HTTP 状态码的规范
- HTTP 状态码的作用
- 常见的 HTTP 状态码
- HTTP 状态码 2**,3**,4**,5** 代表的含义
- 用计算机语言获取 HTTP 状态码的方法
- GET 请求的标准格式
- POST 请求提交表单,上传文件的方法
- HEAD 请求与 GET 请求的区别
- 常见的 HTTP 响应头
- HTTP 响应头的作用
- HTTP 响应头的名称
- HTTP 响应头的格式
- URL 的基本概念
- URL 的结构
- URL 编码格式
1.2.1 SQL 注入
SQL 注入即是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
学习要点
- SQL 注入漏洞原理
- SQL 注入漏洞对于数据安全的影响
- SQL 注入漏洞的方法
- 常见数据库的 SQL 查询语法
- MSSQL,MYSQL,ORACLE 数据库的注入方法
- SQL 注入漏洞的类型
- SQL 注入漏洞修复和防范方法
- 一些 SQL 注入漏洞检测工具的使用方法
1.2.2 XML 注入
XXE 漏洞全称 XML External Entity Injection 即 xml 外部实体注入漏洞,XXE 漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起 dos 攻击等危害。xxe 漏洞触发的点往往是可以上传 xml 文件的位置,没有对上传的 xml 文件进行过滤,导致可上传恶意 xml 文件。
学习要点
- XML 注入漏洞产生的原因
- XML 注入漏洞的利用方式
- 如何修复 XML 注入漏洞
1.2.3 代码注入
即服务器通过 PHP 的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严格,从而可以去包含一个恶意文件,攻击者就可以远程构造一个特定的恶意文件达到攻击目的。
学习要点
- 远程文件包含漏洞所用到的函数
- 远程文件包含漏洞的利用方式
- 远程文件包含漏洞代码审计方法
- 修复远程文件包含漏洞的方法
1.2.4 命令执行
命令执行漏洞是指应用有时需要调用一些执行系统命令的函数,如:system()、exec()、shell_exec()、eval()、passthru(),代码未对用户可控参数做过滤,当用户能控制这些函数中的参数时,就可以将恶意系统命令拼接到正常命令中,从而造成命令执行攻击。
学习要点
1.3 跨站脚本漏洞(XSS)
- 什么是命令注入漏洞
- 命令注入漏洞对系统安全产生的危害
- 脚本语言中可以执行系统命令的函数
- 第三方组件存在的代码执行漏洞如 struts2,weblogic 等
- 命令注入漏洞的修复方法
1.3.1 存储型 XSS
攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。这就意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型 XSS 的危害会更大。因为存储型 XSS 的代码存在于网页的代码中,可以说是永久性的。
学习要点
- 存储式 XSS 漏洞对安全的影响
- 存储式 XSS 漏洞的特征和检测方法
- 存储式 XSS 漏洞的危害
- 修复存储式 XSS 漏洞的方式
- 常用 WEB 漏洞扫描工具对存储式 XSS 漏洞扫描方法
1.3.2 反射行 XSS
反射型 XSS 也被称为非持久性 XSS。当用户访问一个带有 XSS 代码的 URL 请求时,服务器端接收数据后处理,然后把带有 XSS 代码的数据发送到浏览器,浏览器解析这段带有 XSS 代码的数据后,最终造成 XSS 漏洞。这个过程就像一次反射,故称为反射型 XSS 漏洞。
学习要点
- 反射诗 XSS 漏洞与存储式 XSS 漏洞的区别
- 反射式 XSS 漏洞的触发形式
- 反射式 XSS 漏洞利用的方式
- 反射式 XSS 漏洞检测和修复方法
1.3.3DOM 型 XSS
DOM—based XSS 漏洞是基于文档对象模型 Document Objeet Model,DOM)的一种漏洞。
学习要点
1.4 请求伪造漏洞
- DOM 式 XSS 漏洞的触发形式
- DOM 式 XSS 漏洞的检测方法
- DOM 式 XSS 漏洞的修复方法
1.4.1 服务器请求伪造 SSRF
SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF 是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)。
学习要点
- 什么是 SSRF 漏洞
- 利用 SSRF 漏洞进行端口探测的方法
- SSRF 漏洞的检测方法
- SSRF 漏洞的修复方法
1.4.2 跨站请求伪造 CSRF
跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种限制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法。跟跨网站脚本(XSS)相比,XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。
学习要点
1.5 文件处理漏洞
- CSRF 漏洞产生的原因
- CSRF 漏洞的原理
- CSRF 漏洞与 XSS 漏洞的区别
- CSRF 漏洞的挖掘和修复方
1.5.1 任意文件上传
文件上传包括了上传头像,上传相册,上传附件,添加新闻图片,自定义主题背景,新闻投稿等等,开发者由于对安全意识不足,或者编写代码时对上传文件的合法校验存在缺陷,导致上传漏洞的产生或 Web 容器漏洞、CGI、配置不当等等
学习要点
- 任意文件上传漏洞产生的原因
- 服务端语言对上传文件类型限制方法
- 任意文件上传漏洞的危害
- 上传漏洞的检测思路和修复方法
1.5.2 任意文件下载
许多网站开放下载文件功能,由于下载功能代码对下载文件类型、目录未做限制或限制不当,导致攻击者可下载服务器任意文件。
学习要点
1.6 访问控制漏洞
- 什么是文件下载漏洞
- 通过文件下载漏洞读取服务端文件的方法
- 能够通过代码审计和测试找到文件下载漏洞
- 修复文件下载漏洞的方法
1.6.1 水平越权
水平越权访问是一种“基于数据的访问控制”设计缺陷引起的漏洞。由于服务器端在接收到请求数据进行操作时没有判断数据的所属人/所属部门而导致的越权数据访问漏洞。
学习要点
- 水平越权漏洞的基本概念
- 水平越权漏洞的形式
- 水平越权漏洞对网站安全的影响
- 水平越权漏洞的测试和修复方法
1.6.2 垂直越权
垂直越权是一种“基于 URL 的访问控制”设计缺陷引起的漏洞,又叫做权限提升攻击。由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的 URL 或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。
学习要点
- 垂直越权漏洞的基本概念
- 垂直越权漏洞的种类和形式
- 对网站安全的影响
- 越权漏洞的测试方法和修复
1.6.3 未授权访问
未授权访问漏洞可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。
学习要点
- 如何去挖掘未授权访问
- 未授权访问的危害
- 未授权访问的修复方法
1.6.4 目录遍历
目录遍历漏洞原理比较简单,就是程序在实现上没有充分过滤用户输入的../之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。这里的目录跳转符可以是../,也可是../的 ASCII 编码或者是 unicode 编码等。
学习要点
1.7 会话管理漏洞
- 目录遍历的成因以及概率
- 如何探索目录遍历
- 目录遍历的修复方法
1.7.1 会话劫持
例如你 Telnet 到某台主机,这就是一次 Telnet 会话;你浏览某个网站,这就是一次 HTTP 会话。而会话劫持(Session Hijack),就是结合了嗅探以及欺骗技术在内的攻击手段。例如,在一次正常的会话过程当中,攻击者作为第三方参与到其中,他可以在正常数据包中插入恶意数据,也可以在双方的会话当中进行监听,甚至可以是代替某一方主机接管会话。
学习要点
- 什么是会话劫持漏洞
- 会话劫持漏洞的危害
- Session 机制
- HttpOnly 的设置方法
- 会话劫持漏洞防御方法
1.7.2 会话固定
会话固定攻击(session fixation attack)是利用应用系统在服务器的会话 ID 固定不变机制,借助他人用相同的会话 ID 获取认证和授权,然后利用该会话 ID 劫持他人的会话以成功冒充他人,造成会话固定攻击。
学习要点
高清系统学习路线图领取 总结
- 什么是会话固定漏洞
- 会话固定漏洞的检测方法
- 会话固定漏洞的形成的原因
- 会话固定漏洞的风险
- 会话固定漏洞的防范方法
只有充分地准备好了面试,才可以更有自信地吊打面试官,每方面的知识都是必须的,不能缺乏的。
【2021热门大厂面经】,