【网络安全之文件上传漏洞详解】(1)

文章讲述了如何通过修改路径值、利用黑名单和.htaccess绕过服务端限制,进行文件上传并利用文件头检测、内容检测以及IIS解析漏洞进行攻击。还介绍了二次渲染和IIS7.x的Fast-CGI解析机制。此外,文中还提供了网络安全学习资源和系统化的学习路径.
摘要由CSDN通过智能技术生成

修改路径值,添加%00,然后提交。

2.3黑名单

与白名单相反,通过限制某些文件格式,使其无法上传之服务端。

绕过

.HTACCESS绕过:

只存在于APACHE中

主要功能:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。

简而言之,在httpd.conf文件中有对文件上传的过滤规则,我们通过给目目录下上传一个重新定义解析规则的.htaccess文件,此时生效的过滤规则就会替换原来http.conf中的规则。

例4:

1.上传一个.htaccess文件

文件内容为:将xxx.jpg文件解析为PHP

<FilesMatch "xxx.jpg">   
        SetHandler application/x-httpd-php
</FilesMatch>

2.然后创建xxx.jpg文件插入一句话木马,然后访问图片链接。

::$DATA绕过:

在 Windows 操作系统中,:: D A T A 是一种用于隐藏文件的特殊附加数据流,如果文件名 + : : DATA 是一种用于隐藏文件的特殊附加数据流,如果文件名+:: DATA是一种用于隐藏文件的特殊附加数据流,如果文件名+::DATA会把:: D A T A 之后的数据当成文件流处理 , 不会检测后缀名,且保持 : : DATA之后的数据当成文件流处理,不会检测后缀名,且保持:: DATA之后的数据当成文件流处理,不会检测后缀名,且保持::DATA之前的文件名,他的目的就是不检查后缀名。

2.4内容检测

文件头完整性检测:

文件头是文件开头的一段二进制代码,不同的文件其文件头类型也不同,可以用NotPad++查看。

  • GIF:47494638
  • JPG:FFD8FF
  • PNG:89504E47

在安全测试中不但可以对文件后缀格式进行检测,还可以对文件头部完整性检测,防止恶意文件上传。

例5:

由源码可知,此关卡对文件头部做了检测;并且题目已经提示使用文件包含漏洞。

function getReailFileType($filename){
    $file = fopen($filename, "rb");
    $bin = fread($file, 2); //只读2字节
    fclose($file);
    $strInfo = @unpack("C2chars", $bin);    
    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);    
    $fileType = '';    
    switch($typeCode){      
        case 255216:            
            $fileType = 'jpg';
            break;
        case 13780:            
            $fileType = 'png';
            break;        
        case 7173:            
            $fileType = 'gif';
            break;
        default:            
            $fileType = 'unknown';
        }    
        return $fileType;
}

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $file_type = getReailFileType($temp_file);

    if($file_type == 'unknown'){
        $msg = "文件未知,上传失败!";
    }else{
        $img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".".$file_type;
        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传出错!";
        }
    }
}

首先创建两个文件,一个是正常的xxx.png文件

一个是一句话木马,起名为1.php

<?php
     phpinfo();
?>

然后执行命令,将这两个文件合并到一个x.png文件中

 cmd /c 'copy xxx.png /b + 1.php /a x.png'

最后上传文件,利用文件包含漏洞执行图片木马,访问靶场提供的include.php文件路径,还有上传文件时burp抓包返回的更改后的图片路径,直接访问即可。

http://127.0.0.1/include.php?file=./upload/9720240114202606.png

二次渲染:

原理:

第一次上传一个包含木马的图片,服务器检测到木马后会对图片进行渲染,我们将渲染过的图片下载下来,与之前的图片对比会得出有问题但被系统渲染过的一部分和被系统认为不存在木马的一部分。然后再将认为没问题的地方放入木马,再上传时程序依然会认为那里还是没有问题,这样就能够达到绕过渲染的目的。

操作步骤跟上图一样。

2.5中间件解析漏洞

IIS解析漏洞:

1.目录解析

在以. asp文件名的文件夹下的任何文件都将作为asp文件执行。

2.文件解析

如果文件命名为1.asp;.jpg,因为IIS不解析;后面的内容,因此就会把文件当作1.asp进行解析。

修复建议:

  • 限制上传目录的执行权限,不允许执行脚本。
  • 不允许创建目录。
  • 上传的文件进行重命名。

注:以上漏洞只存在与IIS的5.x/6.x版本。

IIS 7.x版本

如果将Fast-CGI开启,当看到不认识的文件后缀时,上传文件会被从右到左依次解析,直到能解析成功为止。例如上传一个/x.jpg/x.php文件,会被直接当做x.php执行。

利用方法:

1.将IIS中的php.ini文件里的cgi.cgi_pathinfo改为1

cgi.cgi_pathinfo=1

2.制作图片马,将含有后门代码的文件写入到正常文件中

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

网络安全面试题

绿盟护网行动

还有大家最喜欢的黑客技术

网络安全源码合集+工具包

所有资料共282G,朋友们如果有需要全套《网络安全入门+黑客进阶学习资源包》,可以扫描下方二维码领取(如遇扫码问题,可以在评论区留言领取哦)~

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值