前一篇文章讲述了在DVWA不同安全级别下的文件上传漏洞渗透的实验过程,这一次我们来了解一下如何对这个漏洞进行防御。

渗透实验过程详见:https://www.yuque.com/u12173902/cgh2wq/iknsuv

文件上传漏洞的出现的主要原因是开发人员没有对开发的文件做严格的检测,而导致一句话木马,或者是webshell这样的文件能够直接上传。

设计安全的文件上传功能


  • 文件上传的目录设置为不可执行
  • 判断文件MIME类型(content-type)
  • 对文件后缀进行检查
  • 使用随机数改写文件名和文件路径:能上传不能访问
  • 单独设置文件服务器的域名:同源策略
  • 在前面通过Waf防火墙(Web应用防火墙)来对带有特征信息的文件进行拦截。比如
    1. <?php @eval($_POST['password']);?>

使用fgrep


如果你不幸真的中招了,你可以尝试过滤一下网站的文件内容。
使用 fgrep 过滤,就可以知道哪里有非法的代码,它可能是一个单独的文件,也可能是存在于某一个文件里面。在fgrep的眼中没有语言字符,一切都是常规字符。不过,这只是针对没有编码过的文件,过滤编码后的文件还是会有问题。

  1. fgrep -R 'eval($_POST[' /path
  2. //-R表示递归,存在可疑代码的可能不只一个文件;fgrep:fixable grep
  3. //path 表示文件路径