pikachu靶场-Unsafe Filedownload/Fileupload不安全文件的下载和上传漏洞

一、不安全文件的下载

1.概念

 

不安全的文件下载概述
文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。
此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息(密码文件、源代码等)被下载。
所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。 切记:所有与前端交互的数据都是不安全的,不能掉以轻心!
你可以通过“Unsafe file download”对应的测试栏目,来进一步的了解该漏洞。

2.Unsafe Filedownload

我们在超链接名字处右键选择在新的标签页中打开

观察源码发现没有进行任何安全防护,直接将get到的字符串拼接进行下载

我们来构造一个url下载文件

../../../password.txt

其实这是我自己建立的一个文件,为了方便演示所以选择下载它。

二、不安全文件的上传

1.概念

不安全的文件上传漏洞概述
文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。
所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
--验证文件类型、后缀名、大小;
--验证文件的上传方式;
--对文件进行一定复杂的重命名;
--不要暴露文件上传后的路径;
--等等...

2.客户端绕过client check

<script>
    function checkFileExt(filename)
    {
        var flag = false; //状态
        var arr = ["jpg","png","gif"];
        //取出上传文件的扩展名
        var index = filename.lastIndexOf(".");
        var ext = filename.substr(index+1);
        //比较
        for(var i=0;i<arr.length;i++)
        {
            if(ext == arr[i])
            {
                flag = true; //一旦找到合适的,立即退出循环
                break;
            }
        }
        //条件判断
        if(!flag)
        {
            alert("上传的文件不符合要求,请重新选择!");
            location.reload(true);
        }
    }
</script>

  这里的checkFileExt()就是判断上传的文件是否是图片的格式,如果不是则弹出对话框。

我们利用审查元素将其删除掉

然后上传我们的一句话木马文件

然后我们就可以利用菜刀或者构造url来进行连接了

url示例:

http://127.0.0.1/pikachu-master/vul/unsafeupload/uploads/yijuhua.php/?czs=ipconfig

3.服务端MIME type

if(isset($_POST[‘submit‘])){
//     var_dump($_FILES);
    $mime=array(‘image/jpg‘,‘image/jpeg‘,‘image/png‘);//指定MIME类型,这里只是对MIME类型做了判断。
    $save_path=‘uploads‘;//指定在当前目录建立一个目录
    $upload=upload_sick(‘uploadfile‘,$mime,$save_path);//调用函数
    if($upload[‘return‘]){
        $html.="<p class=‘notice‘>文件上传成功</p><p class=‘notice‘>文件保存的路径为:{$upload[‘new_path‘]}</p>";
    }else{
        $html.="<p class=notice>{$upload[‘error‘]}</p>";
    }
}

  

上传正确格式的文件,利用burpsuite抓包

上传一句话木马

我们看文件,发现一句话木马已经上传成功了

然后我们可以利用菜刀或者URL进行连接了。

http://192.168.233.138/pikachu-master/vul/unsafeupload/uploads/1.php/?czs=ipconfig

4.getimagesize

Getimagesize()返回结果中有文件大小和文件类型,如果用这个函数来获取类型,从而判断是否是图片的话,会存在问题。

后台会根据上传的图片的16进制格式的前几位进行对比,前几位是固定的 符合才是真的图片,png:8950 4e47

我们准备一张正常的图片和一个含有恶意代码的php文件

在cmd下输入一段命令

copy /b 1.png+1.php yi.png

制作好之后就可以成功的上传返回路径

http://localhost/pikachu-master/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2020/03/31/5349015e830f4b00004846209034.png&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

原文地址:https://www.cnblogs.com/c1047509362/p/12635250.html

时间: 2024-10-07 23:03:27

pikachu靶场-Unsafe Filedownload/Fileupload不安全文件的下载和上传漏洞的相关文章

浅谈文件解析及上传漏洞

中国菜刀 在web渗透中,我最期待两种漏洞,一种是任意命令执行漏洞,如struct2漏洞等:另一种是文件上传漏洞,因为这两种漏洞都是获取服务器权限最快最直接的方法.而对于任意命令执行漏洞,如果是通过内网映射出来的,那么可能还需要使用不同的手段进行木马文件上传,从而获取webshell,通过webshell进行端口转发或者权限提升.    本文主要是介绍文件上传中的个人利用技巧经验汇总,讲解分为两部分:一部份是文件解析漏洞,另一部份是文件上传漏洞. 文件解析漏洞 解析漏洞主要是一些特殊文件被iis

在XShell中使用sz和rz命令下载和上传文件

输入命令:sz filename 回车后弹出一个"浏览文件夹"对话框中,选择保存目录 END 使用rz上传文件 输入命令: rz 回车后弹出一个对话框,选择一个或多个文件,选择"打开" 3 上传到服务器的路径为当前执行rz命令的目录,输入命令: dir 查看上传的文件 END

ansible 通过网络下载和上传文件

1.通过http下载文件,并且不验证证书 - name: download files by https get_url: url: https://robin.org.cn/test.zip dest: /appvol/ansible-test/ validate_certs: no 2. 原文地址:https://www.cnblogs.com/lihuanhuan/p/10957931.html

基于uploadify.js实现多文件上传和上传进度条的显示

uploadify是JQuery的一个插件,主要实现文件的异步上传功能,可以自定义文件大小限制.文件类型.是否自动上传等属性,可以显示上传的进度条.官网地址是http://www.uploadify.com/,进入官网首页(不截图了,其实也没啥看的),可以看到uploadify的标语"Upload files like magic",意思是说使用uploadify上传文件如魔法一般.目前一共分为两个版本,Flash版和HTML5版,不过HTML5版是收费的,如图: 这里我们下载Flas

[Plugin] WEB版一次选择多个文件进行批量上传(swfupload)的解决方案

URL:http://www.cnblogs.com/chillsrc/archive/2010/02/21/1670594.html 说明:功能完全支持ie和firefox浏览器! 一般的WEB方式文件上传只能使用FileUpload控件进行一个文件一个文件的进行上传,就算是批量上传,也要把文件一个一个的添加到页面,无法如 windows程序一样,一次选择多个文件进行批量上传.这样在某些应用上就显得很不人性化,有时候客户希望能够一次选择很多文件,然后让系统把选择的文 件全部上传. 这里,就将针

阻止文件不被上传到iCloud-b

有空用下 http://www.cocoachina.com/bbs/read.php?tid=86244 http://www.ooso.net/archives/617 http://blog.csdn.net/theonezh/article/details/7711749 https://gist.github.com/4527957 如何阻止文件被iTunes和iCloud同步 How do I prevent files from being backed up to iCloud

【Web安全】文件上传漏洞原理分析

0x01 文件上传漏洞简介 为了让用户将文件上传到网站,就像是给危机服务器的恶意用户打开了另一扇门.即便如此,在今天的现代互联网的Web应用程序,它是一种常见的要求,因为它有助于提高业务效率.企业支持门户,给用户各企业员工有效地共享文件.允许用户上传图片,视频,头像和许多其他类型的文件.向用户提供的功能越多,Web应用受到攻击的风险和机会就越大,这种功能会被恶意用户利用,获得到一个特定网站的权限,或危及服务器的可能性是非常高的.上传文件本身没有错,问题与漏洞在于服务器怎么处理上传的文件. 0x0

百度云盘上传文件和下载文件慢的解决办法

百度云盘上传文件和下载文件慢的解决办法 一:上传文件慢 1. 左下角点击搜索,输入cmd,右键以管理员身份运行 2. 在弹出的窗口中输入netsh interface tcp set global autotuning=disabled,回车可看到确定,代表执行成功.再继续在命令行中输入regedit,回车即打开注册表编辑器. 3. 进入注册表界面 路径:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\AFD,找到文件名为Parameters的文

pikachu靶场-File Inclusion(文件包含漏洞)

一.概述 文件包含,是一个功能.在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件. 比如 在PHP中,提供了: include(),include_once() require(),require_once() 这些文件包含函数,这些函数在代码设计中被经常使用到. 大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题. 但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,