广告
返回顶部
首页 > 资讯 > 数据库 >CSRF与XSS
  • 602
分享到

CSRF与XSS

2024-04-02 19:04:59 602人浏览 泡泡鱼
摘要

Wordpress(低版本)与XSSer 复现过程 首先在虚拟机上搭建wordpress 在wordpress的管理用户界面,可以看到只有admin一个用户

Wordpress(低版本)与XSSer

CSRF与XSS
复现过程

首先在虚拟机上搭建wordpress

CSRF与XSS

在wordpress的管理用户界面,可以看到只有admin一个用户

CSRF与XSS

添加用户,并利用burp抓包

CSRF与XSS

使用burp 自带的csrf插件

CSRF与XSS

会生成一个可以利用的CSRF页面,更改标签中的参数,防止参数重复添加失败

CSRF与XSS

在浏览器中打开,测试

CSRF与XSS

CSRF与XSS  

可以看到,成功的添加了另一个用户

CSRF与XSS

到此,就可以证明存在csrf漏洞并且已经成功利用csrf漏洞

那么如何与XSS漏洞结合起来实现呢?

搭建XSSer平台并且新建一个项目,根据抓包的内容编写项目代码

CSRF与XSS

打开之前搭建的wordpress,将XSS项目的playload写入评论中

CSRF与XSS

留言成功之后如下图:当管理员查看留言时,就会触发XSS漏洞,执行创建用户的操作

CSRF与XSS

抓包查看:

CSRF与XSS

成功执行了XSS中的恶意代码,添加了test5用户

CSRF与XSS

CSRF与XSS
修复建议

目前防御 CSRF 攻击主要有三种策略:

  • 验证 Http Referer 字段

  • 在请求地址中添加 token 并验证

  • 在 HTTP 头中自定义属性并验证

(1)验证 HTTP Referer 字段

       根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,比如访问

http://bank.example/withdrawaccount=bob&amount=1000000&for=Mallory,

http://www.gendan5.com

用户必须先登陆 bank.example,然后通过点击页面上的按钮来触发转账事件。这时,该转帐请求的 Referer 值就会是转账按钮所在的页面的 URL,通常是以 bank.example 域名开头的地址。而如果黑客要对银行网站实施 CSRF 攻击,他只能在他自己的网站构造请求,当用户通过黑客的网站发送请求到银行时,该请求的 Referer 是指向黑客自己的网站。因此,要防御 CSRF 攻击,银行网站只需要对于每一个转账请求验证其 Referer 值,如果是以 bank.example 开头的域名,则说明该请求是来自银行网站自己的请求,是合法的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求。

       然而,这种方法并非万无一失。Referer 的值是由浏览器提供的,虽然 HTTP 协议上有明确的要求,但是每个浏览器对于 Referer 的具体实现可能有差别,并不能保证浏览器自身没有安全漏洞。使用验证 Referer 值的方法,就是把安全性都依赖于第三方(即浏览器)来保障,从理论上来讲,这样并不安全。事实上,对于某些浏览器,比如 IE6 或 FF2,目前已经有一些方法可以篡改 Referer 值。如果 bank.example 网站支持 IE6 浏览器,黑客完全可以把用户浏览器的 Referer 值设为以 bank.example 域名开头的地址,这样就可以通过验证,从而进行 CSRF 攻击。

(2)在请求地址中添加 token 并验证

  CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于 cookie 中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的 cookie 来通过安全验证。要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

       这种方法要比检查 Referer 要安全一些,token 可以在用户登陆后产生并放于 session 之中,然后在每次请求时把 token 从 session 中拿出,与请求中的 token 进行比对,但这种方法的难点在于如何把 token 以参数的形式加入请求。对于 GET 请求,token 将附在请求地址之后,这样 URL 就变成 http://url?csrftoken=tokenvalue。而对于 POST 请求来说,要在 fORM 的最后加上 <input type=”hidden” name=”csrftoken” value=”tokenvalue”/>,这样就把 token 以参数的形式加入请求了。但是,在一个网站中,可以接受请求的地方非常多,要对于每一个请求都加上 token 是很麻烦的,并且很容易漏掉,通常使用的方法就是在每次页面加载时,使用 javascript 遍历整个 dom 树,对于 dom 中所有的 a 和 form 标签后加入 token。这样可以解决大部分的请求,但是对于在页面加载之后动态生成的 html 代码,这种方法就没有作用,还需要程序员在编码时手动添加 token。

(3)在 HTTP 头中自定义属性并验证

        这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。这样解决了上种方法在请求中加入 token 的不便,同时,通过 XMLHttpRequest 请求的地址不会被记录到浏览器的地址栏,也不用担心 token 会透过 Referer 泄露到其他网站中去。

CSRF与XSS
总结思考

       CSRF单纯的利用起来其实是比较困难的,但是结合了XSS漏洞之后,它利用起来就相对来说比较简单了。 从中我们不难看出CSRF的危害:

  • 配合XSS漏洞可造成蠕虫

  • 更改用户密码

  • 更改(商城)用户收货地址

一切用户可以操作的,黑客都可以操作,只需要构造PoC让受害者点击。 通俗点就是说,B以A的身份执行了A可以执行的操作,当然,这里B是黑客,A是受害者,由此可见,CSRF漏洞的危害也是显著的,也是需要在安全工作中重视起来。

您可能感兴趣的文档:

--结束END--

本文标题: CSRF与XSS

本文链接: https://www.lsjlt.com/news/45166.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CSRF与XSS
    Wordpress(低版本)与XSSer 复现过程 首先在虚拟机上搭建wordpress 在wordpress的管理用户界面,可以看到只有admin一个用户 ...
    99+
    2022-10-18
  • 跨站脚本攻击XSS与CSRF区别方法详解
    目录引文简介XSS与CSRF区别ONETWOXSS攻击方法反射型存储型DOM型XSS攻击危害结语引文 上篇文章给大家带来了XML实体注入(XXE)不知道小伙伴们学了后有没有自己去运用...
    99+
    2022-11-13
  • SQL注入、XSS和CSRF指的是什么意思
    这篇文章主要介绍SQL注入、XSS和CSRF指的是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!SQL注入SQL注入是属于注入式攻击,这种攻击是因为在项目中没有将代码与数据(...
    99+
    2022-10-18
  • python Djanjo csrf说明与配置
     Django csrf  CSRF 全称(Cross Site Request Forgery)跨站请求伪造。也被称为One Click Attack和Session Riding,通常缩写为CSRF或XSRF。你可以这样理解:攻击者(黑...
    99+
    2015-01-30
    python Djanjo csrf说明与配置
  • 安全漏洞XSS、CSRF、SQL注入以及DDOS攻击的介绍和应对措施
    本篇内容介绍了“安全漏洞XSS、CSRF、SQL注入以及DDOS攻击的介绍和应对措施”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!0 ...
    99+
    2023-06-17
  • CSRF攻击是什么?如何防范CSRF攻击?
    目录一、什么是CSRF攻击二、CSRF攻击的流程三、常见的CSRF攻击1、GET类型的CSRF2、POST类型的CSRF四、CSRF测试五、预防CSRF攻击5.1、验证HTTPRef...
    99+
    2022-11-13
  • CSRF跨站请求伪造漏洞分析与防御
    目录CSRF漏洞原理漏洞危害防御绕过漏洞利用防御措施总结CSRF 现在的网站都有利用CSRF令牌来防止CSRF,就是在请求包的字段加一个csrf的值,防止csrf,要想利用该漏洞,要...
    99+
    2022-11-13
  • XSS-Lab(XSS注入笔记1-16)
    前言 本篇博客主要是记录笔者完成XSS-Lab步骤以及分析 题目链接:https://buuoj.cn/challenges Github仓库:https://github.com/rebo-rn/x...
    99+
    2023-08-31
    xss php 安全 web安全 ctf
  • python-Django里CSRF 对
    CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的×××方式。    我的理解是,比如你访问过招商银行的网站并登陆之后,你的cookie信息暂时不会失效,    这时,hacker通过各种方式诱导...
    99+
    2023-01-31
    python Django CSRF
  • CSRF防御方案
    一般网站有三种防御CSRF攻击的方案。(1)验证token值。(2)验证HTTP头的Referer。(3)用XMLHttpRequest附加在header里。以上三种方法都在广泛使用,但是他们的效果都不是那么的令人满意。(结尾有惊喜!) 一...
    99+
    2023-09-16
    服务器 java 前端
  • CSRF漏洞复现
    目录标题 原理如何实现和xss区别危害CSRF实战(pikachu)dvwa靶场 CSRF(Cross Site Request Forgery)。跨站请求伪造 原理 攻击者会伪造一...
    99+
    2023-09-06
    csrf php 服务器
  • Web中XSS攻击与防御的示例分析
    小编给大家分享一下Web中XSS攻击与防御的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Web安全之XSS攻防1. X...
    99+
    2022-10-19
  • XSS之htmlspecialchars
    1.htmlspecialchars的用法 1.1说明 htmlspecialchars( string $string, int $flags = ENT_COMPAT | ENT_HT...
    99+
    2023-09-09
    html5 javascript 服务器 前端 php
  • DOM型XSS
    >DOM型XSS与之前两种在原理上有本质区别,它的攻击代码并不需要服务器解析响应,触发XSS靠的是浏览器端的DOM解析。客户端上的JavaScript脚本可以直接访问浏览器的DOM并修改页面的内容。在客户端直接输出DOM内容的时候极易触发D...
    99+
    2023-09-16
    javascript 前端 php
  • DVWA------XSS(全)
    目录 一、XSS https://blog.csdn.net/m0_65712192/article/details/1.简介 2.XSS的原理 3.XSS的攻击方式 4.XSS的危害 5.常见XSS攻击方式 6.常见基本过滤方法 7.XS...
    99+
    2023-08-31
    安全 web安全 xss php 服务器
  • CSRF定义是什么
    CSRF是跨站请求伪造的意思,一种挟制用户在当前已登录的Web应用程序上执行非本意操作的攻击方法。通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作。跨站请求伪造是在许多Web应用程序中发现的严重缺陷。与XSS攻击...
    99+
    2022-10-05
  • CSRF特点是什么
    CSRF的特点:利用网站对用户标识认证的信任。欺骗用户的流量器去发送邮件或这个信息给目标。依靠用户标识危害网站。使用图片的CSRF攻击常常出现在网络论坛中,因为那里允许用户发布图片而不能使用JavaScript。通过含有src性质的标签会触...
    99+
    2022-10-22
  • laravel csrf验证总结
    laravel csrf验证总结 前言问题: laravel 在web路由下无论是表单提交啊 还是ajax请求啊 只要是请求方式不满足 ['HEAD', 'GET', 'OPTION...
    99+
    2022-11-11
  • Flask-状态保持-CSRF
    问题:cookies基于浏览器的同源策略,不同域名的cookie不能相互访问,为什么可以进行跨站请求伪造呢? 原因:cookie基于浏览器的同源策略,确实是在实现状态保持的时候,不能跨域访问。 跨站请求的伪造过程:是其他网站伪造访问原网站...
    99+
    2023-01-30
    状态 Flask CSRF
  • laravel5.1如何关闭csrf
    这篇文章主要介绍了laravel5.1如何关闭csrf的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇laravel5.1如何关闭csrf文章都会有所收获,下面我们一起来看看吧。方法:1、将“app\Http\K...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作