WEB代码审计

1.绝对路径拼接漏洞

os.path.join(path,*paths)函数用于将多个文件路径连接成一个组合的路径。第一个函数通常包含了基础路径,而之后的每个参数被当作组件拼接到基础路径之后。

然而,这个函数有一个少有人知的特性,如果拼接的某个路径以 / 开头,那么包括基础路径在内的所有前缀路径都将被删除,该路径将视为绝对路径

python 复制代码
import os
 
print("1:",os.path.join('aaaa','/bbbb','ccccc.txt'))
 
print("2:",os.path.join('/aaaa','/bbbb','/ccccc.txt'))
 
print("3:",os.path.join('aaaa','ddd','./bbb','ccccc.txt'))

从后往前看,会从第一个以"/"开头的参数开始拼接,之前的参数全部丢弃;

以上一种情况为先。在上一种情况确保情况下,若出现"./"开头的参数,会从"./"开头的参数的前面参数全部保留; 输出:

Kotlin 复制代码
1: /bbbb\ccccc.txt
2: /ccccc.txt
3: aaaa\ddd\./bbb\ccccc.txt
相关推荐
小小龙学IT8 分钟前
Nginx 开源 Web 服务器与反向代理深度解
前端·nginx·开源
水饺编程9 分钟前
第2章:Linux 基础,mkdir 命令的简单入门
linux·c语言·汇编
自变量yjs14 分钟前
Linux --- 线程控制
linux·运维·服务器
鶴哥只手遮天22 分钟前
Vue 3 核心源码深度剖析系列(v3.5.44)-第 2 章 响应式内幕(一):`effect` 与依赖追踪机制
前端·vue.js·开源
鶴哥只手遮天23 分钟前
Vue 3 核心源码深度剖析系列(v3.5.44)-第 06 章 编译器内幕(二):`transform` 管线与结构指令
前端·vue.js·开源
鶴哥只手遮天25 分钟前
Vue 3 核心源码深度剖析系列(v3.5.44)-第 09 章 编译器内幕(五):compiler-sfc的SFC解析与<script setup> 编译
前端·vue.js·开源
码银27 分钟前
【web】基于HTML/CSS,JavaScript + Three.js做3D流程图
前端·css·html
鶴哥只手遮天27 分钟前
Vue 3 核心源码深度剖析系列(v3.5.44)-第 17 章 运行时内幕(五):`runtime-dom`、自定义元素与内置组件
前端·vue.js·开源
鶴哥只手遮天27 分钟前
Vue 3 核心源码深度剖析系列(v3.5.44)-第 13 章 运行时组件系统:实例、props、emit、slots 与生命周期
前端·vue.js·开源
陌上花开缓缓归以28 分钟前
linux 内核4.4 内存分配使用分析
linux·运维·服务器