我是靠谱客的博主 冷酷火,最近开发中收集的这篇文章主要介绍文章上传漏洞绕过方式(以php语言为例),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一,文件上传漏洞原因

由于网站要求,需要用户上传文件,图片,例如头像,保存简单文件上传下载,访问,如果我们将文件上传至web服务器上,并且可以访问到,那么就可以利用小马,对服务器进行操作,或者了解一些信息。因此在上传位置,代码会对上传文件进行检查,但不免会有漏洞,通过代码审计,可以得出网页漏洞。

二,文件上传漏洞绕过方式

  1. 前端验证绕过
    前端认证最容易绕过,我们将验证代码部份删除,或者将js函数返回值设为1,无论上传什么文件,都是满足的文件就可以上传了。或者看浏览器接受了那些js文件,在js中寻找验证函数,利用工具修改接受的js文件。方法很多,只要上传给服务器就可以了

  2. content-type绕过
    文件上传后,根据文件后缀得到文件类型,我们上传小马时,利用抓包软件将报文中 content-type的值改为图片类型,就可以正常上传了。

  3. phtml绕过
    虽然代码设置黑名单拒绝上传php文件,但是在.apache配件文件中,上传phtml后缀格式,会以php方式执行,所以,我们上传phtml文件也可以执行。在上传时,利用工具,将apache文件加前加一个点。

  4. htacess配置文件绕过
    在.htaccess中,可以改变文件解析扩展名,所以当我们上传图片后,可以获取图片名称,将.htaccess文件上穿传,格式为:

<FilesMatch "phpinfo.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
#phpinfo.jpg中直接写
<?php phpinfo(); ?>

这样我们就可以将phpinfo.jpg文件以php方式打开,实现webshell。只针对上传目录,对其他地方不起效果。

  1. 大小写(黑名单)绕过
    在上传时采用黑名单方式,但是没有将上传文件后缀大小写统一,所以我们只需上传XXX.PHp,之类的文件,便可绕过。

  2. 后缀加字符绕过
    同样是黑名单方式,代码中没有将空格进行删除,检查时后台连同空格一起检查,可以骗过,而且在windows系统下,保存文件时,后面得到空格自动消失,正好保存php文件。
    同理,我们也可以加点绕过,或者加::$DATA。需要不断的尝试,因为不知道后台把哪一种屏蔽了,一般网页全部都屏蔽了。

  3. 双写绕过
    在代码审计时,发现只要传入php语句都将替换为空白,所以我们可以将PHP语句进行双写,例如: <?p**php**hp p**php**hpinfo(); ?>
    将其中的php替换为空白就会变成 <?php phpinfo(); ?>
    但是有些会将php替换为ph_p,这样我们可以利用大小写,或者转义,方式后台无法查到。

  4. 00截断绕过
    (1)在url中%00就表示读取结束,利用工具,我们将文件上传时写成phpinfo.php%00.jpg,后缀满足规则,但是在保存时就会变成phpinfo.php。
    当路径可控时,我们也可以直接上传带有php语言的图片,将路径改为phpinfo.php%00.jpg,最后访问phpinfo.php即可。
    (2)一些网站上传时可以对上传名进行命名,我们同样可以利用00截断将jpg放在%00后面,最后生成php文件。

  5. 图片木马绕过
    当读取图片时,在图片第一行会显示图片类型,例如:GIF 89A
    当我们php文件中写成:

GIF 89A
<?PHP phpinfo();?>

我们就可以上传php文件

  1. 利用文件包含漏洞
    (1)当只能上传jpg文件时,发现网站有include函数,将文件读出,我们把木马以jpg形式上传,但是利用文件包含漏洞,使包含我们上传的jpg,最后读出我们所需要的信息。
    注意在合成特殊图片使,要使用没有影响的图片。利用抓包软件尽量把上传的php修改成jpg的样子,方法在上面都以写出。
    (2)如果后台对文件内容进行查看,我们可以将图像二次渲染,将普通图片上传,再下载,看图片被服务器进行那些修改,利用工具对比上传前后的图片,将没有被后台修改的地方插入代码,再进行上传。需要大量的尝试,才能找到合适的图片。

  2. 条件竞争绕过
    服务器对文件进行检测,如果不符合则删除文件,这其中需要一些时间,我们可以利用这个时间差进行上传木马,要求服务器接收到文件不会重命名。
    我们将上传的文件写为:

    <?php fputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
    

    当我们访问到这个文件时,文件会生成一个一句话木马文件,但是服务器端不会知道,他只知道我们上传的文件是恶意的。利用工具,不断访问我们上传的文件,并且不断的上传文件,总会有一个文件被我们访问到,只要访问到我们就会生成木马文件。
    同理,如果有文件解析漏洞同意也可以进行这样的方式。

三,总结
文件上传时一种常见的功能,特别的用户头像,当web提供的功能越多,漏洞也相应的提高,我们应加强对上传的文件进行校验,虽然利用了一些服务器性能,但相比服务器安全来说是值得的,我们不能让用户随便上传文件。
没有对后缀严格校验,文件权限没有定义,保存文件时没有重命名,设置黑名单没有白名单,未检测文件内容,含有文件包含漏洞,没有及时跟新web服务……虽然这不影响功能,但都可以产生文件上传漏洞,导致服务器被控制,

然鹅,这些漏洞在常见网站中很少存在。

请给我一个0day漏洞

最后

以上就是冷酷火为你收集整理的文章上传漏洞绕过方式(以php语言为例)的全部内容,希望文章能够帮你解决文章上传漏洞绕过方式(以php语言为例)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部