当前位置: 首页 > article >正文

第38天:Web开发-JS应用NodeJS原型链污染文件系统Express模块数据库通讯审计

#知识点

1、安全开发-NodeJS-开发环境&功能实现

2、安全开发-NodeJS-安全漏洞&案例分析

3、安全开发-NodeJS-特有漏洞&代码审计

一、环境搭建-NodeJS-解析安装&库安装

文档参考(nodeJS菜鸟教程):

https://www.runoob.com/nodejs/nodejs-tutorial.html

补充nodejs相关知识->提高认识理解:

可以把nodeJS当作一个运行环境,基于Google的V8引擎,专门运行javascript;

传统js语言,源代码可以在前端浏览器查阅,基于网站apache,通过浏览器解析显示出网站界面;

nodeJS是运行在服务端,源代码前端查阅不到,不需要apache,只需安装、配置nodeJS中相应的库,就能解析代码,从而显示网站页面;在这里浏览器发挥的作用就变小了;

1、Nodejs安装

https://nodejs.org/en

2、三方库安装

①express

Express是一个简洁而灵活的node.js Web应用框架;通过这个框架,不需要apache,也能显示网站;

②body-parser

node.js中间件,用于处理 JSON, Raw, Text和URL编码的数据。

③cookie-parser

这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。

④multer

node.js中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。

⑤mysql

Node.js来连接MySQL专用库,并对数据库进行操作。

安装命令:

npm i express

npm i body-parser

npm i cookie-parser

npm i multer

npm i mysql

二、功能实现-NodeJS-数据库&文件&执行

1、基本功能实现

①Express开发

a、访问file.js文件,只有代码,没有解析显示&关闭apache,文件访问不到->如何让其解析显示在网页

b、在没有apache的情况下,导入express库->搭建网站

先启动网站

通过8081端口->浏览器访问网站

c、添加路由->读取文件的命令执行->但是不会在浏览器页面显示

d、res.sen()->在浏览器显示读取到的内容

2、任意文件读取

3、目录遍历

4、数据库操作

①数据库基本连接查询操作

②配置成网站

③sql注入

3、命令执行(RCE)

三、NodeJS安全

1、SQL注入&文件操作

2、RCE执行&原型链污染

原型链污染

如果攻击者控制并修改了一个对象的原型,(__proto__)

那么将可以影响所有和这个对象来自同一个类、父祖类的对象,下图的对象foo,zoo就是来自同一个类,所以用(__proto__)修改foo的原型->导致zoob被修改

3、NodeJS黑盒无代码分析(主要关注点->可控变量是否可以通过参数构造payload)

实战测试NodeJS安全:

判断:参考前期的信息收集

黑盒:通过对各种功能和参数进行payload测试

白盒:通过对代码中写法安全进行审计分析

四、案例应用

1、CTF方向

参考:https://f1veseven.github.io/2022/04/03/ctf-nodejs-zhi-yi-xie-xiao-zhi-shi/

2、代码审计yapi:(省略:比较复杂->目前能力不足)

审计参考:https://mp.weixin.qq.com/s/mKOlTQclji-oEB5x_bMEMg

部署:https://hellosean1025.github.io/yapi/devops/index.html

Docker:

https://github.com/MyHerux/code-note/blob/master/Program/%E5%B7%A5%E5%85%B7%E7%AF%87/Yapi/%E4%BD%BF%E7%94%A8DockerCompose%E6%9E%84%E5%BB%BA%E9%83%A8%E7%BD%B2Yapi.md

3、代码审计:https://mp.weixin.qq.com/s/fe_Kp7fOUiMXLWTY1KxSqg


http://www.kler.cn/a/510928.html

相关文章:

  • ComfyUI 矩阵测试指南:用三种方法,速优项目效果
  • HTML<bdo>标签
  • JSON数据格式的序列化和反序列化jackson针对首字母小学的字段返回序列化后第2个大写字母也变成小写的问题处理
  • python(25) : 含有大模型生成的公式的文本渲染成图片并生成word文档(支持flask接口调用)
  • LINUX 内核设计于实现 阅读记录(2025.01.14)
  • 简历_使用 Redis 解决集群模式下的 Session 共享问题,使用拦截器实现用户的登录,校验和权限刷新以及对单位时间内请求频繁的用户IP地址进行限流。
  • C语言之文本加密程序设计
  • Three.js贴图加载与环境遮蔽贴图强度设置(五)
  • 【Java回顾】Day7 Java IO|分类(传输方式,数据操作)|零拷贝和NIO
  • Linux 创建用户
  • 数据结构——链表和单向链表
  • 02内存结构篇(D2_剖析运行数据区)
  • Java——Stream流的peek方法详解
  • 【opencv】第9章 直方图与匹配
  • 基于.Net Core+Vue的文件加密系统
  • MySQL 可视化工具
  • 31、【OS】【Nuttx】OSTest分析(1):stdio测试(一)
  • MySQL程序之:使用类似URI的字符串或键值对连接到服务器
  • ubuntu24.0安装JDK8-281版本
  • 【游戏设计原理】71 - 兴趣曲线
  • AIGC视频生成明星——Emu Video模型
  • 【AI | pytorch】torch.view_as_complex的使用
  • 线性代数概述
  • 基于 Spring Cloud 、Spring Boot、 OAuth2 的 RBAC 企业快速开发平台
  • JAVA:MyBatis 缓存机制详解的技术指南
  • 云计算与物联网技术的融合应用(在工业、农业、家居、医疗、环境、城市等整理较全)