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

【CSRF实践】DVWA靶场之CSRF实践

CSRF介绍

CSRF(Cross-site request forgery),中文名叫做“跨站请求伪造”,也被称作“one click attack/session riding”,缩写为“CSRF/XSRF”。在场景中,攻击者会伪造一个请求(通常是一个链接),然后欺骗目标用户点击,一但用户点击,攻击也就完成了。

  • 同“XSS”的区别在于,CSRF是借助用户权限完成攻击,攻击者并没有拿到权限;而XSS是直接盗取用户甚至管理员的权限进行攻击,从而造成破坏
  • CSRF攻击可以利用用户已经登录或已经授权的状态,伪造合法用户发出请求给受信的网点,从而实现在未授权的情况下执行一些特权操作。

二、DVWA靶场之CSRF介绍

首先熟悉这两个功能的用处:
(1)Test Credentials:测试你使用账号密码能否登录现在的系统
(2)Change Password:可以修改当前系统的密码
在这里插入图片描述

三、DVWA靶场之CSRF实践

  1. 思考:
  • 作为攻击者:我如何让用户点击一个陌生链接后,使得用户的密码被修改。
  • 首先,我需要分析目标网站的密码修改请求的 URL 结构。这可以通过 Burp Suite 抓取自己的修改密码请求来分析。
  • 一旦确认 URL 结构后,攻击者可以构造一个伪造请求,并引导用户点击,从而利用用户的已登录状态执行恶意请求,例如,修改用户密码。
  • 注意:直接抓取得到的链接过于明显,用户不会轻易点击,因此需要进行伪装。因此可以通过变为短链接形式或者包装为1.html形式来修改。
  1. 实践步骤如下:

(1)用户在登录状态下,进行修改密码操作,输入密码:123456,点击change,显示密码已修改。进入验证界面,确认密码修改成功。当前系统密码为123456。获得用户修改密码链接为:http://192.168.81.130/DVWA/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#

(2)将链接包装为1.html形式来修改用户密码,以下为1.html的代码。将1.html文件部署在自己服务器上。

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

在这里插入图片描述
(3)访问1.html,刷新后密码被修改。

四、进阶(Medium)

这里Medium级别的代码增加了referer的判断。这里的意思HTTP_REFERER和SERVER_NAME如果不是来自同一个域环境的话就无法进行到内部的循环,以及修改密码操作。

在这里插入图片描述

接下来我们开始尝试攻击,根据上面的代码分析,我们可以知道referer中只要出现HOST就行,所以在恶意网站中这样操作就可以:

(1)将上面1.html重新用IP地址命名,改为:192.168.81.130.html。然后放入文件服务器的/var/www/html中。

(2)然后我们打开burp suite,对CSRF界面进行抓包,然后发送至Repeater模块

(3)在Repeater模块,抓包流量的Referer地址改为192.168.81.130.html的网页地址,地址为:http://192.168.21.30/192.168.81.130.html

(4)点击“Send”我们可以看见返回“Password Changed.”,证明修改成功,攻击成功。

五、High

(1)这次在Medium的基础上有了token值,所以我们需要在攻击者的服务器上获取被攻击者的token值。

  • CSRF攻击的本质是重要操作的所有参数,都可以被攻击者猜测到,所以token值是必须的。观察以下源码,这里是添加了Anti-CSRF token机制,用户每次到改密页面的时候,服务器会返回一个随机token,向服务器发起请求需要提交token参数,而在服务器收到请求的时候,会优先检查token,只有token正确才会处理客户端请求。

在这里插入图片描述

(2)在观察得到以上的信息后,可以利用XSS,先用XSS执行代码获取token。<script>alert(document.cookie)</script>。得到token信息后,使用该token进行medium步骤即可。

五、参考链接

  1. 参考链接
http://www.lryc.cn/news/547087.html

相关文章:

  • 数据库设计方面如何进行PostgreSQL 17的性能调优?
  • [场景题]如何实现购物车
  • Rust 并发编程:Futures、Tasks 和 Threads 的结合使用
  • 常见的网络协议介绍
  • 一文读懂加载地址、链接地址和运行地址
  • Unity帧同步与状态同步混合架构开发指南
  • 后路式编程
  • Rust语言入门与应用:未来发展趋势解析
  • 【2025小白版】计算复试/保研机试模板(个人总结非GPT生成)附代码
  • android11使用gpio口控制led状态灯
  • 基于Asp.net的高校一卡通管理系统
  • C++蓝桥杯基础篇(七)
  • 8.路由原理专题
  • jQuery UI 简介
  • Web服务器配置
  • LINUX网络基础 [一] - 初识网络,理解网络协议
  • 定制化开发的WooCommerce独立站商城更安全
  • Xcode 运行真机失败
  • 【FFmpeg之如何新增一个硬件解码器】
  • P3385 【模板】负环
  • 破解透明物体抓取难题,地瓜机器人CASIA 推出几何和语义融合的单目抓取方案|ICRA 2025
  • 深度学习编译器(整理某survey)
  • 【计算机网络入门】应用层
  • @PostConstruct注解的作用
  • HTML + CSS 题目
  • 通过多线程获取RV1126的AAC码流
  • sql sqlserver的进程资源查看,杀掉多余进程
  • 自然语言处理:朴素贝叶斯
  • Pytorch实现之LSRGAN,轻量化SRGAN超分辨率SAR
  • 学习记录-缺陷