1.描述
文件上传漏洞是指由于程序员未对上传的文件进行严格的验证和过滤,而导致的用户可以越过其本身权限向服务器上传可执行的动态脚本文件。如常见的头像上传,图片上传,oa 办公文件上传,媒体上传,允许用户上传文件,如果过滤不严格,恶意用户利用文件上传漏洞,上传有害的可以执行脚本文件到服务器中,可以获取服务器的权限,或进一步危害服务器
2.危害
非法用户可以上传的恶意文件控制整个网站,甚至是控制服务器,这个恶意脚本文件,又被称为 webshell,上传 webshell 后门 很方便地查看服务器信息,查看目录,执行系统命令等。
3.有关文件上传的知识
文件上传的过程
客户端 选择发送的文件->服务器接收->网站程序判断->临时文件->移动到指定的路径,服务器 接收的资源程序,服务器接收资源代码
<?php
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>
客户端文件上传的代码
文件上传代码
文件上传时会返回一些代码 返回客户端 客户端根据这些值判断上传是否正常
- 值:0; 没有错误发生,文件上传成功。
- 值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
- 值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
- 值:3; 文件只有部分被上传。
- 值:4; 没有文件被上传。 文件上传漏洞分为 直接文件上传,这种漏洞类型是属于高危漏洞的一种,能直接 getshell,而且没有任何限制,攻击者很容易通过上传点,获取网站的控制权限,另外一种是有条件的上传漏洞,这种漏洞一般是开发者经验不足,对文件上传做了简单的限制,如简单的前端认证,文件头文件检测,这种检测行为,可以完全绕过的,另外一个方面就是权限认证没处理,没有对文件上传页面进行权限认证,匿名者就能访问上传文件,上传网页后门到网站目录,控制整个网站,还有一些上传逻辑有问题,导致文件上传可以被绕过,上传后门到网站上。有的文件上传漏洞则是通过中间件或者系统特性上传可以被服务器解析脚本文件,从而导致网站可被控制。
5.常见的网站文件后缀名
可执行脚本的文件后缀名,可被网站目录解析。以下是常见的后缀名 asp、asa、cdx、cer、php、aspx、ashx、jsp、php3、php.a、shtml、phtml ,有些网站会对 asp 或者 php 进行过滤转成空可用这些后缀名:aspasp 、asaspp、phpphp
6.一句话木马
执行命令: ?cmd=cat /etc/passwd # 读取系统文件 ?cmd=ls -la # 列出当前目录文件(注意 -la 是参数) ?cmd=whoami # 查看当前用户 ?cmd=id # 查看用户身份 执行命令: ?cmd=cat /etc/passwd # 读取系统文件 ?cmd=ls -la # 列出当前目录文件(注意 -la 是参数) ?cmd=whoami # 查看当前用户 ?cmd=id # 查看用户身份
评论区
评论加载中...