CSRF漏洞的利用与学习
CSRF的原理
发现漏洞可利用处->构造(搭建)搭建代码->发送给用户(管理员)->触发代码(发送请求)………
从这个利用的一个流程中,我们可以发现,攻击者仅仅只是做了两处工作.第一处是:发现漏洞利用处,,第二处就是构造利用代码以及发送至用户(管理员)。至于利用,你会发现CSRF与XSS不同,XSS是攻击者自己提交,等待结果,而CSRF呢,是由用户(管理员)自身提交。甚至可以说攻击者只做了构造代码的工作。
OWASP CSRFTester
这是OWASP推出的CSRF半自动化软件,他省去了CSRF最繁琐的过程,代码构造。下面是软件的截图
利用CSRFTester进行CSRF攻击
进入已经搭建的CMS后台的管理员管理模块
浏览器里代理设置为CSRFTester的代理127.0.0.1:8008
开启CSRFTester抓取数据包,正常添加管理员 返回可以看到已经抓取到了数据包
在Form Parameters中没有找到token的值,那么就可以实现CSRF攻击
在Report Type中。有四种方法来进行攻击。
- Forms:创建一个form表单。内容为hidden(隐藏),用户不可见(可POST、GET)
iFrame:创建一个iframe框架,高宽为0,用户不可见。(可POST、GET)
IMG:创建一个IMG标签(只能GET)。
XHR:创建一个AJAX请求(可POST、GET)
Link:创建一个a标签的超链接(只能GET)
此处先选择Forms进行测试
点击Generate HTML 便生成了一个index.html
由其中的HTML源码可以看出这是一个简单的提交表单,点击运行这个html文件
可以看到成功的添加了一个管理员用户
到此利用CSRFTester进行CSRF攻击成功
构造提交表单进行CSRF攻击
审查元素得到管理员管理的URL,进入查看源码。分析提交表单
修改提交表单
点击按钮提交,成功添加管理员
在html中增加javascript脚本,自动提交表单
利用ajax结合xss进行CSRF攻击
就是把CSRF的AJAX请求放到XSS里,以达到攻击的效果
在测试用的这套CMS的留言板处就存在存储型XSS漏洞
在这里我们可以使用CSRFTester生成一个ajax
我们可以看到ajax中核心部分
同时也可以自己编写一个简单的ajax
1 | var xmlhttp; |
在xss平台上配置项目
然后插入测试网站的留言板里
管理员查看留言信息就能添加一个管理员账号了
CSRF 漏洞防护
其实现在有关CSRF漏洞防护已经是比较成熟了,其主要防护的思路就是需要在进行后台数据修改操作的过程中,添加对当前用户身份的有效验证措施,而不能仅限于cookie的识别,这里简单的罗列了下防护措施如下。
(1) 来源校验
使用http请求头中referer来源,对客户端源进行身份校验,此方法早期使用比较多,但是仍然容易被绕过,所以这里并不建议使用。
(2) 用户token 校验
添加基于当前用户身份的有效tokens随机验证机制,即在向后端提交数据操作请求时,添加基于当前用户的随机token校验值,此种校验方法当前使用比较多;
(3)当前用户密码验证
在修改关键信息时,要钱当前用户输入其自身的密码,以验证当前用户身份的真伪,防止未授权的恶意操作;
(4)添加验证机制
在请求数据的提交前,需填写验证码信息提交,以增加对用户来源的有效验证,防止恶意未授权的操作产生。
参考链接:
http://www.test404.com/post-1410.html
http://www.freebuf.com/articles/web/55965.html