网站漏洞检测 apache nginx解析绕过上传漏洞
在日常对客户网站进行渗透测试服务的时候,我们SINE安全经常遇到客户网站,app存在文件上传功能,程序员在设计开发代码的过程中都会对上传的文件类型,格式,后缀名做安全效验与过滤判断,SINE安全工程师在对文件上传漏洞进行测试的时候,往往发现的网站漏洞都是由于服务器的环境漏洞导致的,像IIS,apache,nginx环境,都存在着可以导致任意文件上传的漏洞。
关于导致文件上传漏洞的产生以及测试,我们来详细的分析一下:
IIS解析漏洞导致的任意文件上传
首先比较常见的是客户网站使用的IIS环境来搭建的,一般是IIS+PHP+Mysql数据库组合,或者IIS+aspx+sql2005数据库,IIS存在解析漏洞,当创建文件名为.php的时候,在这个目录下的所有文件,或者代码,都会以PHP脚本的权限去运行,比如其中一个客户网站,可以将上传的目录改为1.php,那么我们上传的jpg文件到这个目录下,访问的网址是域名/1.php/1.jpg从浏览器里访问这个地址,就会是php脚本的权限运行。当上传网站木马webshell过去,就会直接拿到网站的管理权限。存在IIS解析漏洞的版本是5.0-6.0版本。
nginx解析漏洞导致的任意文件上传
nginx是静态访问,以及大并发,能够承载多人访问,目前很多网站都在使用的一种服务器环境,简单来讲就是HTTP访问的代理,高速稳定,深受很多网站运营者的喜欢,在nginx最低版本中存在解析漏洞,可以导致运行PHP脚本文件,漏洞产生的原因是由于php.ini配置文件与nginx配合解析的时候,将默认的后缀名认为是最重的文件名,导致可以修改后缀名来执行PHP文件。我们SINE安全在渗透测试中发现客户网站开启nginx以及fast-cgi模式后,就会很容易的上传网站木马到网站目录中,我们将jpg图片文件插入一句话木马代码,并上传到网站的图片目录中。
我们在访问这个图片的时候,直接在后面输入/1.php,就会导致图片文件以php脚本权限来运行了。如下图所示:
apache解析漏洞导致的任意文件上传
apache也是目前使用较多的一个服务器环境,尤其php网站使用的较多,因为稳定,快速,易于PHP访问,可以将第三方的一些开发语言编译到网站中,apache也是存在漏洞的,尤其在apache1.0-2.0版本中,后缀名判断这里没有做详细的规定,导致可以绕过apache安全机制,上传恶意的文件名。默认是允许多个后缀名进行解析的,如果命名的后缀名不被apache认可解析,就会向前寻找后缀名,直到后缀名是apache认可的,就会直接解析成功。 该文件上传漏洞使用的条件是需要开启module模式,不是这个模式的上传不了。我们SINE安全在对客户网站进行渗透测试的时候,首先会改后缀名为apache不认可的,然后POST上传过去,直接运行php脚本。如下图所示:
总的来说导致任意文件上传漏洞的发生也存在于服务器环境中,那么在渗透测试过程中该如何的修复漏洞呢?将IIS版本升级到7.0以上,Nginx版本也升级到最新版本,包括apache版本升级到2.4以上,在上传功能代码里对其进行文件格式的判断,限制目录的创建,可杜绝以上的问题的发生。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
最近学习到的Lambda表达式
前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 中秋去了躺上海,在外滩上打了个卡: 紧接着学了一下Java的函数式编程,给大家整理了一下,一起学习! 一、Lambda用法 之前写Optional这个类的时候,简单说了一下Lambda是怎么用的,这里再跟大家一起回顾一下,Lambda的语法是这样的: 以Lambda语法创建线程和匿名内部类创建线程的区别(显然代码少了很多!): public static void main(String[] args) { // 用匿名内部类的方式来创建线程 new Thread(new Runnable() { @Override public void run() { System.out.println("公众号:Java3y---关注我!"); } }); // 使用Lambda来创建线程 new Thread(() -> System.out.println("公众号:Java3y---关注我!")); } 使用Lambda表达式,实际就是...
- 下一篇
Tomcat 应用中并行流带来的类加载问题
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/f-X3n9cvDyU5f5NYH6mhxQ 作者:肖铭轩、王道环 随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)这一特性提升代码执行效率。但是,作者发现在 Tomcat 容器中使用并行流会出现动态加载类失败的情况,通过对比 Tomcat 多个版本的源码,结合并行流和 JVM 类加载机制的原理,成功定位到问题来源。本文对这个问题展开分析,并给出解决方案。 一、问题场景 在某应用中,服务启动时会通过并行流调用 Dubbo,调用代码如下: Lists.partition(ids, BATCH_QUERY_LIMIT).stream() .parallel() .map(Req::new) .map(client::batchQuery) .collect(Collectors.toList()); 调用日志中发现大量的 WARN 日志com.alibaba.com.caucho.hessian.io.SerializerFactory.getDeseria...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器