当前位置:首页 > 技术文章 > 正文内容

网络安全干货知识分享 | 解析漏洞总结(转载)

arlanguage3个月前 (02-10)技术文章18

本文接着上一期的文件上传进行更进一步的学习,需要网络安全课件资料+大厂面试课题可以私信我!

文件解析漏洞概述

文件解析漏洞,是指Web容器(Apache、Nginx、IIS等)将一些特殊文件解析成脚本文件格式,导致攻击者可以利用该漏洞实现非法文件的解析。

解析漏洞的分类

常见的解析漏洞分为 IIS解析漏洞,Apache解析漏洞和Nginx解析漏洞

IIS解析漏洞

IIS(Internet Information Services)是微软出品的灵活、安全、易于管理的Web服务器。

漏洞简介

IIS 6.0 在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式:

/test.asp/test.jpg 目录解析 会将 test.jpg 解析为 asp 文件

test.asp;.jpg 文件解析 , 此类文件在Windows下不允许存在,:.jpg默认不解析,剩下/xx.asp

iis把asa,cdx,cer解析成asp文件的原因:这四种扩展名都是用的同一个asp.dll文件来执行。

环境

一般为 IIS/6.0 搭配 windows 2003

修复方法

阻止创建.asp类型的文件夹

阻止上传 xx.asp;.jpg 类型的文件名

阻止上传.asa, .cer,.cdx 后缀的文件

环境搭建和复现

记得 连接 windows2003 的CD

安装 windows 2003

开始→控制面板→添加或删除程序→添加/删除windows组件】。找到应用【程序服务器】,选中,点击【详细信息】,选中第一个【ASP.NET】,点确定,

下一步,完成。(中间会让选择IIS6.0文件包里的文件) 记得勾选

在网站目录中新建一个a.asp的文件,然后用记事本打开写入<%=now()%>

测试时发现报错,根据提示打开 Active service pages

测试没有问题后,新建asp webshell,测试解析漏洞

目录解析

创建目录为b.asp 的文件夹,在创建的文件夹下创建文件a.jpg , 内容为:<%eval>

蚁剑连接

文件解析

创建文件 :test.asp;.jpg 内容为:<%eval>

IIS 7.0/7.5 CGI解析漏洞

IIS7/7.5的漏洞与nginx的类似,都是由于php配置文件中,开启了cgi.fix_pathinfo,而这并不是nginx或者iis7/7.5本身的漏洞。

漏洞条件

php.ini 里的 cgi.cgi_pathinfo=1

IIS7 在fast-cgi 运行模式下

测试(这个漏洞我会在nginx详细叙述 大家往下看)

  1. 在站点根目录创建 webshell.jpg文件,文件内容为:
  2. 配置CGI模式
    1. 在php.ini文件里将cgi.fix_pathinfo 取消注释并把值改为1
    2. 更改网站的处理程序映射 管理工具 –> IIS -> WIN-5RQ4P819403 -> 处理程序映射
  3. 访问 webshell.jpg/.php, webshell.jpg 成功被解析

  4. $a = '';
    file_put_contents('123.php',$a);
    ?>

    然后访问test.jpg/.php或test.jpg/abc.php
    当前目录下就会?成?句话?马123.php。

修复方法

1、 将php.ini文件中的cgi.fix_pathinfo的值设置为0,这样php再解析1.php/1.jpg这样的目录时,只要1.jpg不存在就会显示404页面

2、 php-fpm.conf中的security.limit_extensions后面的值设置为.php

环境搭建和复现

搭建IIS7.0

  • 勾选CGI 否则无法使用IIS 解析PHP

忘记添加 可以在这里添加

安装完成后,点击 处理程序映射

这里需要安装php,直接 装个 phpstudy-iis版

这里要注意,如果windows上安装了mssql,也会占用80端口,

例如:

发现占用80端口的确是 SQL Server 2008 里面的组件——SQL Server Reporting Services (MSSQLSERVER)。是 SQL Server 的日志系统,

关闭方法: 在运行框中输入 services.msc ,进入服务窗口。或者直接在开始菜单里面的搜索框中输入“服务”即可打开。然后找到 SQL Server Reporting Services (MSSQLSERVER) 这个服务,然后停止,被占用的80端口就被释放出来了。你也可以设置它的启动方式为“禁用”。

测试一下

访问webshell.php

没有问题

添加 处理程序映射

  • 打开之前php的可执行文件同一级目录下的php.ini
  • 修改cgi.fix_pathinfo的值为1
  • 重启 IIS
  • 上传webshell.png ,访问
  • 添加/.php 后访问

Apache 解析漏洞-多后缀解析漏洞

漏洞描述:Apache 解析?件的规则是从右到左开始判断解析,如果后缀名为不可识别?件解析,就再往左解析,直到碰到认识的扩展名为?,如果都不认识,则会暴露其源代码。这种?法可以绕过基于?名单的检查。

比如:test.php.x1.x2.x3 ,Apache将从右至左开始判断后缀,若x3非可识别后缀,再判断x2,直到找到可识别后缀为止,然后将该可识别后缀进解析 test.php.x1.x2.x3 则会被解析为php

我们可以完全上传?个 xxx.php.abc 这样名字的 webshell ,Apache仍然会当做PHP来解析。

Apache 能够识别的文件在mime.types文件里。

影响版本

Apache 2.0.x <= 2.0.59

Apache 2.2.x <= 2.2.17

Apache 2.2.2 <= 2.2.8

修复方法

后缀验证尽量使用白名单的方式,这样即使使用不存在的后缀名,也无法绕过。

Apache配置问题

  1. 如果在Apache的 /etc/apache2/apache2.conf里有这样的配置

SetHandler application/x-httpd-php

这时只要文件名是shell.jpg,会以php 来执行。

  1. 如果在Apache的 conf 里有这样一行配置AddHandler php5-script .php 这时只要文件名里包含.php 即使文件名是qwzf.php.jpg也会以php 来执行。
  2. 如果在 Apache 的 conf 里有这样一行配置AddType application/x-httpd-php .jpg , 即使扩展名是.jpg,也会以php来执行。

Apache提供了一种很方便的、可作用于当前目录及其子目录的配置文件——.htaccess(分布式配置文件) 将Apache的
/etc/apache2/sites-available/default
AllowOverride None改为AllowOverride All

AllowOverride All

开启rewrite_mod

a2enmod rewrite

这样.htaccess文件就会生效。

在win 下 必须先开启mod_rewrite功能

先开启httpd.conf 将下面这个行的注解拿掉#LoadModule rewrite_module
modules/mod_rewrite.soAllowOverride controls what directives may be placed in .htaccess files.# It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit #将

搜索

AllowOverride None修改为AllowOverride All

****

重启服务器服务可以让.htaccess档案生效

测试

方法1:

SetHandler application/x-httpd-php


方法2:
AddHandler php5-script .php

方法3:
AddType application/x-httpd-php .jpg

方法2 :上传 webshell.php.jpg

方法1和方法3: 上传 webshell.jpg
修复方法

1.apache配置文件,禁止.php.这样的文件执行,配置文件里面加入


      Order Allow,Deny
      Deny from all

2.关闭重写

a2dismod rewrite

Apache HTTPD 换行解析漏洞

漏洞简介:Apache HTTPD是美国阿帕奇(Apache)软件基金会的一款专为现代操作系统开发和维护的开源HTTP服务器;Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。在解析PHP时,xx.php\x0A将被按照PHP后缀进行解析,导致可以绕过一些服务器的安全策略。

条件:1、获取文件名时不能用$_FILES['file']['name'],因为它会自动把换行去掉。

2、Apache版本为2.4.0到2.4.29

3、服务器必须是linux系统,因为windows环境下不支持后缀名带有换行符\x0a

影响版本
HTTPD :2.4.0~2.4.29

漏洞原理

看完上面的源代码我们很容易就能知道我们上传xx.php%0a和xx.php是不一样的,我们上传xx.php%0a就可以对文件上传的黑名单进行了绕过


  SetHandler application/x-httpd-php

只要满足这么一个正则匹配,就会告知Apache将这个满足匹配的文件按PHP文件来解析

但是不巧的是这里还有一个东西就是$这个东西,它是用来匹配字符串结尾位置的,而且如果设置了RegExp 对象(正则表达式)的 Multiline(/m) 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。

所以如果我们设置了RegExp 对象的 Multiline 属性(\m)的条件下,$还会匹配到字符串结尾的换行符(也就是%0a),于是也就产生了这么一个换行解析漏洞

测试

上传一个后缀末尾包含换行符的文件,绕过 FilesMatch

1.php\x0a => 1.php

apache通过mod_php来运行脚本,其2.4.0-2.4.29中存在apache换行解析漏洞,在解析php时xxx.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。该漏洞属于用户配置不当产生的漏洞,与具体中间件版本无关。

在1.php后面插入一个\x0A(注意,不能是\x0D\x0A,只能是一个\x0A),不再拦截:

社区版Burp点击1.php后面的一个字节,然后右键->Insert byte。再将插入的00修改为0a。

访问刚才上传的/1.php%0a,发现能够成功解析,但是这个文件的后缀不是php后缀,说明目标存在解析漏洞

漏洞修复
1.升级到最新版本

2.将上传的文件重命名为时间戳+随机数+.jpg的格式并禁用上传文件目录执行脚本权限

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/2419.html

标签: phpstudy nginx
分享给朋友:

“网络安全干货知识分享 | 解析漏洞总结(转载)” 的相关文章

Nginx 全面攻略:动静分离、压缩、缓存、黑白名单、跨域、高可用

Nginx 作为一款高性能的 HTTP 服务器和反向代理服务器,被广泛应用于各类互联网项目中。它不仅能够提供静态文件服务,还支持动静分离、压缩、缓存、黑白名单、跨域、高可用等多种高级功能。本文将带你全面了解和掌握 Nginx 的这些强大功能。一、动静分离动静分离是指将动态请求与静态资源请求分离开来,...

K8S中Service使用nginx控制器实现Ingress负载均衡器的一个Demo

写在前面学习K8s中Service遇到,单独整理分享给小伙伴本文内容涉及:ingress-nginx-controller的创建基于ingress-nginx-controller的Ingress的创建基于Ingress的服务发布,SVC负载时间关系,关于Ingresshttp路由负载本文没有涉及部...

基于Docker一键LNMP(Nginx+MySQL+PHP7/5+Redis)安装程序

一键部署LNMP环境的目的,该环境特点:完全开源支持多版本PHP切换(PHP5.4、PHP5.6、PHP7.2...)支持绑定任意多个域名支持HTTPS和HTTP/2PHP源代码位于host中MySQL data位于host中所有配置文件可在host中直接修改所有日志文件可在host中直接查看内置完...

如何在 NGINX 中创建自定义 404 错误页面

每次NGINX在尝试处理客户端请求时遇到错误,它都会返回一个错误。每个错误都包含一个HTTP响应代码和一个简短描述。错误通常通过简单的默认HTML页面显示给用户。幸运的是,您可以配置NGINX以向您的站点或 Web 应用程序的用户显示自定义错误页面。这可以使用 NGINX 的 error_page指...

在AWS上组合使用ELB和Nginx Plus获得更多特性

使用AWS的客户经常问我们,对于负载均衡,到底是使用AWS的ELB还是Nginx Plus?Amazon曾经发布了一个白皮书来说明如何在AWS上配置Nginx Plus。本文将聚焦在选择Nginx Plus或者ELB时需要考虑的因素方面,也会讨论一些更适合于组合使用Nginx Plus和ELB的情形...

提升网站性能开发的10个技巧 提升网站性能开发的10个技巧是什么

随着网络的高速发展,网络性能的持续提高成为能否在芸芸App中脱颖而出的关键。高度联结的世界意味着用户对网络体验提出了更严苛的要求。假如你的网站不能做到快速响应,又或你的App存在延迟,用户很快就会移情你的竞争对手。以下为大家总结10条有关性能提升的经验,以供参考:1. 采用反向代理服务器(Rever...