0x00.概述 0.1 起因 前段时间在zone里看到有人问4A的渗透测试,本人正好接触过几款4A和堡垒机产品,今天抽空就总结下个人在渗透中遇到的4A问题。 0.2 4A 4A是指:认证Authentication、账号Account、授权Authorization、审计Audit,中文名称为统一安全管理平台解决方案。即将身份认证、授权、审计和账号(即不可否认性及数据完整性)定义为网络安全的四大组成部分,从而确立了身份认证在整个网络安全系统中的地位与作用。(百度百科)。 0x01.认证Authentication 认证的方式一般有以下几种: 静态口令 动态口令令牌 USB令牌 存在的问题有: 1.1 账号枚举 这里的账号枚举并不是仅仅知道哪个账号存在,哪个账号不存在。 String mobileNumber = request.getParameter("mobile"); if(StringUtiles.isNotEmpty(mobileNumber)){ PrimaryAccount primaryAccount = new PrimaryAccount(); primaryAccount.setMobile(mobileNumber); List paList = accountService.getPraccList(PrimaryAccount); if(CollectionUtils.isNotEmpty(paList)){ username = paList.get(0).getPracctName(); } } ...... if(StringUtiles.isBlank(errMsg)){ errMsg = "认证失败" } String oper = "主账号:" + username + "登录4A认证不成功,原因:" + errMgs; ...... 从上面账号可以看到,登录时,如果你输入的是手机号,那么登录失败的时候,就会将手机号对应的username返回,那么我们就可以拿手机号和用户名到密码找回页面等地方做进一步的测试。 1.2 锁屏绕过 在某厂商的4A平台上有个锁屏的功能,即点击锁屏时,4A管理界面就会被锁定,重新输入密码后,就可以进入管理平台。 Ext.Ajax.request({ url : '../platform/login!lockLogin.do', params : { name : name, lockPwd : lockPwd }, success : function(rsp,opt){ var responseArray = Ext.util.JSON.decode(rsp.responseText); var result = responseArray.resultStr; var desc = responseArray.descStr; if(result == true){ $.unblockUI(); $("#lockPwd").val(""); times=0; }else if...... } }) 从代码可以看到,只要result == 0,就可以解锁,那么我们可以用burp拦截response,也可以修改JS等。 0x02.账号Account 4A中账号分为主账号和从账号,一个用户只会有一个主账号,唯一标识了他的身份。这个主账号还会有N个从账号,对不同的系统会有不同的从账号,方便用户访问其可以访问的系统。如下图 2.1 重置用户密码 http://wooyun.org/bugs/wooyun-2010-072644 在这个bug中,可以通过修改密码的功能,重置其他用户的密码。典型的账号管理问题。 2.2 token token在4A中可谓是到处都是,那么如果token验证不严谨,很可能出现戏剧性的结果。接下来这个漏洞给大家展示token失效的时候。 这个页面不是通过4A登录过来的,而是直接访问网站的登录界面,登录后的页面。 上面的图是通过4A登录后,访问系统时,将URL和username修改为管理员的页面和用户名,然后可以看到,页面显示的就是管理员的页面了。 0x03.授权Authorization 授权一般分为: 1.基于用户的授权UBAC 2.基于用户角色的授权RBAC 3.基于资源的授权ABAC 存在的问题有: 3.1 调用cmd 4A权限分配中有个很重要的功能就是基于资源的授权,比如给主账号A分配一个securecrt,让其可以使用SSH,给主账号B分配一个notepad,让其可以使用记事本。但是大家都知道通过浏览器、记事本等“查找文件”的功能可以调出cmd等功能。 如下图,是通过分配的IE浏览器,直接调用出cmd窗口,接下来,你想干什么,都OK。 3.2 访问他人资源 一般的4A中都集成了“个人文件夹”功能,这个文件夹就是可以上传文件到自己的文件夹里面,但是点击个人文件夹时,可以修改username,然后就看到了其他人的文件。 |