文件上传总结(结合upload靶场)

文件上传

一、任意文件上传

概念

任意文件上传漏洞: 由于对上传文件未作过滤或过滤机制不严(文件后缀或类型) ,导致恶意用户可以上传脚本 文件,通过上传文件可达到控制网站权限的目的

危害: 攻击者可获得网站控制权限 查看、修改、删除网站数据 通过提权漏洞可获得主机权限 

webshell: 一种网页后门,以asp、 php、jsp等网页文件形式存在的一种命令执行环境 也可以将其称做为一种网页后门。 黑客在入侵了一个网站后,通常会将asp或php后门文件与 网站服务器WEB目录下正常的网页文件混在一起,然后就 可以使用浏览器来访问asp或者php后门,得到一个命令执 行环境,以达到控制网站服务器的目的。

常见文件上传点

大部分的网站和应用系统都有上传功能,如用户头像上传,图片上传,文档上传等。

所需条件

1、木马成功上传,未被杀

2、知道木马的路径在哪

3、上传的木马能正常运行

webshell

一句话木马

php:<?php @eval($_POST['密码']); ?>(POST一定要大写)

asp:   <%eval request ("pass")%>

可以用蚁剑连接

二、上传绕过(结合upload靶场)

客户端

js检查

pass-01

原理

通过检查页面源代码,发现JS脚本中,文件类型在前端也就是客户端进行了限制,只需要绕过前端的JS校验就可以直接提给后端。

 绕过方法

方法一:

首先查看服务器的允许上传类型,将一句话木马后缀改成服务器允许上传的类型

点击上传,用burpsuite抓包后,修改文件后缀名即可

方法二:

直接关闭服务器的JS服务,在浏览器设置中关闭Javascript的设置

服务端

检查后缀

黑名单
上传特殊可解析漏洞

1、MIME绕过(这是白名单,归类错了)

pass-02

上传一句话木马,会提示文件类型不正确,能抓到数据包,不是前端JS验证的问题,是服务端进行校验。

绕过方法一:

上传一张合格的图片文件,抓包 ,记录下其MIME类型,即Content-Type后内容

上传一句话木马,上传抓包,将content-type改为上记录的内容

绕过方法二:

修改一句话木马文件名为合格后缀,之后上传抓包,修改文件后缀

2、黑名单绕过

pass-03

上传图片文件,成功,上传PHP文件报错,尝试改后缀或MIME类型皆报错

后端采用了黑名单机制,只要不在黑名单中的后缀即可绕过

绕过方法:

上传一PHP文件,抓包,对文件后缀名进行爆破(intruder模块)  

找出成功的后缀名之后抓包修改即可

上传.htaccess文件

pass-04

首先,.htaccesss攻击具有局限性,黑名单中未过滤.htaccess

apache服务器配置文件httpd.conf中启用了AllowOverride All

服务端未处理文件名,即文件名不改变

首先上传照片成功,上传PHP文件报错,黑名单中限制了绝大部分的后缀文件

上传的文件名未被修改且未对.htaccess文件进行限制

.htaccess:apache服务器配置文件,负责相关网页针对每个目录下的配置,即在一个特定目录下放置一个包含指令的文件,其中的指令作用于此目录及其所有子目录。(有点文件包含的意思)

绕过方法:

上传一个.htaccess文件,文件内容为

AddType application/x-httpd-php .jpg

(将上传的文件后缀名为.jpg格式的文件以php格式来解析)

再将一句话木马上传后抓包,经后缀名改为.jpg上传,即可成功

后缀大小写、空格、点、::$DATA绕过

pass-06、pass-07、pass-08、pass-09

上传图片成功,上传PHP文件报错,前面方法都试错后,即可考虑大小写,空格,点,字符串的限制,这里是大小写未过滤

绕过方法(四个的方法一样):

上传PHP文件后抓包,修改后缀名,四个都试试,有的话即可成功上传

大小写:.Php(p,h,p三个字母有大有小即可)

空格:.php空

点:.php.

特殊字符( Win文件流特性绕过):.php::$DATA

采用Windows流特性绕过,在这里意思是php运行在Windows上时如果文件名+"::D A T A " 会 把 : : DATA"会把::DATA"会把::DATA之后的数据当作文件流处理,不会检测后缀名,且保持“::$DATA”之前的文件名,目的即使不检查后缀名

配合解析漏洞

pass-10

这里黑名单严格、删除文件名末尾点、大小写转换为小写、去除::$DATA字符、首尾去空

这里可以利用代码逻辑绕过,这里代码逻辑先删除文件名末尾点,再首尾去空都只进行一次,因此可构造点空格点绕过。利用windows特性

绕过方法:

上传PHP文件,抓包,修改文佳后缀,加上点空格点即可

双写绕过

pass-11

上传照片成功,上传PHP文件,能成功,但后缀被切掉了

根据源码分析,str_ireplace()函数将黑名单中的文件后缀名进行了替换,换为空字符(该函数不区分大小写)

绕过方法:

上传PHP文件,抓包,双写文件后缀,比如.pphhpp

白名单

%00截断GET型绕过

pass-12(条件: php版本 < 5.3.4 ; magic_quotes_gpc=Off)

上传图片成功,上传php文件,失败

查看源码

上传路径可以控制,这里可以使用%00截断

绕过方法:

上传php文件,抓包,该文件后缀为合格后缀,save_path.../upload/后缀改为.php%00,即可成功上传。

00截断POST型绕过

跟GET型类似,都是上传路径可控,且路径即可控位置在POST数据中

绕过方法:

上传你php文件,抓包,在burp的hex 请求数据中,修改php后的字节为00

检查内容

文件头检测

pass-14

上传提示图片马

源码显示制度文件前两个字节,通过对比文件头即可确定文件类型,就是文件头检测

绕过方法:

将一句话木马包含到文件中,上传图片马到目标站点下,通过文件包含漏洞执行php代码

先制作一句话木马

<?php

fputs(fopen("3.php","w"),"<?php @eval(\$_POST['duang']) ?>")

?>

在图片文件最后面加上一句话木马即可,一句话木马隐藏域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值