CSRF : Cross-site request forgery  跨站请求伪造
 
所用到的工具:
Firefox浏览器及其插件     HackBar(快速构造URL)     和     Tamper Data(抓包改包)  温馨提示Tamper Data安装好后位于火狐浏览器的菜单栏-工具内。菜单栏需在浏览器窗体顶部右键选中后展示,最新版默认为隐藏状态。
 
 
 
初始信息:
DVWA默认账户     admin     密码     password
登录后先通过DVWA Security页面设置DVWA的安全等级,Low最低。若发生安全等级设置失败的情况可清理浏览器的历时记录、选中并删除cookie信息。重启浏览器后再进行尝试。
图1
正常业务流程效果及发包信息
 
LOW
使用Tamper Data抓包
图2
所发送的数据包URL
?password_new=password
&password_conf=password
&Change=Change#
 
在Tamper Data响应数据包上单击右键点击reply in  browser 重放
图3
弹出如图所示窗体  把password相关两处字段修改为test后提交。网页显示成功修改密码结果。
退出账户重新登录测试新修改的密码test可用。证明存在CSRF漏洞,可以伪造用户修改密码的请求。
 
构造CSRF页面
<html>
<head>
<meta charset="utf-8">
<title>CSRF测试</title>
</head>
<body>
<input type="hidden" name="password_new" value="password" />
<input type="hidden" name="password_conf" value="password" />
<input type="hidden" name="Change" value="Change" />
<input type="submit" value="下载美女图片" />
</form>
</body>
</html>
 
利用下载美女图片按钮引诱受害者点击^_^!  不过真实情况一般使用frame嵌套静默执行让受害者察觉不到页面跳转
点击下载图片按钮后即发送修改密码请求包并跳转至密码修改成功页面。
 
图4
 
medium.
 
图5
尝试使用low等级所构造的页面已无效。抓包对比发现正常报文和CSRF页面报文区别在于referer参数。
使用Tamper Data的改包功能拦截修改CSRF测试页面所生产的请求包,发现referer参数中包含被攻击站点的域名(此处为IP地址)即可。
我们在用于攻击的站点127.0.0.1下新建一个目录192.168.3.88使得受害者浏览我们构造的CSRF页面时发出的请求包所包含的referer信息内包含192.168.3.88字段,以使得被攻击服务器接受我们的密码修改请求。
 
图6
 
 
high.
发现low等级和medium等级构造的页面都失效了,使用Tamper Data抓包发现正常的请求包中出现了token字段。
我们构造的页面无法获取到token字段信息。当同一网站存在XSS漏洞是存在利用XSS漏洞来伪造请求的可能。后续将进行补充。
 
impossible.
安全的等级,这一等级修改密码需要填写当前用户正在使用的密码。彻底堵住了漏洞。
另外可以使用验证码,不过会降低用户体验。
 
 
参考资料:邪恶的CSRF
 

CSRF-DVWA_1.9-笔记的更多相关文章

  1. CSRF漏洞实战靶场笔记

    记录下自己写的CSRF漏洞靶场的write up,包括了大部分的CSRF实战场景,做个笔记. 0x01 无防护GET类型csrf(伪造添加成员请求) 这一关没有任何csrf访问措施 首先我们登录tes ...

  2. DVWA笔记之三:CSRF

    CSRF与XSS不同,它称为跨站请求伪造,它是利用其他页面的恶意脚本来加载访问或操作存在CSRF的漏洞的可信网站. 1.Low级别 核心代码如下: <?php  if( isset( $_GET ...

  3. csrf学习笔记

    CSRF全称Cross Site Request Forgery,即跨站点请求伪造.我们知道,攻击时常常伴随着各种各样的请求,而攻击的发生也是由各种请求造成的. CSRF攻击能够达到的目的是使受害者发 ...

  4. 学习笔记之csrf

    CBV 添加 csrf 第一种: 指定方法方面添加 装饰器 @memethod_decorator(xxx) 第二种 全部添加: 注意 在类名前: @method_decorator(xxx,name ...

  5. Python Django框架笔记(四):数据分页和CSRF跨站点请求伪造

    (一)数据分页  可以参考  https://docs.djangoproject.com/en/2.0/topics/pagination/ 模板:如果只要显示 1.2.3.4.5.6....的话, ...

  6. PHP代码审计笔记--CSRF漏洞

    0x01 前言 CSRF(Cross-site request forgery)跨站请求伪造.攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻 ...

  7. 信息安全学习笔记--CSRF

      一.CSRF简介   CSRF(Cross-site request forgery)跨站请求伪造,也被称为“one click attack”或者“session riding”,通常缩写为CS ...

  8. CSRF学习笔记之CSRF的防御【00x4】

    referer 验证 根据HTTP协议,在http请求头中包含一个referer的字段,这个字段记录了该http请求的原地址.通常情况下,执行转账操作的post请求www.bank.com/trans ...

  9. CSRF学习笔记之CSRF的攻击与防御以及审计【00x3】

    Hight.php完整代码如下: <?php if (isset($_GET['Change'])) { // Turn requests into variables $pass_curr = ...

  10. CSRF学习笔记之CSRF的攻击与防御以及审计【00x1 】

    +++++++++++++++++++++++++++ + 00x1 实现简单的攻击 + 00x2 代码审计漏洞的源头 +++++++++++++++++++++++++++ 00x1 简单的csrf ...

随机推荐

  1. JS实现表单全选以及取消全选实例

    实现效果: 全选按钮:点击全选按钮所有的小按钮都会被选中:点掉全选按钮,所有按钮取消选中: 小按钮:只有全部被选中,全选按钮才会被选中 思路分析: 1.全选和取消全选做法:让下面所有复选框的 chec ...

  2. SharpCompress 压缩解压

    public class SharpCompressHelper { public static void UnRAR(string srcUrl,string targetUrl) { using ...

  3. select和FD_SET等

    转自:http://blog.csdn.net/cstarbl/article/details/7645298 select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供sele ...

  4. fiddler(二)、配置抓取https协议

    打开fiddler,用火狐或者谷歌浏览器访问https协议的网页,如:https://www.baidu.com/,会报不安全的连接错误 这时就需要我们做一些配置,才能抓取https协议的网页. 首先 ...

  5. UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)

    题目链接 http://uoj.ac/contest/47/problem/455 题解 模拟费用流,一个非常神奇的东西. 本题即为WC2019 laofu的讲课中的Problem 8,经典的老鼠进洞 ...

  6. spring-boot 中实现标准 redis 分布式锁

    一,前言 redis 现在已经成为系统缓存的必备组件,针对缓存读取更新操作,通常我们希望当缓存过期之后能够只有一个请求去更新缓存,其它请求依然使用旧的数据.这就需要用到锁,因为应用服务多数以集群方式部 ...

  7. 第十四周学习总结&课程实验报告

    课程总结 一.相关概念 1.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统 ...

  8. 三、Linux下mysql的完整安装

    参考资料:http://www.cnblogs.com/fly1988happy/archive/2011/11/21/2257682.html http://www.cnblogs.com/xion ...

  9. Moodle LMS 开源教育系统

    http://docs.websoft9.com/xdocs/moodle-image-guide/   帮助文档 示例图:没有细研究

  10. 如何消除 com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server

    在application.properties中添加以下两句话: eureka.client.register-with-eureka=falseeureka.client.fetch-registr ...