文章上传漏洞绕过方式(以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漏洞

  • 18
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件上传漏洞是指攻击者通过上传恶意文件的方式绕过应用程序的安全机制,将恶意文件上传到服务器上,从而实现攻击目的。常见的文件上传漏洞绕过方式包括以下几种: 1. 修改文件类型:攻击者可以修改上传文件的文件类型,将恶意文件伪装成常见文件类型,绕过检测机制。 2. 绕过文件类型检测:上传文件时,应用程序会检测文件类型,如果上传的文件类型不符合要求,则会拒绝上传。攻击者可以通过修改 HTTP 头部信息或者使用特殊字符等方式绕过文件类型检测。 3. 绕过文件大小限制:应用程序通常会限制上传文件的大小,攻击者可以通过分割文件、压缩文件等方式绕过文件大小限制。 4. 绕过文件路径检测:应用程序会检测上传文件的路径,如果路径不符合要求,则会拒绝上传。攻击者可以通过构造特殊的路径,绕过文件路径检测。 5. 绕过文件名检测:应用程序会检测上传文件的文件名,如果文件名不符合要求,则会拒绝上传。攻击者可以通过构造特殊的文件名,绕过文件名检测。 为了避免文件上传漏洞的攻击,应用程序开发人员可以采取以下措施: 1. 对上传文件进行严格的类型、大小、路径、文件名检测,确保上传的文件符合要求。 2. 对上传文件进行病毒扫描和安全检测,确保上传的文件不包含恶意代码。 3. 限制上传文件的存储路径,确保上传的文件不会对系统造成危害。 4. 对上传文件进行权限控制,确保只有授权的用户才能访问上传的文件。 5. 定期更新应用程序和服务器的安全补丁,确保系统处于最新的安全状态。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值