文档详情

Web安全与防护 实训指南 8.1跨站请求伪造漏洞的利用与防范.pdf

发布:2025-03-04约6.57千字共6页下载文档
文本预览下载声明

跨站请求伪造漏洞的利用与防范

【实训目的】

1.掌握跨站请求伪造漏洞的形成的原因或者条件;

2.掌握跨站请求伪造漏洞的的利用方法;

3.掌握跨站请求伪造漏洞的防范方法。

【实训原理】

CSRF是攻击者利用用户的名义进行某些非法操作,其是在用户已经与具有

CSRF漏洞的WEB服务器已经建立了会话,在不知情的情况下点击了诈骗的链

接,而WEB应用程序没有对用户提交的请求进行验证,导致执行了非法操作。

【实训步骤】

步骤1、登录DVWA系统,进入CSRF页面

在DVWASecurity当中选择low选项,并提交。然后选择CSRF菜单。出现

如下界面:

图8-3DVWA系统CSRF工作界面

在该界面下,可以修改admin用户的密码。

步骤2、CSRF页面功能分析

该页面就是修改登录用户的密码。在Newpassword和Confirmnewpassword

输入框中,分别输入123456,点击Change按钮,会提示:PasswordChanged。

并且在URL栏中显示:

/dvwa/vulnerabilities/csrf/?password_new=123456password_co

nf=123456Change=Change#,密码变成了123456

很明显,这就是修改密码的链接。

步骤3、利用跨站请求伪造漏洞进行攻击

此时,在另外一个标签页的URL中输入:

/dvwa/vulnerabilities/csrf/?password_new=passwordpassword_

confpasswordChange=Change#

图8-4利用CSRF漏洞攻击结果

可以看到,直接跳转到了密码成功的页面了,密码相应变成passoword。在

此步骤中,我们就是利用了系统存在的跨站请求伪造漏洞,利用尚未失效的身份

认证信息,以受害者的身份向服务器发送请求,从而完成修改密码的非法操作。

步骤4、分析源代码

点击界面右下角的“ViewSource”按钮,就会看到如下源代码:

?php

if(isset($_GET[Change])){

$pass_new=$_GET[password_new];

$pass_conf=$_GET[password_conf];

if($pass_new$pass_conf){

$pass_new=((isset($GLOBALS[___mysqli_ston])

is_object($GLOBALS[___mysqli_ston]))?

mysqli_real_escape_string($GLOBALS[___mysqli_ston],$pass_new):

((trigger_error([MySQLConverterToo]Fixthemysql_escape_string()call!Thiscode

doesnotwork.,E_USER_ERROR))?:));

$pass_new=md5($pass_new);

//更新数据库数据

$insert=UPDATE`users`SETpassword=$pass_newWHEREuser=

.dvwaCurrentUser().;;

$result=mysqli_query($GLOBALS[___mysqli_ston],$insert)or

die(pre.((is_object($GLOBALS[___mysqli_ston]))?

mysqli_error($GLOBALS[___mysqli_ston]):(($___mysqli_res=

mysqli_connect_error())?$___mysqli_res:false))./pre);

显示全部
相似文档