The purpose of life is growth.
—— Bob Proctor, Motivational Coach
「人生的目的是成长。」
—— 包柏·普克
今天给大家推荐的是csrf漏洞
那么它的危害有哪些呢
1.执行恶意操作(“被转账”,“被发垃圾评论”)
2,制造蠕虫
…
一、 简介
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。
简而言之就是利用用户已登陆的身份,在用户不知情的情况下,以用户的名义完成非法操作。
那么它的过程是什么样子呢。
1,客户登录web应用程序进行转账
2,而黑客是不能从他人账户转账的,所以就构造了恶意页面(从登陆账户转至黑客账户)。
3,客户主动访问,完成转账。
给大家打个比方,比如你在访问页面时候,突然看到**隐私照,不看后悔一辈子。一登进去一看是葫芦娃救爷爷,退出来以后就发现自己被莫名其妙转账了
<html>
<head>
metahttp-equiv=content-type"content-"text/html:charsetute-8">
tit1e>Xw隐私照片,不看后悔一辈子</ title>
<style>
tip width: 200px; margin: 20px auto; font-size: 20px: 1
</style>
</head>
<body onload"submitForm():">
< div class="tip">加载中,请稍候,,</div>
<form id="transferOr"
<action"http://127,0,0.1:8088/demo/csrf/transfer,php”
method-"post">
< input type" hidden'”nane" toUser” values“黑客”/>
<input type"hidden" name"amount" value “10"/
</form>
</body>
<script>
function submitForm()(
document. getElementById("transferForm"). submit();
)
</script>
</html>
可能有些小错误,但作为新手的我还请大家多多包涵哈。
这便是攻击者构造的攻击代码
其中οnlοad=“submitForm();”>就是自动提交表单
所以你打开页面就自动完成转账了。
现在知道为啥要学前端语言了吧。
如果想进一步看清楚原理,可以通过抓包看一下转账背后的网页请求。
或者自己用火狐的firebug插件,chrome按F12调出开发者工具查看网络包。
另一个例子看起来比较简单
假如一家银行用以运行转账操作的URL地址如下:http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
那么,一个恶意攻击者可以在另一个网站上放置如下代码:
<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman”>
如果有账户名为Alice的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失1000资金
二、 分类
(1) 资源包含
资源包含是在大多数介绍CSRF概念的演示或基础课程中可能看到的类型。这种类型归结为控制HTML标签(例如 image、audio、video、object、script等)所包含的资源的攻击者。如果攻击者能够影响URL被加载的话,包含远程资源的任何标签都可以完成攻击。
由于缺少对Cookie的源点检查,如上所述,此攻击不需要XSS,可以由任何攻击者控制的站点或站点本身执行。此类型仅限于GET请求,因为这些是浏览器对资源URL唯一的请求类型。这种类型的主要限制是它需要错误地使用安全的HTTP请求方式。
(2) 基于表单
通常在正确使用安全的请求方式时看到。攻击者创建一个想要受害者提交的表单; 其包含一个JavaScript片段,强制受害者的浏览器提交。
该表单可以完全由隐藏的元素组成,以致受害者很难发现它。
如果处理cookies不当,攻击者可以在任何站点上发动攻击,只要受害者使用有效的cookie登录,攻击就会成功。如果请求是有目的性的,成功的攻击将使受害者回到他们平时正常的页面。该方法对于攻击者可以将受害者指向特定页面的网络钓鱼攻击特别有效。
(3)XMLHttpRequest
这可能是最少看到的方式。
由于许多现代Web应用程序依赖XHR,许多应用花费大量的时间来构建和实现这一特定的对策。
基于XHR的CSRF通常由于SOP而以XSS有效载荷的形式出现。没有跨域资源共享策略(CORS),XHR仅限于攻击者托管自己的有效载荷的原始请求。
这种类型的CSRF的攻击有效载荷基本上是一个标准的XHR,攻击者已经找到了一些注入受害者浏览器DOM的方式。
三、 防御
通过CSRF-token或者验证码来检测用户提交
验证Referer/Content-Type
对于用户修改删除等操作最好都使用POST操作
避免全站通用的cookie,严格设置cookie的域
还有http请求头字符串referer来查看来源。