Web漏洞_CSRF学习

一、原理

CSRF(Cross-site request forgery)跨站请求伪造。当受害者在与目标网站保持一个会话连接的时候,这时黑客构造了一个可以执行在目标网站相关操作(如修改密码、转账)的URL发送给受害者,受害者点击之后执行了此操作。需要注意的就是受害者必须与目标网站保持连接,这是点击链接之后才会执行操作。

二、DVWA靶机实验

Low级别

打开页面显示修改密码,需要输入新密码然后确定,当点击提交之后查看URL,显示了GET方式提交
此时如果黑客事先下载并研究了这个流程之后,可以构造一条URLhttp://192.168.1.4/vulnerabilities/csrf/?password_new=abc&password_conf=abc&Change=Change#原始用户为1337密码为charley然后发送给1337用户,当点击后显示页面
在这里插入图片描述
说明密码已经修改。这时退出登陆,通过原密码已经无法登陆,通过abc可以登陆

medium级别

<?php

if( isset( $_GET[ 'Change' ] ) ) {
    // Checks to see where the request came from
    if( eregi( $_SERVER[ 'SERVER_NAME' ], $_SERVER[ 'HTTP_REFERER' ] ) ) {
        // Get input
        $pass_new  = $_GET[ 'password_new' ];
        $pass_conf = $_GET[ 'password_conf' ];

        // Do the passwords match?
        if( $pass_new == $pass_conf ) {
            // They do!
            $pass_new = mysql_real_escape_string( $pass_new );
            $pass_new = md5( $pass_new );

            // Update the database
            $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";
            $result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' );

            // Feedback for the user
            echo "<pre>Password Changed.</pre>";
        }
        else {
            // Issue with passwords matching
            echo "<pre>Passwords did not match.</pre>";
        }
    }
    else {
        // Didn't come from a trusted source
        echo "<pre>That request didn't look correct.</pre>";
    }

    mysql_close();
}

?> 

查看后台源代码
通过使用eregi()函数增加了一层检查,此函数的作用就是在$_SERVER[ 'HTTP_REFERER' ] (引导用户代理到当前页的前一页的地址)中检查是否含有$_SERVER[ 'SERVER_NAME' ](当前运行脚本所在的服务器的主机名。),在这个环境下,后者即为192.168.1.4
在这里插入图片描述
即在http包中referer参数中查找host的参数

此时需要准备一台服务器,然后在服务器中创建一个名为HOST的html文件,这时在refer中去检索是否含有host的时候检索到html文件名时就会通过从而导致csrf

首先查看现在
我在vmware win7的网站根目录下创建一个文件,192.168.1.4.html,内容为:
<img src=http://192.168.1.4/vulnerabilities/csrf/?password_new=admin&password_conf=admin&Change=Change# >,然后构造URL,http://192.168.216.130/192.168.1.4.html 此时,这段URL即为refer,DVWA会在这段URL中查找是否含有192.168.1.4,由于文件名为192.168.1.4所以会通过检查

在访问这段URL之前,先查看下密码(password)
然后访问链接之后,再通过password来进行登陆已经无法登陆,尝试admin来登陆,成功登陆

说明已经产生了csrf的攻击

标签的使用

<a>标签
<iframe>标签
<img>标签
CSS层叠样式表中background:url(csrf的URL)

三、防御

1、验证码进行验证(二次验证)

2、referer check

3、anti csrf token

检测token的原理:
一般在敏感操作的时候比如修改个人信息的场景,后台程序会随机给用户当前的操作发送一个token,然后当用户提交表单的时候会将token一起发送给后台程序,此时后台程序对讲用户发来的token和后台存储的token值进行比较,如果相同则为合法操作,不同则为非法操作。
token的泄露:
①GET型泄漏:页面包含<img src="URL">时,referer中会携带token
②POST型泄漏:当网站存在XSS漏洞时,如果token包含在cookie中会通过XSS获取token从而获得用户的token。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: XSS漏洞CSRF漏洞都是Web应用程序中常见的安全漏洞,但它们的攻击方式和影响范围有所不同。 相同点: 1. 都是Web应用程序的安全漏洞。 2. 都可以通过恶意构造的请求来实现攻击。 3. 都可以利用受害者已登录的身份进行攻击。 4. 都可以导致用户数据泄露、篡改或者账号被盗等风险。 不同点: 1. 攻击方式不同:XSS漏洞是通过在网页中注入恶意脚本来实现攻击,而CSRF漏洞则是通过伪造请求来实现攻击。 2. 影响范围不同:XSS漏洞主要会针对受害者的浏览器进行攻击,而CSRF漏洞则主要攻击Web应用程序后台。 3. 防御方式不同:防御XSS漏洞需要对用户输入进行过滤和转义,防御CSRF漏洞需要在服务端验证请求来源和用户身份。 总之,XSS漏洞CSRF漏洞都是比较常见的Web应用程序安全漏洞,开发者需要加强对这些漏洞的了解,采取有效的安全防护措施来保障Web应用程序的安全。 ### 回答2: XSS漏洞(跨站点脚本漏洞)和CSRF漏洞(跨站点请求伪造漏洞)是常见的网络安全问题,两者有一些不同点和相同点。 不同点: 1. 定义:XSS漏洞是指攻击者通过注入恶意脚本代码来篡改目标网页内容,从而获取用户敏感信息或执行恶意操作;而CSRF漏洞是攻击者通过伪造请求,利用受害者在目标网站中的有效会话执行非预期的操作。 2. 目标:XSS漏洞的目标是窃取用户信息、劫持会话等;而CSRF漏洞的目标是在受信任的用户执行恶意操作。 3. 注入位置:XSS漏洞注入恶意脚本通常发生在目标网页的输入控件、URL参数等位置;而CSRF漏洞则是通过在第三方网站或恶意邮件中引导用户点击恶意链接触发。 4. 影响范围:XSS漏洞的影响范围主要限于与受攻击网页有交互的用户;而CSRF漏洞对受害者的影响范围更广,因为攻击者可以通过恶意链接或页面在用户不知情的情况下执行操作。 相同点: 1. 都是跨站点攻击漏洞:两种漏洞都利用了缺乏有效的身份验证和授权机制的网站之间的信任关系。 2. 都利用Web应用程序的漏洞:XSS和CSRF漏洞都通过发现和利用Web应用程序的弱点来进行攻击。 3. 都对用户隐私和安全构成潜在威胁:XSS漏洞可以导致用户敏感信息的泄露或会话劫持,而CSRF漏洞可以使受害者在不知情的情况下执行非预期操作。 4. 都需要合适的预防措施:为了防止XSS和CSRF漏洞的攻击,开发人员需要进行输入验证和过滤、正确的编码方式、实施有效的反CSRF令牌等安全措施。 综上所述,XSS漏洞CSRF漏洞是不同类型的跨站点攻击漏洞,但同样是Web应用程序安全的重要威胁。开发人员需要通过适当的预防措施来减少这些漏洞的风险,确保用户信息和系统安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值