CSRF跨站请求伪造总结

CSRF

什么是CSRF?

CSRF被称为跨站请求伪造,它利用用户已登录的身份,在用户毫不知情的情况下,以用户的名义完成非法操作。

跟跨站脚本攻击(XSS)相比,XSS利用的是用户对指定网站的信任,

跨站请求伪造(CSRF)利用的是网站对用户(网页浏览器)的信任。

原理

image-20230720205630759

image-20230720222736947

上图中网站 A为存在CSRF漏洞的网站,网站B为攻击者构建的恶意网站,User 为网站A网站的合法用户。CSRF攻击攻击原理及过程如下:

1、 用户user打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A

2、在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A

3、用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B

4、网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A

5、浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。

6、这就是网站B,在用户C不知情的情况下,伪造成A网站受信任的用户C去操作一些事情,但是A网站不知道操作这些事情的C是不是本人在操作。即利用了网站对用户浏览器的信任。

简单的来说,如果要利用CSRF攻击。

需要满足两个条件:

(1)受害者登录信任的网站A,并且生成cookie。

(2)在登录状态下,且cookie有效下访问攻击者网站B。

特点及危害

CSRF的特点

  1. 攻击一般发起在第三方网站,而不是被攻击的网站。被攻击的网站无法防止攻击发生。
  2. 攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作;而不是直接窃取数据。整个过程攻击者并不能获取到受害者的登录凭证,仅仅是“冒用”。
  3. 跨站请求可以用各种方式:图片URL、超链接、CORS、Form提交等等。部分请求方式可以直接嵌入在第三方论坛、文章中,难以进行追踪。
  4. CSRF通常是跨域的,因为外域通常更容易被攻击者掌控。但是如果本域下有容易被利用的功能,比如可以发图和链接的论坛和评论区,攻击可以直接在本域下进行,而且这种攻击更加危险。

CSRF的危害

  1. 发送邮件
  2. 修改账户信息
  3. 资金转账
  4. 盗取用户隐私数据
  5. 网站被上传网马
  6. 作为其他攻击方式的辅助攻击(比如xss)
  7. 传播CSRF蠕虫(见下文中的YouTube CSRF漏洞)
  8. 等等

防护

1、同源检测

也就是我们常说的referer。

通过referer检测该请求是否为同一个IP来的。

但是这种方法很容易被绕过或者伪造。

2、使用随机token

CSRF的一个特征是,攻击者无法直接窃取到用户的信息(Cookie,Header,网站内容等),仅仅是冒用Cookie中的信息。

而CSRF攻击之所以能够成功,是因为服务器误把攻击者发送的请求当成了用户自己的请求。那么我们可以要求所有的用户请求都携带一个CSRF攻击者无法获取到的Token。服务器通过校验请求是否携带正确的Token,来把正常的请求和攻击的请求区分开,也可以防范CSRF的攻击。

攻击分类

Get型

这种类型的CSRF一般是由于程序员安全意识不强造成的。GET类型的CSRF利用非常简单,只需要一个HTTP请求,所以,一般会这样利用:

<img src=http://example.cn/csrf.php?xx=11 />

在访问含有这个img的页面后,浏览器会自动向

http://example.cn/csrf.php?xx=11

发出一次HTTP请求。example.cn就会收到包含受害者登录信息的一次跨域请求。所以,如果将该网址替换为存在GET型CSRF的地址,就能完成攻击了。

Post型

这种类型的CSRF危害没有GET型的大,利用起来通常使用的是一个自动提交的表单,如:

<form action=http://example.cn/csrf.php method=POST>
<input type="text" name="xx" value="11" />
</form>
<script> document.forms[0].submit(); </script>

访问该页面后,表单会自动提交,相当于模拟用户完成了一次POST操作。

POST类型的攻击通常比GET要求更加严格一点,但仍并不复杂。任何个人网站、博客,被黑客上传页面的网站都有可能是发起攻击的来源,后端接口不能将安全寄托在仅允许POST上面。

链接类型

链接类型的CSRF并不常见,比起其他两种用户打开页面就中招的情况,这种需要用户点击链接才会触发。这种类型通常是在论坛中发布的图片中嵌入恶意链接,或者以广告的形式诱导用户中招,攻击者通常会以比较夸张的词语诱骗用户点击,例如:

 <a href=" http://example.cn/csrf.php?xx=11" taget="_hacker">
      百万福利,点击就送!!
 <a/>

由于之前用户登录了信任的网站A,并且保存登录状态,只要用户主动访问上面的这个PHP页面,则表示攻击成功。

CSRF探测

利用burp suite,通过抓取数据包,修改相应表单信息,重新提交,伪造客户端请求,请求成功则说明存在csrf漏洞。

1、 配置浏览器代理。Burp的默认代理是127.0.0.1:8080

2、 抓取有可能存在csrf的页面(个人中心信息修改等等),右击选中的链接,选择Engagement tools—->Generate CSRF POC选项

3、 在弹出的CSRF Poc generater页面,点击”Test in browser—>Copy”,复制生成的URL,打开刚才访问过目标网站的浏览器(注意不能关闭原来登录网站的页面,此时也不能关闭代理),新建一个页面,粘贴刚才复制的URL,访问.

或者

把HTML写到自己服务器的phpstudy环境下,然后命名index.php,然后去访问自己的服务器ip地址,看看个人中心的信息是否被修改。

4、如果信息被修改,那么就存在csrf漏洞。但是这个HTML表单有一个不好的地方就是,需要点击一下。我们可以修改代码,让其不需要点击,即可直接访问我们的服务器。

image-20230720225312665

ps:测试csrf漏洞要在个人中心或者能够修改,增加的地方测试,如果没有修改的地方,那么就算存在csrf漏洞也是不行的。

参考文章

https://www.kancloud.cn/buxiaju/wangluoshentoujichu/2068695

一位不知名大佬在看云写的文章。

文章中还有一些POC利用,绕过没有参考,后续再学习。

内容概要:本文研究了一种基于短时傅里叶变换(STFT)结合卷积神经网络(CNN)与残差网络(ResNet)的故障诊断方法,并提供了Matlab代码实现。该方法首先利用STFT将一维时域振动信号转换为二维时频图,以直观呈现信号的频率随时间变化特征;随后构建CNN-ResNet深度学习模型,通过卷积层自动提取故障相关的深层特征,并利用ResNet的残差结构缓解深层网络训练中的梯度消失问题,提升模型收敛速度与诊断精度。整个流程实现了端到端的故障识别,适用于轴承、齿轮箱等机械设备的智能故障诊断。; 适合人群:具备一定信号处理基础和Matlab编程能力,从事机械故障诊断基于短时傅里叶变换(STFT)结合卷积神经网络(CNN)和残差网络(ResNet)的故障诊断研究(Matlab代码实现)、工业自动化或智能制造方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于旋转机械系统的状态监测与早期故障预警;②用于学术研究中对比不同深度学习模型在故障诊断中的性能差异;③作为智能运维系统的核心算法模块,提升设备维护效率与可靠性。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,深入理解STFT时频分析原理与CNN-ResNet网络架构设计,同时可尝试在公开数据集(如CWRU轴承数据集)上验证模型效果,并进一步探索其他时频分析方法与网络结构的融合优化。
【源码免费下载链接】:https://renmaiwang.cn/s/h82is Sentinel是Redis的一个关键组件,主要提供稳定性方案以保证集群的高可用性(HA)。在Redis集群中,Sentinel负责监控主节点和从节点的状态,当主节点出现故障时,它会自动启动故障转移机制。具体来说,在检测到主节点故障后,Sentinel会将一个从节点提升为主节点,并指导其他从节点重新配置为新的辅助角色。这种机制确保即使在主节点出现问题的情况下,服务仍能持续运行,从而显著提升了系统的可靠性。对于Redis集群的稳定运行而言,集群配置文件至关重要,因为它包含了Sentinel执行监控、故障判定和转移操作所依据的核心规则。 以下是对Redis Sentinel集群配置文件的关键知识点进行了详细说明: 1. **基础设置项**: - `port`:指定每个Sentinel实例监听的具体端口号。 - `bind`:定义Sentinel的监听IP地址,允许多个地址选择。 - `sentinel monitor`:配置主节点监控规则,格式为`sentinel monitor <master-name> <ip> <port> <quorum>`。其中,`master-name`为主节点别名,`ip`和`port`为主节点的IP及端口号,而`quorum`表示系统需要达到多少个Sentinel同意主节点出现故障才会启动转移。 2. **故障判定机制**: - `quorum`:决定系统在何种情况下触发故障转移。通常设置为总Sentinel数量的大头。 - `down-after-milliseconds`:设定主节点失联的时间阈值,超过此时间将视为节点失效。 3. **故障转移操作**: - `sentinel平行查询安全因子`:(`sentinel parallel-syncs`) 表示在执
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值