当前位置:   article > 正文

文件上传漏洞技巧分享_安全测试之更改文件上传路径

安全测试之更改文件上传路径

文件上传漏洞技巧分享

测试环境:uploadlabs

过滤验证

客户端验证

即大家说的js验证,突破js验证,无非就是禁用js,抓包后修改。下面是演示过程(uploadlabs第一关):
1.看源代码可以得知,这里的js验证的是白名单。如果不禁用js,所以要上传一个白名单后缀的文件,抓包后在修改。
在这里插入图片描述
2.上传图片马haidi.jpg,抓包,修改成haidi.php,即可
在这里插入图片描述
在这里插入图片描述
上传成功,返回文件地址

服务端验证

文件后缀

  • 黑名单
    1.大小写(第六关),抓包,将‘php’修改成‘pHP’即可。
    2.加空格(第七关),抓包,在文件后缀名后加空格。
    3.符号点(第八关),抓包,在文件后缀名后加符号 . 。
    4.::$DATA(第九关),抓包,在文件后缀名后加‘::$DATA’。(这个只在windows下php才有效,如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名)
    5.组合(第十关),抓包,在文件后缀名后加‘. .’。
  • 白名单
    1.MIME,(第二关):抓包,修改’Content-Type’字段的值,如Content-Type: image/jpeg等。
    2.%00,(第十二关):php 版本 < 5.3.4且php的参数magic_quotes_gpc必须关闭。抓包修改文件保存路径,实际的效果就是服务端接收到upload/haidi.php%00(路径)haidi.jpg(文件名),会将%00后的文件名省略。
    在这里插入图片描述

3.0X00,(第十三关):同上,不同之处在于%00是GET方式,0X00是POST方式。抓包修改,路径为:upload/haidi.php+,这里要将+号,编译成十六进制的00。
在这里插入图片描述

文件内容

  • 文件头检测
    图片后门(第十四关-第十六关),都是利用相关函数来验证内容是否为图片。
  • 二次渲染
    图片后门(第十七关),下载以上传的图片,将后门代码插入到未修改的地方,网上也有相应的脚本。
  • 补充,还会验证文件内容里是否含有特殊字符,比如<?等等,这时候你要将后门代码进行变异。

<script language=‘php’>assert($_REQUEST[‘cmd’])</script>

代码逻辑

单次验证

只进行了一次验证,(第十一关),双写后缀名绕过。

条件竞争

查看源代码发现,验证方式为先上传保存,在进行验证,验证不通过再删除,(第十八关),使用burpsuite不断上传一个内容为

<?php fputs(fopen('haidi.php','w'),'<?php @eval($_POST["x"])?>');?>

的php文件,在上传的过程中不断去访问这个php文件,就会在路径下生成haidi.php的后门文件。

配合解析

解析后缀

中间件可以支持其他格式的文件解析,如Apache 能支持php5,phtml等,可在Apache httpd.conf 配置文件进行设置。(第三关),抓包,修改后缀名为“phtml”即可。

规则文件

在Apache中存在.htaccess文件,简单讲就是在改文件中可以定义将满足某种条件的文件按照你想要的后缀格式解析。(第四关)先上传.htaccess文件,.htaccess内容为:

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

在上传图片马‘haidi.jpg’,访问图片马,Apache就会以php格式来解析该图片。
启用.htaccess,需要修改httpd.conf,启用AllowOverride,并可以用AllowOverride限制特定命令的使用。如果需要使用.htaccess以外的其他文件名,可以用AccessFileName指令来改变。

解析漏洞

解析漏洞是指服务器应用程序在解析某些精心构造的后缀文件时,会将其解析成网页脚本,从而导致网站的沦陷。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/1021840
推荐阅读
相关标签
  

闽ICP备14008679号