0基础入门代码审计-4 CSRF

admin 2023年9月5日13:20:15评论19 views字数 1165阅读3分53秒阅读模式

0x01 漏洞描述


CSRF 跨站请求伪造,是一种劫持其他用户进行非法请求的攻击方式,主要用于越权操作,与 XSS 相比更具有危险性。

0x02 审计要点

1、首先要熟悉框架对 CSRF 的防护方案,一般审计时可查看增删改请求重是否有 token formtoken 等关键字以及是否有对请求的 Referer 有进行校验。

2、手动测试时,如果有 token 等关键则替换 token 值为自定义值并重放请求,如果没有则替换请求Referer 头为自定义链接或置空。重放请求看是否可以成功返回数据从而判断是否存在 CSRF 漏洞。

0x03 典型漏洞代码

0基础入门代码审计-4 CSRF

这是一段密码修改的 PHP 程序,我们可以看出当 password_new password_conf 一致时,程序就会进行修改密码的操作,这时如果我们构造这样一个 URL

0基础入门代码审计-4 CSRF

URL 发送给一个该网站的用户,当他点击了这个链接后,他的密码就会自动修改为 password。在现实环境中,黑客往往会把攻击流程做得更隐秘一些,例如制作一个页面,代码如下:

0基础入门代码审计-4 CSRF

这样就可以做到隐秘得进行攻击了。

0x04 防御方案

1STPSynchronizer Token Pattern,令牌同步模式),这种防御机制是当用户发送请求时,服务器端应用将token 嵌入HTML表格中,并发送给客户端。客户端提交HTML表格,会将令牌发送到服务端,令牌的验证是由服务端执行的。令牌可以通过任何方式生成,只要确保其随机性和唯一性。这样就能够确保攻击者发送请求的时候,由于没有该令牌而无法通过验证。

2、检查Referer字段。HTTP 头中有一个 Referer 字段,这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时,一般情况下,Referer 字段应该与请求地址位于同一域名下。而如果是 CSRF 攻击传递来的请求,Referer 字段会是包含恶意攻击载荷的地址,通过这种判断能够识别出 CSRF 攻击。这种防御手段的关键点在于如何建立合适的校验机制。

3、添加校验tokenCSRF 的本质是攻击者通过欺骗用户去访问自己设置的地址,所以如果在所有用户进行敏感操作时,要求用户浏览器提供未保存在Cookie中且攻击者无法伪造的数据作为校验,那么攻击者就无法再进行 CSRF 攻击。这种方式通常是在请求时增加一个加密的字符串token,当客户端提交请求时,这个字符串token也被一并提交上去以供校验。当用户进行正常的访问时,客户端的浏览器能够正确得到并传回这个字符串token

还有很多其他方式,比如验证码机制、自定义http请求头方式、Origin字段等,但是这些方法都存在各自的问题,如友好度差、存在机制绕过的可能等,因而只是作为辅助防御方式使用。

0基础入门代码审计-4 CSRF

0基础入门代码审计-4 CSRF


点赞,转发,在看


    点击关注

    学习技术

反入侵实验室

0基础入门代码审计-4 CSRF
0基础入门代码审计-4 CSRF


原文始发于微信公众号(反入侵实验室):0基础入门代码审计-4 CSRF

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年9月5日13:20:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   0基础入门代码审计-4 CSRFhttps://cn-sec.com/archives/2006343.html

发表评论

匿名网友 填写信息