DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计

Authorisation Bypass

授权绕过(Authorisation Bypass)是一种严重的安全,通过利用系统的或错误配置,绕过正常的访问控制机制,获得未经授权的访问权限。这种可能导致敏感信息泄露、数据篡改、系统破坏等严重后果

以下是一些常见的授权绕过场景:

  1. 未验证的直接对象引用:系统没有对用户进行权限检查就直接访问对象。例如,通过猜测URL参数来访问其他用户的文件或数据。
  2. 功能级访问控制:系统没有妥善限制用户对某些特定管理功能或数据的访问,导致攻击者能够执行超出其权限的操作。
  3. 垂直权限提升:低权限用户可以通过漏洞取得高权限用户才拥有的权限,如管理员功能。
  4. 水平权限提升:一个用户访问或修改同一权限级别的其他用户的数据,如查看他人的订单信息。
  5. 不安全的角色验证:系统对角色身份验证存在缺陷,允许攻击者冒充其他角色。

预防和修复授权绕过漏洞需要全面实施和审核权限控制机制,包括:

  • 定义和实现基于角色的访问控制。
  • 确保每个请求都经过严格的身份验证和授权检查。
  • 定期进行安全审核和渗透测试以发现潜在漏洞。

low

先使用管理员登录,然后记住下面的数据库以及路径 vulnerabilities/authbypass

DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计

打开数据库,进入user表,可以看到密码都是进行MD5加密的

DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计

解密md5值

DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计

切换成普通用户

DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计

可以看到少了刚才那一栏

DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计

访问刚才保留的路径

DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计

成功访问

并且在网络响应里回显了数据库信息

DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计

代码审计

<?php /*  Nothing to see here for this vulnerability, have a look instead at the dvwaHtmlEcho function in:  * dvwa/includes/dvwaPage.inc.php           # 具体内容在下面这个函数里 */ ?> 

medium

访问刚才的路径,发现被拦截了

DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计

想到刚才网络资源里泄露的信息,访问vulnerabilities/authbypass/get_user_data.php

DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计

成功获取数据库信息

代码审计

首先检查用户是否是管理员才可以执行,然后利用下面两个函数进行限制

<?php /* 只有管理员用户被允许访问这个页面。 请查看以下两个文件以寻找可能的漏洞: * vulnerabilities/authbypass/get_user_data.php * vulnerabilities/authbypass/change_user_details.php */  if (dvwaCurrentUser() != "admin") {  // 检查当前用户是否不是管理员 	print "未经授权";               // 输出未授权提示 	http_response_code(403);        // 设置HTTP响应状态码为403(禁止访问) 	exit;                          // 结束脚本执行 } ?> 

high

方法和上面的差不多,不同的是需要抓包修改POST请求

DVWA靶场Authorisation Bypass (未授权绕过) 漏洞通关教程及源码审计

修改成功

代码审计

和medium级别没什么区别,不同点在于函数

<?php /* 只有管理员用户被允许访问这个页面。 请查看以下文件以寻找可能的漏洞: * vulnerabilities/authbypass/change_user_details.php */  if (dvwaCurrentUser() != "admin") {  // 检查当前用户是否不是管理员 	print "未经授权";               // 输出未授权提示 	http_response_code(403);        // 设置HTTP响应状态码为403(禁止访问) 	exit;                          // 结束脚本执行 } ?> 

impossible

没有绝对安全的防护,但是一定要做好安全防护措施

代码审计

只有admin才可以访问

<?php /* 只有管理员用户被允许访问这个页面 */ if (dvwaCurrentUser() != "admin") {  // 如果当前用户不是管理员 	print "未经授权";                   // 输出“未经授权”提示 	http_response_code(403);            // 设置HTTP响应状态码为403(禁止访问) 	exit;                               // 结束脚本执行 } ?> 

发表评论

评论已关闭。

相关文章