DVWA详解:AuthorisationBypass 篇(下)

前言:

在前一篇博文中,博主解读了"AuthorisationByPass"这个漏洞的"LOW/MEDIUM"难度,在这一篇博文中,博主将继续解读"HIGH"难度!

特别提示:如果你在实验过程中,直接复制本博客任意博文中的配置/代码,"空格"字符的前面将可能产生不可见的字符"M-BM-",从而造成文件不可用,这是字符编码的问题~若必需使用复制粘贴方式,请务必手动替换掉配置项中的所有空格!!!或尝试使用以下命令过滤掉所有"M-BM-"字符~

快速跳转:

《 DVWA详解:AuthorisationBypass 篇(上)》

HIGH:

现在,先看一下HIGH难度下的准PHP源码文件"high.php",有效代码其实和MEDIUM难度一样,重点是其中的注释,见下:

在HIGH难度下,"gordonb"用户已经无法使用"get_user_data.php"页面了(关于这部分内容见MEDIUM难度的PHP源码解读),但DVWA官方提示我们关注"change_user_details.php"文件;现在,我们解读一下"change_user_details.php"文件,看看为什么会在HIGH难度下存在漏洞;

另外特别提示一下,"DVWA 2.3"版本的"change_user_details.php"的PHP源代码的"IF条件判断语句也"缺失了"exit;"语句(GitHub上最新代码已修复),你需要自己手动修复一下这个BUG;缺失"exit;"语句影响的是"IMPOSSIBLE"难度,会使"IMPOSSIBLE"难度下本页面的漏洞依然生效;

DVWA详解:AuthorisationBypass 篇(下)

当我们尝试使用"LOW/MEDIUM"等级的方法尝试完成"HIGH"难度的攻击,我们会发现攻击失败了,见下图:

DVWA详解:AuthorisationBypass 篇(下)

这意味着我们无法在"gordonb"用户下获取到"本应只能由管理员才能获取到的用户数据",可见,在HIGH难度下,DVWA修复了"LOW/MEDIUM"等级的"用户数据获取"漏洞;但"Authorisation Bypass"页面除了"查询用户数据",还有"更新用户数据"这一个功能,如果正确理解"change_user_details.php"的源码,会发现"更新用户数据"这一操作在HIGH难度依然存在漏洞(这个漏洞在MEDIUM难度下也是存在的);

由于"更新用户数据"这一操作使用的是POST请求,此时我们需要使用到"BurpSuite"(注:这不是唯一的工具);用"BurpSuite"发送"更新用户数据"请求,可用两种方式:A、"Proxy"模式,拦截POST请求,修改请求参数,然后放行实现数据更新;B、"Repeater"模式(重放攻击),即使用一个POST请求的模板,按需修改,发送请求以更新数据;

本博文使用"重放攻击"方法,要使用"重放攻击",就需要知道"POST请求的样式",这个样式你可以从开者工具中查看,也可以使用"BurpSuite"拦截一个"change_user_details.php"的更新请求,然后保存下来作为POST请求的模板;

以下为博主使用"BurpSuite"拦截发送至"change_user_details.php"的POST更新请求的标准样式,使用"BurpSuite"拦截的过程就不截图了,读者实验过程中,可以复制以下POST请求然后修改使用;

1、收集/设定"POST更新请求"的模板;

2、POST请求的模板已经有了,在实施"重放攻击"前,我们还需要收集一下当前的COOKIE,后面修改POST请求时需要使用到:

DVWA详解:AuthorisationBypass 篇(下)

3、现在开始模拟"重放攻击",首先配置"重放攻击"的"目标地址"与"目标端口",见下图:HOST 配置为"dvwa.domain.local",PORT 配置为"80";

DVWA详解:AuthorisationBypass 篇(下)

4、将上面提到的"POST请求模板"复制到"Request"的文本栏中,按实际情况修改;其中需要修改的内容为:A、"Cookie";B、提交参数;C、"Content-Length"(按"提交参数"的实际长度进行修改);具体修改要点见下图:将 ID 为"3"的用户的 FIRST_NAME 修改为"Baidu",SURNAME 修改为"com";

DVWA详解:AuthorisationBypass 篇(下)

5、在修改完成后,点击"Send"发送请求;然后切换到"Response"标签查看响应数据;发现响应数据中包含了' {"result":"ok"} '信息,表明"用户数据更新成功":

DVWA详解:AuthorisationBypass 篇(下)

6、切换至LOW等级,查看"http://dvwa.domain.local/vulnerabilities/authbypass/"页面(只有在LOW等级下,"gordonb"才能看到此页面),发现数据的确被更新了:

DVWA详解:AuthorisationBypass 篇(下)

结:

至此,本篇关于DVWA上"Authorisation Bypass"篇上三个难度已经解读完成了;这个DVWA篇章主要的目的就是告诉渗透人员:"开发人员在处理'授权问题'时,容易在某些复杂的情况下使用了'错误的鉴权逻辑代码',尤其是那些无法通过浏览器直接访问的地方(例如API调用),一个'鉴权漏洞'可能会导致攻击者成功的访问机密数据或功能"。只要读者明白了以上的关键点,DVWA的"Authorisation Bypass"章节就完成其目标了~~~

DVWA详解:AuthorisationBypass 篇(下):等您坐沙发呢!

发表评论

表情
还能输入210个字