路径遍历:ZIP条目覆盖

程序在解压zip文件时,如果没有验证zip条目,攻击者可能对条目覆盖,从而造成路径遍历

例如:以下代码示例解压zip文件。
    static final int BUFFER = 512;
    // . ..
    BufferedOutputStream dest = null;
    FileInputStream fis = new FileInputStream(filename);
    ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
    ZipEntry entry;
    while ((entry = zis.getNextEntry()) != null) {
        System.out.println("Extracting: " + entry);
        int count;
        byte data[] = new byte[BUFFER];
        String fileName = entry.getName();
        if (entry.isDirectory()){
            new File(fileName ).mkdir();
            continue;
        }
        // write the files to the disk
        FileOutputStream fos = new FileOutputStream(fileName );
        dest = new BufferedOutputStream(fos, BUFFER);
        while ((count = zis.read(data, 0, BUFFER)) != -1) {
            dest.write(data, 0, count);
        }
        dest.flush();
        dest.close();
    }
     ...
    zis.close();
    代码示例未验证zipEntry.getName(),如果zip文件放在/tmp/目录中,zip条目为../etc/hosts,且应用程序在必要的权限下运行,则会导致系统的hosts文件被覆盖。

原文地址:https://www.cnblogs.com/jinqi520/p/9391596.html

时间: 2024-11-09 04:01:55

路径遍历:ZIP条目覆盖的相关文章

CTF--HTTP服务--路径遍历(提升root用户权限)

开门见山 1. 在上次实验取的靶机低用户权限,查看该系统的内核版本 2. 查看该系统的发行版本 3. 查看该内核版本是否存在内核溢出漏洞,并没有 如果有内核溢出漏洞,则可以 4. 在靶机查看/etc/passed文件 5. 查看/etc/shadow文件,并无权限查看 6. 查看靶机时候具有可写权限的文件,并无可写文件 7. 尝试弱口令登陆 8. 探测敏感文件 9. 查看wordpress文件夹中的文件 10. 查看wp-config.php文件的内容,发现密码:sWfCsfJSPV9H3AmQ

5 X 5 方阵引出的寻路算法 之 路径遍历(完结)

??此篇文章源自对一个有趣问题的思考,在我的另一篇博文<一个有趣的 5 X 5 方阵一笔画问题>中有详细介绍.在已知其结论的情况下,作为程序员的我,还是想利用该问题当做出发点,写一个可以遍历所有"可能路线"的寻路算法,当做学习"图"相关算法的练习.如果对那个原始问题有兴趣,点击上面的文章链接,出门右转便是. 一.问题回顾 ??还是要简单描述一下问题:有一个 5 X 5 的点方阵,如下图,要想用一笔画将所有的蓝色点连起来,是否有可行路线.需要满足3点要求:

CTF--HTTP服务--路径遍历(拿到www-data用户权限)

开门见山 1. 扫描靶机ip,发现PCS 172.18.4.20 2. 用nmap扫描靶机开放服务及版本 3. 再扫描靶机的全部信息 4. 用nikto工具探测http服务敏感信息 5. 用dirb工具探测http服务敏感信息 6. 打开敏感页面进行查看 7. 使用OWASP-ZAP工具对网站进行扫描,发现一个目录遍历漏洞 8. 打开网页查看,/etc/passwd文件信息 9. 用弱口令进行尝试登录 10. 查看shell拷贝到桌面 11. 查看并修改webshell内容 12. 进行上传sh

vc复制文件夹实现(可以复制三层路径)以及zip压缩实现

#include <boost\filesystem.hpp> #include <KHAboutLocalEnvirTool.h> #include <string> #include "XZip.h" //复制文件夹实现 void copy_all_file(LPCSTR file_path, std_string &backup_path) //第一个参数为被复制文件,第二个是复制到的地址 { if(!(boost::filesyste

二叉树、多叉树子路径遍历

1 /// <summary>  2     /// 二叉树  3     /// </summary>  4     /// <typeparam name="T"></typeparam>  5     class Road<T>  6     {  7         T data;  8         Road<T> Lnode, rnode, pnode;  9         public T Dat

WEB渗透技术之浅析路径遍历

1. 发送 http://www.nuanyue.com/getfile=image.jgp 当服务器处理传送过来的image.jpg文件名后,Web应用程序即会自动添加完整路径,形如“d://site/images/image.jpg”,将读取的内容返回给访问者. 2.参考 http://www.unjs.com/ziliaoku/dn/198454.html

python新手灰帽脚本练习---文件路径遍历收集

总体思路: os.path.abspath('.')      #获取当前路径 os.listdir                    #获取指定的文件夹包含的文件或文件夹的名字的列表 os.path.join                #用获取的文件名拼接路径 os.path.isdir               #判断路径是否为目录,用于递归 1 # -*- coding:utf-8 -*- 2 3 __author__='Dou-wei' 4 5 import os 6 impo

sys添加调用模块的路径;遍历可以调用模块的路径

1 import sys 2 sys.path.append("D:") 3 for i in sys.path: 4 print(i)

文件路径遍历

private void DeeperDirectory(string path) { FileSystemInfo[] fsi = new DirectoryInfo(path).GetFileSystemInfos(); foreach (FileSystemInfo item in fsi) { if (item is DirectoryInfo) { //do somethings //目录 DeeperDirectory(item.FullName); } else { //文件 //