文件上传

简介

客户端文件上传到服务器的过程

当上传文件的时候,如果服务器的后端代码没有对上传的文件进行严格的验证和过滤,就容易造成上传任意文件的情况,如果可以上传webshell,就形成了文件上传漏洞

危害

攻击者通过上传恶意文件传递给解释器去执行,并在服务器上执行恶意代码。比如进行数据库执行、服务器文件管理、命令执行等恶意操作。从而控制整个网站,甚至是服务器

前提条件

  1. 成功上传文件到服务器
  2. 文件能够被访问到(知道路径)
  3. 文件被解释器解析执行

文件检测方式

判断文件检测方式

漏洞防御措施

  1. 上传的目录设置为不可执行
  2. 对文件后缀的判断中使用白名单的方式
  3. 文件服务器和web服务器分离
  4. 不需要返回文件路径的情况下,随即改写文件名

实际渗透

只要证明服务器可以解析我们所上传的文件内容即可

当我们实际渗透中,不能传危险文件,可以传phpinfo或者是加密字符串,从而看是否存在漏洞

phpinfo

文件上传传入phpinfo

<?php
phpinfo();
?>

获取上传路径,访问该文件,发现有回显,存在文件上传

不是一句话木马,是一个函数,返回服务器信息

加密字符串

<?php
echo md5('1');
?>

说明对php代码进行了解析,存在文件上传