🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
渗透方向的岗位,涉及到的知识点是很广泛的。
这里我总结了整个一系列的面试题,可能没有覆盖到全部的知识面,但是应该是比较全面的,本文主讲解web漏洞CSRF方向的面试题。
如果整个系列的问题搞懂了大部分,那找个网安方向的工作基本上没什么问题了。
当然了,可能也不是说这些问题都会被问到,但这些题目都是和网安岗位相契合的。
系列文章
[ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(一)SQL注入相关面试题
[ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(二)XSS注入相关面试题
文章目录
- 系列文章
- 1、CSRF 原理
- 2、CSRF 攻击要点
- 3、CSRF 有什么局限性(前提条件)
- 4、常见攻击手段:
- 1、CSRF作用范围内的威胁:
- 2.CSRF作用范围外的威胁(联合攻击):
- 5、如何防御 CSRF
- 6、token 和 referer 做横向对比,谁安全等级高?
- 7、对 referer 的验证,从什么角度去做?如果做,怎么杜绝问题
- 8、针对 token,对 token 测试会注意哪方面内容,会对 token 的哪方面进行测试?
- 9、如何确定一个web系统是否存在CSRF漏洞?
- 1.关键信息是否容易被伪造
- 2.确认凭证的有效期
- 10、Token是如何让防止CSRF的
- 11、CSRF漏洞检测
- 1、手工检测
- 2、工具检测
- 3、CSRFTester工具
- 12、CSRF 与 XSS 的区别
1、CSRF 原理
CSRF 是跨站请求伪造攻击,由客户端发起,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。
CSRF攻击建立在浏览器和web服务器的会话之中,并且能欺骗用户访问url。发起的目标是通过伪造的用户请求,该请求不是用户想发出去的请求,服务器或服务来说,该请求是完全合法的请求,但却完成了攻击者的期望操作。
2、CSRF 攻击要点
1、服务器没有对操作来源进行判断,如IP,Referer等
2、受害者处于登录状态,但是攻击者无法拿到Cookie
3、攻击者需要找到一条可以修改或获取敏感信息的请求
3、CSRF 有什么局限性(前提条件)
1、目标站点不能有检查referer头的操作,或许被攻击者的浏览器允许referer欺骗。
2、攻击者必须在目标站点找到啊一个表单的提交入口,或者有类似的URL(例如用来转钱,修改受害者邮箱或者密码)
3、攻击者必须觉得所有的表单或者URL参数中的正确的值;如果有秘密验证值或者ID,攻击者没有猜对,攻击很可能不成功。
4、攻击者必须诱使受害者访问有恶意代码的页面,并且此时受害者已经登录到目标站点。
4、常见攻击手段:
1、CSRF作用范围内的威胁:
a.论坛的交互区。如用户提交的一些图像,url指向一个恶意网址,很可能导致CSRF攻击。且这些请求无法自定义HTTP Header,必须使用GET方法。
b.web所有者的攻击。指拥有自己独立域名,HTTPS证书和web服务器的个人,一旦访问其所在域名,攻击者可同时用GET和POST方法发起跨站请求,即为CSRF攻击。
c.网络攻击者。指能控制用户网络连接的恶意代理,如通过控制无限路由或DNS服务器控制用户的网络连接,该攻击需要更多的准备及资源。
2.CSRF作用范围外的威胁(联合攻击):
a.跨站脚本(XSS)。如果网站本身存在XSS漏洞,那么CSRF的防御将毫无意义,因为用户会话的完整性和保密性已经告破。
b.恶意软件。如果用户在攻击者电脑或者移动端设备上运行着恶意软件,那么攻击者可以控制用户的浏览器,向那些可信的网站注入脚本,那么所有基于浏览器的防御策略都会失效。
c.证书错误。如果用户的HTTPS证书错误时,还继续点击访问,那么HTTPS能提供的安全防护措施毫无意义,也包括CSRF。
d.钓鱼。访问钓鱼网站时,用户输入的个人信息,很可能导致钓鱼攻击。
5、如何防御 CSRF
1、避免在URL中明文显示特定操作的参数内容;
2、使用同步令牌(Synchronizer Token),检查客户端请求是否包含令牌及其有效性;(常用的做法,并且保证每次token的值完全随机且每次都不同)[增加token验证]
3、检查Referer Header,拒绝来自非本网站的直接URL请求;[通过http头中referer字段来限制元页面)
4、不要在客户端保存敏感信息(比如身份认证信息);
5、设置会话过期机制,比如20分钟无操作,直接登录超时退出;[破坏登录态]
6、敏感信息的修改时需要对身份进行二次确认,比如修改账号时,需要判断旧密码;[二次验证]
7、敏感信息的修改使用post而不是get;[POST比GET安全]
8、避免交叉漏洞,如XSS等;
9、禁止跨域访问;[访问控制安全管理]
10、在响应中设置CSP(Content-Security-Policy)内容安全策略;
11、在 HTTP 头中自定义属性并验证。
6、token 和 referer 做横向对比,谁安全等级高?
token 安全等级更高,因为并不是任何服务器都可以取得 referer,如果从 HTTPS 跳到 HTTP,也不会发送 referer。并且 FLASH 一些版本中可以自定义 referer。但是 token 的话,要保证其足够随机且不 可泄露。(不可预测性原则)
7、对 referer 的验证,从什么角度去做?如果做,怎么杜绝问题
对 header 中的 referer 的验证,一个是空 referer,一个是 referer 过滤或者检测不完善。为了杜绝这种问题,在验证的白名单中,正则规则应当写完善。
8、针对 token,对 token 测试会注意哪方面内容,会对 token 的哪方面进行测试?
针对 token 的攻击,一是对它本身的攻击,重放测试一次性、分析加密规则、校验方式是否正确等,二是结合信息泄露漏洞对它的获取,结合着发起组合攻击信息泄露有可能是缓存、日志、get,也有可能是利用跨站很多跳转登录的都依赖 token,有一个跳转漏洞加反射型跨站就可以组合成登录劫持了另外也可以结合着其它业务来描述token 的安全性及设计不好怎么被绕过比如抢红包业务之类的。
9、如何确定一个web系统是否存在CSRF漏洞?
我们判断一个网站是否存在CSRF漏洞,其实就是判断对其关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。
1.关键信息是否容易被伪造
对目标网站增删改的地方进行标记,观察逻辑(抓包),判断请求是否可以被伪造
如:修改账号密码是时,需要进行旧密码的验证,就导致请求容易被伪造(自己注册账号修改);
如:对于敏感信息没有使用安全的token验证,导致请求容易被伪造(抓包看有没有token)(token是随机的,较长的字符串,每次验证都会变化);
2.确认凭证的有效期
虽然退出或者了浏览器,但cookie任然有效,或者session没有及时过期,导致CSRF攻击变简单,因为CSRF有一个条件是登录态。(这个问题会提高CSRF被利用的概率)
10、Token是如何让防止CSRF的
1、CSRF的主要问题实际上是敏感信息的操作,请求容易被伪造。
2、token是长度足够、足够随机的一个随机码,是不容易被伪造的。
3、Token使用一次失效,重新生成,很难伪造。
4、后台每次都会对这个随机码(token)进行验证,每次请求这个页面的时候(修改个人信息等敏感信息)都需要验证token。
11、CSRF漏洞检测
1、手工检测
检测CSRF漏洞是一项比较繁琐的工作,最简单的方法就是抓取一个正常请求的数据包,去掉Referer字段后再重新提交,如果该提交还有效,那么基本上可以确定存在CSRF漏洞。
2、工具检测
随着对CSRF漏洞研究的不断深入,不断涌现出一些专门针对CSRF漏洞进行检测的工具,如CSRFTester,CSRF Request Builder等。
3、CSRFTester工具
以CSRFTester工具为例,CSRF漏洞检测工具的测试原理如下:使用CSRFTester进行测试时,首先需要抓取我们在浏览器中访问过的所有链接以及所有的表单等信息,然后通过在CSRFTester中修改相应的表单等信息,重新提交,这相当于一次伪造客户端请求。如果修改后的测试请求成功被网站服务器接受,则说明存在CSRF漏洞,当然此款工具也可以被用来进行CSRF攻击。
12、CSRF 与 XSS 的区别
CSRF和XSS都是客户端攻击,它们滥用同源策略,利用web应用程序和不知情的用户之间的信任关系。但是,XSS 和 CSRF 攻击之间存在一些根本差异,包括:
1、在XSS攻击中,恶意代码存储在站点中;而在CSRF攻击中,恶意代码存储在受害用户访问的第三方站点中。
2、XSS攻击遵循双向攻击模式,允许攻击者执行恶意脚本、访问响应,并将后续敏感数据发送到攻击者选择的目的地;CSRF是一种单向攻击机制,这意味着攻击者只能发起HTTP请求,但不能检索已发起请求的响应。
3、在XSS攻击中,只要用户登录,就可以存储和交付有效载荷;而CSRF攻击则需要,CSRF攻击要求经过身份验证的用户处于活动会话中。
4、XSS攻击提供执行恶意脚本来执行攻击者所选择的任何活动,从而扩大了攻击的范围;相反,CSRF攻击的范围有限,仅限于用户可以执行的操作,例如点击恶意链接或访问黑客的网站。