更多渗透技能 ,公众号:渗透师老A
一.CSRF基础知识
CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,
在第三方网站中,向被攻击网站发送跨站请求。
利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的
csrf与xss区别
XSS:跨站脚本(Cross-site scripting,通常简称为XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。
它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。
这类攻击通常包含了HTML以及客户端脚本语言(最常见如:JavaScript)
XSS更偏向于方法论,CSRF更偏向于一种形式,只要是伪造用户发起的请求,都可成为CSRF攻击。
通常来说CSRF是由XSS实现的
所以CSRF时常也被称为XSRF[用XSS的方式实现伪造请求](但实现的方式绝不止一种,还可以直接通过命令行模式(命令行敲命令来发起请求)直接伪造请求[只要通过合法验证即可])。
XSS更偏向于代码实现(即写一段拥有跨站请求功能的JavaScript脚本注入到一条帖子里,然后有用户访问了这个帖子,这就算是中了XSS攻击了)
CSRF更偏向于一个攻击结果,只要发起了冒牌请求那么就算是CSRF了
csrf漏洞原理
上图中网站 A为存在CSRF漏洞的网站,网站B为攻击者构建的恶意网站,User 为网站A网站的合法用户。
CSRF攻击攻击原理及过程如下:
1.用户user打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;
2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;
3.用户未退出网站A之前,在同一浏览器中,打开一个TAB页访问网站B;
4.网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A;
5.浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带Cookie信息,向网站A发出请求。网站A并不知道该请求其实是由B发起的,所以会根据用户C的Cookie信息以C的权限处理该请求,导致来自网站B的恶意代码被执行。
二.CSRF分类
Get型
这种类型的CSRF一般是由于程序员安全意识不强造成的。
GET类型的CSRF利用非常简单,只需要一个HTTP请求,所以,一般会这样利用:
<img src=http://example.cn/csrf.php?xx=11 />
在访问含有这个img的页面后,浏览器会自动向http://example.cn/csrf.php?xx=11发出一次HTTP请求。
example.cn就会收到包含受害者登录信息的一次跨域请求。
所以,如果将该网址替换为存在GET型CSRF的地址,就能完成攻击了。
Post型
这种类型的CSRF危害没有GET型的大,利用起来通常使用的是一个自动提交的表单,如:
<formaction=http://example.cn/csrf.phpmethod=POST>
<inputtype="text"name="xx"value="11"/>
</form>
<script> document.forms[0].submit();</script>
访问该页面后,表单会自动提交,相当于模拟用户完成了一次POST操作。
POST类型的攻击通常比GET要求更加严格一点,但仍并不复杂。
任何个人网站、博客,被黑客上传页面的网站都有可能是发起攻击的来源,后端接口不能将安全寄托在仅允许POST上面。
链接类型
链接类型的CSRF并不常见,比起其他两种用户打开页面就中招的情况,这种需要用户点击链接才会触发。
这种类型通常是在论坛中发布的图片中嵌入恶意链接,或者以广告的形式诱导用户中招,攻击者通常会以比较夸张的词语诱骗用户点击,例如:
<ahref=" http://example.cn/csrf.php?xx=11"taget="_hacker">
百万福利,点击就送!!
<a/>
由于之前用户登录了信任的网站A,并且保存登录状态,只要用户主动访问上面的这个PHP页面,则表示攻击成功。
三.CSRF特点以及危害
csrf特点
1、攻击一般发起在第三方网站,而不是被攻击的网站。被攻击的网站无法防止攻击发生。
2、攻击利用受害者在被攻击网站的登录凭证,冒充受害者提交操作;而不是直接窃取数据。整个过程攻击者并不能获取到受害者的登录凭证,仅仅是“冒用”。
3、跨站请求可以用各种方式:图片URL、超链接、CORS、Form提交等等。
部分请求方式可以直接嵌入在第三方论坛、文章中,难以进行追踪。
4、CSRF通常是跨域的,因为外域通常更容易被攻击者掌控。
但是如果本域下有容易被利用的功能,比如可以发图和链接的论坛和评论区,攻击可以直接在本域下进行,而且这种攻击更加危险。
csrf危害
CSRF攻击会根据场景的不同而危害迥异,比较常见的有:
发送邮件
修改账户信息
资金转账
盗取用户隐私数据
网站被上传网马
作为其他攻击方式的辅助攻击(比如xss)
传播CSRF蠕虫(见下文中的YouTube CSRF漏洞)
等等
四.CSRF实例
WordPress的CSRF漏洞
2012年3月份,WordPress发现了一个CSRF漏洞,影响了WordPress 3.3.1版本,
WordPress是众所周知的博客平台,该漏洞可以允许攻击者修改某个Post的标题,添加管理权限用户以及操作用户账户,包括但不限于删除评论、修改头像等等。
那么这个漏洞实际上就是攻击者引导用户先进入目标的WordPress,
然后点击其钓鱼站点上的某个按钮,该按钮实际上是表单提交按钮,
其会触发表单的提交工作,添加某个具有管理员权限的用户,实现的代码如下:
<html>
<bodyonload="javascript:document.forms[0].submit()">
<H2>CSRF Exploit to add Administrator</H2>
<form method="POST" name="form0" action="http://<wordpress_ip>:80/wp-admin/user-new.php">
<inputtype="hidden"name="action"value="createuser"/>
<input type="hidden" name="_wpnonce_create-user" value="<sniffed_value>"