csrf自动化检测调研

https://github.com/pillarjs/understanding-csrf/blob/master/README_zh.md

CSRF

攻击者在钓鱼站点,可以通过创建一个AJAX按钮或者表单来针对你的网站创建一个请求:

复制代码
<form action="https://my.site.com/me/something-destructive" method="POST">
  <button type="submit">Click here for free money!</button>
</form>

csrf防御

  1. 只接收JSON:通过只接收JSON数据作为API的输入,可以降低CSRF攻击的风险。因为JSON数据在请求中是作为数据负载(payload)的一部分发送的,而不是在URL参数或表单数据中。这使得攻击者无法通过构造恶意URL或表单来伪造请求。

  2. 禁用CORS(Cross-Origin Resource Sharing)是一种减轻CSRF攻击的方法之一。CORS是一种机制,用于控制浏览器在跨域请求时是否允许访问资源。默认情况下,浏览器会执行同源策略,即在一个域名下的页面只能请求同一域名下的资源。但是,通过CORS机制,服务器可以发送特定的响应头,告诉浏览器允许来自其他域名的请求访问资源。建议限制跨域请求只允许使用特定的HTTP方法,如OPTIONS、HEAD和GET。这是因为这些方法通常不会对服务器端产生副作用,即不会执行对数据的修改或删除等操作。 需要注意的是,禁用CORS并不能完全阻止CSRF攻击。因为在CSRF攻击中,攻击者利用用户在已登录状态下的身份执行操作,而不是直接通过JavaScript发起请求(使用JavaScript发起AJAX请求是限制跨域的)。因此,即使禁用了CORS,攻击者仍然可以通过其他方式欺骗用户执行恶意请求。

  3. 检验referer。检验referrer头部很麻烦, 但是你可以阻止那些referrer头部不是来自你的页面的请求。

  4. 代码编写者不要让get请求具体副作用,不要让get请求可以去增删改数据库。应该确保将GET请求用于无副作用的操作,仅用于获取资源的信息。对于具有副作用的操作,应使用POST、PUT、DELETE等方法

  5. CSRF Tokens(跨站请求伪造令牌)是一种解决CSRF攻击的安全措施。以下是CSRF tokens的工作原理:

    1. 服务器向客户端发送一个令牌(token)。
    2. 客户端在提交表单时将该令牌包含在表单中。
    3. 如果该令牌不合法,服务器将拒绝该请求。

    攻击者需要通过某种方式获取你站点的CSRF令牌,他们只能使用JavaScript来实现。因此,如果你的站点不支持CORS(跨域资源共享),攻击者无法获取到CSRF令牌,从而降低了威胁。

    确保CSRF令牌无法通过AJAX访问!不要创建一个用于获取令牌的/CSRF路由,并且尤其不要在该路由上支持CORS!

因为web正在向JSON API转移,并且浏览器变得更安全,有更多的安全策略, CSRF正在变得不那么值得关注。 阻止旧的浏览器访问你的站点,并尽可能的将你的API变成JSON API, 然后你将不再需要CSRF token。

s0md3v/Bolt 自动化csrf

https://github.com/s0md3v/Bolt

https://pentesttools.net/bolt-cross-site-request-forgery-csrf-scanning-suite/

1、Crawling

Bolt 将目标网站抓取到指定的深度,并将找到的所有 HTML 表单存储在数据库中以供进一步处理。

2、Evaluating

Bolt 找出强度不够的令牌以及不受保护的表单。

3、Comparing

这一阶段的重点是检测重放攻击场景,从而检查令牌是否已发出多次。它还计算所有标记之间的平均编辑距离,以查看它们是否相似。

令牌还会与包含 250 多个哈希模式的数据库进行比较。

4、Observing

在此阶段,向单个网页发出 100 个同时请求,以查看是否为这些请求生成相同的令牌。

5、Testing

此阶段致力于主动测试CSRF保护机制。包括但不限于检查移动浏览器是否存在保护、使用自行生成的令牌提交请求以及测试令牌是否检查到一定长度。

6、Analysing

在此阶段执行各种统计检查,以查看令牌是否确实是随机的。在此阶段执行以下测试

其他maybe可以参考的项目:

https://github.com/0ang3el/EasyCSRF/blob/master/EasyCSRF.py

https://github.com/andresriancho/w3af/blob/master/w3af/plugins/audit/csrf.py

尝试分析

使用pikachu搭建环境

当测试者访问的到这个页面的时候,他就一定可以拿到一个正确的token

后面的逻辑就主要结合w3af和bolt

后续要基于的代码的话,应该就是完全基于bolt项目了

自动化检测CSRF(第二篇)

相关推荐
牢七10 小时前
Csrf4
csrf
white-persist3 天前
CSRF 漏洞全解析:从原理到实战
网络·python·安全·web安全·网络安全·系统安全·csrf
携欢6 天前
PortSwigger靶场之 CSRF where token is not tied to user session通关秘籍
前端·csrf
携欢6 天前
PortSwigger靶场之CSRF where token validation depends on request method通关秘籍
安全·web安全·csrf
携欢7 天前
POrtSwigger靶场之CSRF where token validation depends on token being present通关秘籍
前端·csrf
唐古乌梁海19 天前
Flask项目中CSRF Token实现的解决方案
python·flask·csrf
汉堡包00124 天前
【靶场练习】--DVWA第三关CSRF(跨站请求伪造)全难度分析
前端·安全·csrf
余防25 天前
CSRF跨站请求伪造
前端·安全·web安全·csrf
修炼果1 个月前
为什么使用 Redis 存储Oauth的state 参数,可有效防止 CSRF 攻击
数据库·redis·csrf
emma羊羊1 个月前
【CSRF】防御
前端·网络安全·csrf