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(第二篇)

相关推荐
烟雨666_java1 天前
csrf令牌
android·前端·csrf
蜗牛学苑_武汉3 天前
CSRF初级靶场
android·前端·csrf
网安_秋刀鱼9 天前
CSRF防范及绕过
前端·安全·web安全·网络安全·csrf·1024程序员节
ac-er88889 天前
PHP的 CSRF、XSS 攻击和防范
php·xss·csrf
小R资源15 天前
Django CSRF Token缺失或不正确
okhttp·django·csrf
极客先躯18 天前
高级java每日一道面试题-2024年10月17日-Web篇-常见的web攻击有哪些?
java·ddos·xss·csrf·暴力破解·会话劫持·文件上传漏洞攻击
前端李易安22 天前
什么是CSRF 攻击
前端·csrf
l1x1n022 天前
DVWA CSRF 漏洞实践报告
网络·安全·web安全·csrf
前端李易安24 天前
设置HTTP-only标志防御CSRF攻击,前后端如何通信
网络协议·http·csrf
Dovir多多1 个月前
渗透测试入门学习——使用python脚本自动跟踪csrf_token实现对网站登录界面的暴力破解
前端·python·安全·web安全·网络安全·php·csrf