How_to_use_tar
How_to_use_tar
1azy_fish.before all
在安全中,通过压缩包我们可以实现什么呢?
实现文件穿越目录覆盖
how_to_use
1 | #Python/3.11.1 |
tar解压目录穿越
tar 命令可以在打包的时候把路径也打包进去
那么 对于解压 是不是也可以指定目录解压?(目录穿越)
我在自己的主机上执行:
1 | tar -cPzvf end.tar.gz xxx/../../../var/www/html/xxx.xxx |
此时在本机生成了自己的end.tar.gz压缩文件
当在其他机器上解压此文件 会不会在/var/www/html/目录下生成xxx.xxx呢?
经过测试,很多场景都存在这种情况
Java:Java.util.zip
、zt-zip
1 | package zip; |
1 | //zt-zip组件中的解压功能,是在原生的java.util.zip基础上进行的封装。 |
GUN:GNU tar 解压路径绕过漏洞(CVE-2016-6321) 分析
除此之外还有……
示例题目:[NSSRound#7 Team]新的博客
https://blog.csdn.net/qq_64201116/article/details/128922324#t3
什么是软链接
软链接(Symbolic Link)是计算机文件系统中的一种特殊文件类型,它创建了一个指向另一个文件或目录的符号链接。与硬链接不同,软链接不包含指向文件数据的实际内容,而只是指向文件或目录的路径。
软链接允许用户创建一个指向文件系统中任意位置的链接,即使目标文件在不同的文件系统上也可以。它们通常用于简化文件系统的组织、提供便捷的访问方式或者在不同目录之间共享文件。
软链接的特点包括:
- 指向路径:软链接包含的是目标文件或目录的路径,而不是实际内容。
- 可移植性:软链接可以跨越不同的文件系统,因为它们只是包含路径的引用。
- 符号标记:软链接在文件系统中用特殊的符号标记表示,通常在大多数操作系统中是一个箭头或者是特殊的标识。
软链接的创建和使用通常由操作系统提供的特定命令完成,比如在Unix/Linux系统中,常用的软链接创建命令是ln -s
。
你可以简单理解为Windows中的快捷方式。
特定目录访问实现RCE
怎么利用呢?
一般来说:
- 构造软链接:攻击者创建一个软链接,将上传的文件或者上传文件的目录指向目标系统中的一个敏感目录,比如网站根目录。这通常可以通过命令行工具如
ln -s
来完成。 - 创建恶意文件:攻击者准备一个恶意文件,比如包含后门或者恶意代码的 PHP 文件。这个文件将被放置在目标系统中通过软链接指向的敏感目录中。
- 压缩文件:攻击者将构造好的软链接以及恶意文件压缩成一个 ZIP 文件,确保软链接被正确地包含在压缩文件中。在压缩时,需要确保软链接被正确处理,通常需要使用压缩工具的特定选项(比如
--symlinks
)。 - 上传压缩文件:攻击者通过目标系统的文件上传功能,上传构造好的 ZIP 文件。上传成功后,目标系统会将 ZIP 文件解压并将其中的文件放置到指定目录。
- 触发漏洞:由于目标系统在解压时会按照软链接指向的位置进行文件放置,恶意文件会被放置在目标系统的敏感目录中。攻击者通过上传的恶意文件,触发了目标系统的安全漏洞。
示例题目:【CISCN2023】unzip
【CISCN2023】unzip 详解 - gxngxngxn - 博客园 (cnblogs.com)
其他利用方式???
php利用:一个有趣的任意文件读取 - 先知社区 (aliyun.com)
附录:tar的一些使用方式
tar命令的使用
tar
命令是一个在类 Unix 系统中用于创建归档文件(也称为 tarball)以及从归档文件中提取文件的工具。它通常与压缩程序(如 gzip 或 bzip2)结合使用以创建压缩的归档文件。下面是tar
命令的一些常用使用方式:创建归档文件:
1 tar -cvf archive.tar file1 file2 directory
-c
:创建归档文件。-v
:在终端显示详细信息。-f archive.tar
:指定归档文件的名称为archive.tar
。file1 file2 directory
:要添加到归档文件中的文件或目录的列表。提取归档文件:
1 tar -xvf archive.tar
-x
:提取归档文件中的内容。-v
:在终端显示详细信息。-f archive.tar
:指定要提取的归档文件为archive.tar
。创建压缩的归档文件:
1 tar -cvzf archive.tar.gz file1 file2 directory
-z
:使用 gzip 进行压缩。archive.tar.gz
:指定归档文件的名称为archive.tar.gz
。提取压缩的归档文件:
1 tar -xzvf archive.tar.gz
-x
:提取归档文件中的内容。-z
:使用 gzip 进行解压缩。-f archive.tar.gz
:指定要提取的压缩归档文件为archive.tar.gz
。查看归档文件内容:
1 tar -tvf archive.tar
-t
:列出归档文件中的内容。当然可以!除了基本的创建、提取和压缩归档文件外,
tar
命令还有许多其他选项和用法,如下所示:向归档文件中添加文件:
1 tar -rvf archive.tar newfile
-r
:向归档文件中追加文件。newfile
:要添加到归档文件中的新文件。提取指定目录下的文件:
1 tar -xvf archive.tar directory/file
directory/file
:只提取归档文件中指定目录下的文件。指定归档文件中文件的存储路径:
1 tar -C /path/to/directory -xvf archive.tar
-C /path/to/directory
:指定提取文件时的存储路径。列出归档文件中的内容并显示详细信息:
1 tar -tvf archive.tar只列出归档文件中的文件名:
1 tar -tf archive.tar压缩文件时排除某些文件或目录:
1 tar --exclude='file1' --exclude='directory2' -cvzf archive.tar.gz directory
--exclude='file1'
:排除文件file1
。--exclude='directory2'
:排除目录directory2
。directory
:要压缩的目录。使用其他压缩程序进行压缩:
1 tar -cvjf archive.tar.bz2 file1 file2
-j
:使用 bzip2 进行压缩。使用文件列表创建归档文件:
1 tar -cvf archive.tar -T filelist.txt
-T filelist.txt
:从文件filelist.txt
中读取文件列表。