文件上传小结——文件上传漏洞、文件上传校验姿势、文件上传绕过、文件包含漏洞、服务器解析漏洞……

文件上传:文件上传可以与文件包含相结合

1.文件上传漏洞:

文件上传漏洞需要的前提条件

  • 能上传木马
  • 上传的木马能执行
  • 还要清楚上传后的路径

一句话木马:<?php @eval($_POST[cmd]);?>

eval  执行命令函数

思路

  • 编写一个一句话木马<?php?>
  • 上传一句话木马
  • 上菜刀

图片马制作:

  • 找个图片,用记事本打开,添加一句话
  • 在图片和一句话所处的路径下:copy 1.jpg/b+a.php/a 2.jpg

基本流程:

  • 图片是否正常上传
  • 图片上传内容是否被感染(内容替换)
  • 上传的域名是否是目标服务器

如果不是,那么判断图片服务器是否解析(php、asp、aspx、jsp、cfm、shtml等)

  • 上次的目录是否支持解析(php、asp、aspx、jsp、pht、phtml等)
  • 判断黑白名单验证

2.文件上传校验姿势

客户端:

javascript校验(一般只校验后缀名)

服务的校验:

  • 文件头content-type字段校验(image/gif)
  • 文件内容头校验(GIF89a)
  • 后缀名黑名单校验    胡写一个后缀,上传成功就是黑名单
  • 后缀名白名单校验
  • 自定义正则校验
  • WAF设备校验(根据不同的WAF产品而定)

3.文件上传绕过

客户端绕过

可以利用burp抓包改包,先上传一个gif类型的木马,然后通过burp将其改为asp/php/jsp后缀名即可

服务端绕过

  • 文件类型绕过:我们可以通过抓包,将content-type字段改为image/gif
  • 文件头绕过:在木马内容基础上再加了一些文件信息,有点像下面的结构    GIF89a<?php phpinfo();?>
  • 文件后缀名绕过

前提:黑名单校验

黑名单检测,一般有个专门的blacklist文件,里面会包含常见的危险脚本文件。

绕过方法:

  • 找黑名单扩展名的漏网之鱼-比如asa和cer之类
  • 可能存在大小写绕过漏洞-比如aSp和pHp之类

能被解析的文件扩展名列表:

jsp、jspx、jspf

asp、asa、cer、aspx

php、pht、php3、php4

4.配合文件包含漏洞

前提:校验规则只校验当文件后缀名为asp/php/jsp的文件内容是否为木马。

绕过方式:(这里拿php为例,此漏洞主要存在于PHP中)

  • 先上传一个内容为木马的txt后缀文件,因为后缀名的关系没有校验内容;
  • 然后再上传一个.php的文件,内容为<?php include(“上传的txt文件路径”);?>
  • 此时,这个php文件就会去引用txt文件的内容,从而绕过校验。

5.配合服务器解析漏洞

IIS解析漏洞

  • 使用iis5.x-6.x版本的服务器,大多为windows server 2003,网站比较古老,开发语句一般为asp; 该解析漏洞也只能解析asp文件,而不能解析aspx文件
  • 目录解析(6.0)
  • 形式:www.xxx.com/xx.asp/xx.jpg
  • 原理:服务器默认会把.asp,.asa目录下的文件都解析成asp文件

文件解析漏洞

  • 形式:www.xxx.com/xx.asp;.jpg
  • 原理:服务器默认不解析;号后面的内容,因此xx.asp;.jpg便被解析成了asp文件
  • 解析文件类型:

IIS6.0默认的可执行文件除了asp还包含这三种:

/test.asa

/test.cer

/test.cdx

apache解析漏洞

漏洞原理:

apache解析文件的规则是从右往左开始判断解析,如果后缀名为不可识别文件解析,就再往左判断。

比如test.php.owf.rar “.owf”和”.rar”这两种后缀是apache不可识别解析,apache就会把wooyun.php.owf.rar解析成php

漏洞形式:

www.xxxx.xxx.com/test.php.php123

其余配置问题导致漏洞:

如果在apache的conf里有这样一行配置addhandler php5-script.php这时只要文件名里包含.php即使文件名是test2.php.jpg也会以php来执行

如果在apache的conf里有这样一行配置AddType application/x-httpd-php.jpg即使扩展名是jpg,一样能以php方式执行

6.配合操作系统文件命令规则

上传不符合windows文件命名规则的文件名

  • test.asp
  • test.asp(空格)
  • test.php:1.jpg
  • test.php::$DATA
  • shell.php::$DATA.......

会被windows系统自动去掉不符合规则符号后面的内容

7.CMS、编辑器漏洞

  • CMS漏洞:比如说JCMS等存在的漏洞,可以针对不同CMS存在的上传漏洞进行绕过
  • 编辑器漏洞:比如FCK,ewebeditor等,可以针对编辑器的漏洞进行绕过

8.配合其他规则

00截断:00之后的东西都截掉

  • 0x00截断:基于一个组合逻辑漏洞造成的,通常存在于构造上传文件路径的时候,路径/upload/1.php(0x00),文件名1.jpg,结合/upload/1.php(0x00)/1.jpg
  • .htaccess

上传当前目录的.htaccess文件

内容为:AddType application/x-http-php.jpg(上传的jpg均以php执行)

另一种写法是:

<FilesMatch “shell.jpg”>

SetHandler application/x-httpd-php

</FilesMatch>

把.htaccess上传后,且上传成功后,再上传内容为一句话的jpg文件,会把jpg文件解析为php文件

发布了103 篇原创文章 · 获赞 26 · 访问量 6160

猜你喜欢

转载自blog.csdn.net/qq_41210745/article/details/103343923