DVWA-CSRF学习笔记

一、CSRF(跨站请求伪造)

CSRF(跨站请求伪造),是指利用受害者尚未失效的身份认证信息(cookie、session会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害人的身份向服务器发送请求,从而完成非法操作(如转账、改密等)。

二、CSRF攻击原理图

  

三、CSRF与CSS的区别

CSRF属于业务逻辑漏洞,服务器信任经过身份认证的用户

XSS属于技术漏洞,客户信任服务器

四、CSRF漏洞分析

1、漏洞利用前提:用户必须登录、黑客懂得一些发包的请求,服务器端是不会有二次认证的,被害者是不知情的

将DVWA的级别设置为low

1.1查看源代码,首先获取输入的两个密码然后判断两个值是否相等,如果相等则对$pass_new变量进行调用mysql_real_escape_string函数来进行字符串的过滤(防御SQL注入),再调用md5()函数对输入的密码进行MD5加密,最后再将新密码更新到数据库中。分析源码可以看到只对SQL注入进行了过滤,没有防御CSRF

  

1.2本地尝试简单的CSRF攻击

1.2.1首先登录DVWA,产生cookie信息,然后点击CSRF栏,在burp开启拦截数据包,然后再DVWA CSRF栏中输入密码以及确认密码

1.2.2此时burp 已经拦截到数据包

  

1.2.3我们可以修改数据包,构造一个带有修改密码的url发送给目标用户(目标用户需要已经登录DVWA,产生cookie信息),当目标用户点击url时,密码就被修改了。

现在本地测试,burp抓到数据包之后,把数据包丢弃掉(Drop),然后在浏览器打开另一个窗口,输入构造的url,可以看到成功修改密码

  

1.2.4测试用DVWA的默认密码登录,发现登录不进去,然后用修改过的密码登录,发现登录成功,说明存在CSRF漏洞

1.3尝试构成一个带有修改密码的url,发送给远端的用户(在xp 系统中打开浏览器,然后访问登录DVWA)

1.3.1把构造的带有修改密码的url发送给目标用户,目标用户访问之后,密码就会被修改

  

1.4构造攻击页面

1.4.1通过img标签中的src属性来加载CSRF攻击利用的URL,并进行布局隐藏,实现了受害者点击链接则会将密码修改。

将test.html文件放在攻击者自己准备的网站上

  

1.4.2当受害者正在使用自己的网站(浏览器中还保存着session值)时,访问攻击者诱惑点击test.html 误认为是自己点击的是一个失效的url,但实际上已经遭受了CSRF攻击,密码已经被修改为123

1.5抓包利用burp创建poc

  

1.5.1点击copy HTML 然后在web站点中创建一个文件,把poc的内容复制进去

1.5.2在另一个浏览器登录DVWA,产生session会话,然后访问http://192.168.10.144/2.html #站点,可以看到如下内容,点击“Submit,request”,运行了2.html文件中的内容,成功修改密码

  

1.6结合存储型xss来进行重定向

1.6.1在存储型xss漏洞栏输入<script>window.location=’http://192.168.10.144/test.html’</script>

  

1.6.2当用户访问了带有存储型xss漏洞的页面,就会运行test.html文件,test.html文件内容是修改密码并进行简单的伪装,此时成功修改密码

  

将DVWA的级别设置为Medium

1.分析源码,可以看到Medium级别在Low级别的基础上了加了HTTP_REFERER验证,判断127.0.0.1是否在 referer中,只能本地登录,此时可以把之前的test.html文件重命名为127.0.0.1.html来达到绕过的目的

  

2.把test文件重名为127.0.0.1.html

  

3.此时在登陆过DVWA并保持有session会话的的浏览器中,打开另一个窗口,输入http://192.168.10.144/127.0.0.1.html 访问位于远端服务器的html文件,然后密码就会被修改

4.通过burp分析

  

  

将DVWA的级别设置为High

分析源码,可以看到对密码修改有二次验证,彻底杜绝了利用CSRF漏洞修改密码

  

    

DVWA-CSRF学习笔记的更多相关文章

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

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

  2. 初探csrf学习笔记

    以下是学习了对CSRF的理解,大家切勿作为标准,如有出错请告之! 严禁转载.不想拿自己刚学到的知识去[误人子弟]之所以写出来是让自己巩固和增加理解,他日对此文有不当之处自会修改. [00x1]csrf ...

  3. CSRF 学习笔记

    1:什么是CSRF: 假设有一个支付网站:www.xx.com 向小明同学付款1000元数据包: www.xx.com/pay.php?name=xiaoming&account=xxxx@q ...

  4. csrf学习笔记

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

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

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

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

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

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

    Medium完整代码: <?php if (isset($_GET['Change'])) { // Checks the http referer header if ( eregi ( &q ...

  8. Web 学习笔记 - 网络安全

    前言 作为 前端开发者,了解一点 Web 安全方面的基本知识是有很必要的,未必就要深入理解.本文主要介绍常见的网络攻击类型,不作深入探讨. 正文 网络攻击的形式种类繁多,从简单的网站敏感文件扫描.弱口 ...

  9. SpringBoot + Spring Security 学习笔记(五)实现短信验证码+登录功能

    在 Spring Security 中基于表单的认证模式,默认就是密码帐号登录认证,那么对于短信验证码+登录的方式,Spring Security 没有现成的接口可以使用,所以需要自己的封装一个类似的 ...

随机推荐

  1. .net core程序强制以管理员权限启动

    当我们编写windows程序的时候,很多时候需要程序默认以管理员权限运行,以前在.net 程序中直接新建一个app.manifest,设置requestedExecutionLevel 节点即可 &l ...

  2. hive 标准hql建表语法格式

    一.标准hql建表语法格式1.官方标准语法:(hql不区分大小写,下面[]里的属性是可选属性) 具体参考官网界面:HIVE官网建表说明文档 CREATE [EXTERNAL] TABLE [IF NO ...

  3. XAF-从业务类继承 (XPO)

    In this lesson, you will learn how to implement business classes for your application using the Busi ...

  4. Feign整合Ribbon和Hystrix源码解析

    在上篇文章Feign自动装配中,我们提到了Feign的自动装配的原理,以及Feign整合Ribbon和Hystrix的核心在类FeignClientFactoryBean中,那么本篇文章就来揭开这个类 ...

  5. css3自适应布局单位vw,vh详解

    视口单位(Viewport units) 什么是视口? 在桌面端,视口指的是在桌面端,指的是浏览器的可视区域:而在移动端,它涉及3个视口:Layout Viewport(布局视口),Visual Vi ...

  6. arcgis api 4.x for js 结合 react 入门开发系列react全家桶实现加载天地图(附源码下载)

    基于两篇react+arcgis的文章介绍,相信大家也能体会两者的开发区别了.在“初探篇”中作者也讲述了自己的选择,故废话不多说,本篇带大家体验在@arcgis/webpack-plugin环境下,使 ...

  7. Android SDK自带调试优化工具

    Android sdk中自带了一些分析内存,界面调优的非常实用的工具,这对于分析和调试我们的应用十分有帮助,由于我使用的是linux版本的sdk,所以就以linux版本的工具做一个介绍,这些工具的具体 ...

  8. Python使用APScheduler实现定时任务

    APScheduler是基于Quartz的一个Python定时任务框架.提供了基于日期.固定时间间隔以及crontab类型的任务,并且可以持久化任务.在线文档:https://apscheduler. ...

  9. [转]RHEL7上配置NFS服务

    原文地址:http://380531251.blog.51cto.com/7297595/1659865 1.课程目标 了解什么是NFS及其功能: 掌握NFS的配置: 掌握NFS的验证: 能够单独熟练 ...

  10. [Go] golang实时监控日志文件的包tail

    在linux中有一个tail命令,tail -f可以实时的监控文件新增加的内容,如果用代码实现这个逻辑,可以下载使用这个包go get github.com/hpcloud/tail/... 测试代码 ...