网站渗透测试 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以上,在上传功能代码里对其进行文件格式的判断,限制目录的创建,可杜绝以上的问题的发生。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏白石

Groovy 使一个类不可变

创建不可变对象,创建后不能更改。 这使得不可变对象在并发和函数编程中非常有用。 要将Java类定义为不可变,我们必须将所有属性定义为readonly和priva...

9230
来自专栏陶士涵的菜地

[PHP] 三种运行模式 ISAPI模式 APACHE2HANDLER模式 CGI模式 FastCGI模式

ISAPI模式:ISAPI是微软提供的一套标准,PHP的ISAPI模式意思是PHP在windows系统上的IIS进行配合的运行模式,在PHP5.3之后不再支持,...

7840
来自专栏IT码农

nginx 进行正则匹配(常见正则匹配符号表示)

今天遇到网站之前的url被百度搜索引擎抓取,需要在服务中进行301强制跳转,(如访问:www.baidu.com/kenni-1,www.baidu.com/k...

1.1K30
来自专栏架构专题

分布式消息系统,设计要点。画龙画虎难画骨

分布式缓存方面,redis勇夺花魁。但对于消息队列mq来说,还处于百花齐放的年代。

7630
来自专栏白石

Groovy 使用EqualsAndHashCode注解生成equals和hashcode方法

Groovy 1.8中有很多新的字节码生成注释。 其中一个是@EqualsAndHashCode注释。 使用此注释,为类生成equals()和hashCode(...

18710
来自专栏知了一笑

MySQL数据以全量和增量方式,向ES搜索引擎同步流程

/usr/local/logstash/sync-config/cicadaes.conf

23630
来自专栏Kirito的技术分享

使用 JMeter 进行 Dubbo 性能测试

说到性能测试工具,你会立刻联想到哪一个?ab(ApacheBench)、JMeter、LoadRunner、wrk…可以说市面上的压测工具实在是五花八门。那如果...

22710
来自专栏卡尼慕

hadoop(一)

这段时间不光在复习数据结构,也在学习搭建hadoop,了解hadoop,这是对我来说没有像其它的的推文那样好写,而且这个模块更新的时间间隔会比较长,因为一个新知...

12420
来自专栏小手冰凉

Linux源代码编译安装程序

在Linux操作系统中搭建一些大型服务时,考虑兼容性与功能的扩展,通常会选择源代码安装软件。 现代的Linux发行版本通常都是使用软件包管理机制对软件进行打包安...

9930
来自专栏搜狗测试

蝗虫过境,你的系统能扛住吗?

将Locust与常用的LoadRunner和Jmeter进行对比,详细参数如下:

9710

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励