CSRF漏洞利用介绍

目录

 

CSRF漏洞介绍

XSS与CSRF区别

CSRF漏洞原理

GET型CSRF代码分析

GET型 CSRF利用

POST型CSRF代码分析

POST型 CSRF利用

CSRF漏洞利用方法

CSRF漏洞防御措施


CSRF漏洞介绍

CSRF:跨站请求伪造,也称为One Click Attack 缩写为CSRF

XSS与CSRF区别

XSS     跨站脚本攻击           利用站点内的信任用户盗取cookie

CSRF  跨站请求伪造攻击    通过伪装成信任用户请求信任的网站

CSRF漏洞原理

利用目标用户的合法身份,以目标用户的名义执行某些非法操作

例如 简单转账案例

初始化链接:http://www.xxx.com/pay.php?user=xx&monkey=10000

CSRF漏洞代码分析

<?php

//会话验证

$user =$_GET["user"];

$money=$_GET["monkey"];

//转账操作

?>

构造恶意链接:http://www/xxx.com/pay.php?user=恶意用户&monkey=100000

我们把这个链接发给受害人,受害人点击后,就会把受害人的钱发给我们。

GET型CSRF代码分析

GET型 CSRF利用

构造GET型URL,提交username和password参数,从而新建对应的用户名和密码。

http://127.0.0.1/csrf_test/get_csrf/user.php?username=admin111&password=132251231

POST型CSRF代码分析

POST型 CSRF利用

设置表单用于提交。例如:<input type="type" name="username" value="1111">

CSRF漏洞利用方法

1.链接利用

<a href="http://127.0.0.1/csrf/csrf.php?username=admin&password=admin123">csrf</a>

2.iframe利用

iframe标签内容将在页面加载过程中自动进行加载,src指向的位置就是页面请求的位置

<iframe src="http://127.0.0.1/csrf/csrf.php?username=admin&password=admin123" style="display:none"/>

 注意:可以设置iframe的 style="display:none",以此来不显示iframe加载的内容

3.img标签利用

<img src="http://127.0.0.1/csrf/csrf.php?username=admin&password=admin123" />

4.CSS-backgroud利用

可以利用CSS中 backgroud样式中的url来加载远程机器上的内容,从而对url中的内容发送http请求

列如:

body{

backgroud:#00f00 url("http://127.0.0.1/csrf/csrf.php?username=admin&password=admin123") no-repeat fixed top;

}

CSRF漏洞防御措施

1.验证码防御

验证码防御被认为是对抗CSRF最简单的而且有效的防御方法

CSRF在用户不知情的情况下完成对应操作,而验证码强制用户与应用程序交互,才能最终完成操作。通常情况下,验证码能很好的遏制CSRF

出于用户体验考虑,不可能每一操作都加入验证码。所以验证码只作为辅助手段,不能作为防御CSRF的主要解决方案。

验证码防御也可以被认为是二次验证

2.token防御

CSRF本质原因:重要操作的所有参数都是被恶意攻击者猜测道的。

那么防御措施就是生成一个随机且不被轻易猜测的参数。目前大多数防御都采取token。

3.referer cherk 防御

Referer check主要用于防止盗链。同理也可用于检查请求是否来自合法的"源"。

比如用户修改密码,一定是在登陆系统之后进行操作。所以在修改提交表单的时候,一定会从系统后台提交。携带referer头。如果referer不是当前系统的域,那么极有可能遭受CSRF

缺陷:服务器并非任何时候都可以取到Referer,例如HTTPS跳转到HTTP

猜你喜欢

转载自blog.csdn.net/smli_ng/article/details/106474227
今日推荐