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

dvwa靶场通关(三)

第三关:CSRF(跨站请求伪造)

csrf跨站请求伪造:是一种对网站的恶意利用。尽管听起来像跨站脚本,但它与xss非常不同,xss利用站点内受信任用户,而csrf则通过伪造来自受信任用户的请求来利用受信任的网站,与xss攻击相比,csrf则通过伪装来自受信任用户的请求来利用受信任的网站。与xss攻击相比,csrf攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比xss更具危险性。

本质来说就是在你访问网站信息的同时,盗用你的cookie,用你的身份进行一些非法操作。

危害:

攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做到的事情包括:以你的名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账......造成的问题包括:个人隐私泄露以及财产安全。

low

这是一个修改密码的页面 

 先试试修改密码为123,提交后可以看到url中带有我们修改的密码,所以是以get方式发送请求

我们把这个url复制下来,然后修改url里的密码为我们想要的,比如123456,再把这个修改过的url缩短(网上有工具),不然太长而且很轻易看出来内容,容易被看穿。

 然后打开一个新页面,把缩短的url输入,就会跳转到这个页面,显示密码已经修改了

现实攻击场景下,这种方法需要事先在公网上传一个攻击页面,诱骗受害者去点击我们构造的url从而访问我们的攻击页面,受害者会误认为是自己点击的是一个失效的url,但实际上已经遭受了CSRF攻击,密码已经被修改了,真正能够在受害者不知情的情况下完成CSRF攻击。

我们可以在本地构造一个404错误页面

桌面创建test.txt文件,打开输入如下代码

<img src="http://dvwa.com/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#" border="0" style="display:none;"/>
<h1>404<h1>
<h2>file not found.<h2>

 其中的url就是上面复制下来的url,刚开始修改的密码是123,现在我们把密码修改成123456,保存后,改文件后缀名为.html  然后用正在登录dvwa的浏览器打开这个我们构造的404错误页面

 这样,密码已经被我们修改成功了

 medium

不知道与low有什么区别,看一下源码,发现多了stripos()函数

 stripos() 函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)

语法

stripos(string,find,start)

参数 描述
string 必需。规定被搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。

代码检查了保留变量HTTP_REFERER (http包头部的Referer字段的值,表示来源地址)是否包含SERVER_NAME(http包头部的 Host 字段表示要访问的主机名)。

即用户的请求头中的Referer字段必须包含了服务器的名字

 我们尝试一下抓包看看,referer字段确实包含host字段的主机名

 我们尝试打开上一关构造的攻击页面,打开抓包,没有referer字段

 没有修改成功

 

 在重发器里,我们添加referer字段后,修改成功,这样子我们就绕过了对referer字段的检测

high

先看源码,可以看到,High级别的代码加入了Anti-CSRF token机制,用户每次访问改密页面时,服务器都会返回一个随机的token,当浏览器向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。这里因为对请求的token进行了验证,所以比上两个等级的更加的安全。

 可以看到,当修改密码时,token会放在url中以get方式提交,所以我们要想办法获取到用户的token。

 我们先抓包,发送到重发器

 

 这里可以配合存储型xss来获取token在xss(store)high等级下,输入以下代码

<iframe src="../csrf/" οnlοad=alert(frames[0].document.getElementsByName('user_token')[0].value)></iframe>

 但是输入被限制了长度

 f12打开开发者模式,搜索txtname,把maxlength改大一点,这样我们就可以完整输入代码了

 得到token

 把token复制到重发器里的token,模拟攻击者得到token,构造恶意url诱导用户点击,密码被修改

 impossible

不仅检查了token,还要输入当前的密码,黑客无法知道用户之前的密码,所以无法进行CSRF攻击。这是比较安全的

 

 

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

相关文章:

  • 【计算机图形学】理论考核回顾
  • 一文了解国内外电子后视镜(CMS)现行法规标准
  • LabVIEWCompactRIO 开发指南36 确定“Clock Ticks”或模拟时间
  • ESP32 :项目的创建及项目架构解析
  • TI EDI 项目数据库方案开源介绍
  • 报表控件FastReport使用指南——使用NuGet包创建PDF文档
  • 策略模式-类型统计
  • android 12.0app应用安装白名单
  • android 12.0Launcher3禁止拖动图标到Hotseat
  • Java阶段三Day03
  • 【STM32G431RBTx】备战蓝桥杯嵌入式→决赛试题→第七届
  • Java日期时间调整的几种方式
  • 如何在Windows 11更新后解决C盘已满的问题?
  • DJ6-1/2/3 文件系统
  • 华为OD机试真题 Java 实现【打印文件】【2023Q1 100分】
  • 基于LSB实现文本、图片、压缩包的隐藏
  • (万字长文)Linux——IO之重定向+缓冲区 +重定向 +缓冲区原理实现 +带重定向的简易版shell+标准输出标准错误
  • 面试:js 延迟加载方式
  • 将Oracle数据文件导入SQL Server的方法
  • 《汇编语言》- 读书笔记 - 实验5 编写、调试具有多个段的程序
  • 剑指offer -- 二维数组中的查找
  • 3. 自然语言处理NLP:具体用途(近义词类比词;情感分类;机器翻译)
  • Hibernate的FlushMode
  • 二线程序员的出路
  • MKS SERVO4257D 闭环步进电机_系列2 菜单说明
  • 使用Actor-Critic的DDPG强化学习算法控制双关节机械臂
  • 黑马学生入职B站1年,晒出21K月薪:我想跳槽华为
  • 一文看懂GPT风口,都有哪些创业机会?
  • chatgpt赋能python:Python中的不确定尾数问题
  • 杜绝开源依赖风险,许可证扫描让高效合规「两不误」