网络安全进阶学习第六课——服务器解析漏洞

news2024/9/25 23:20:02

文章目录

  • 1、概念
  • 2、Apache解析漏洞 CVE-2017-15715
  • 3、Apache AddHandler解析漏洞
  • 4、IIS6 解析漏洞(`;`)
  • 5、IIS6 解析漏洞(`*.asp/目录`)
  • 6、IIS7 解析漏洞(ISAP或CGI的模式下)
  • 7、nginx解析漏洞(cgi.fix_pathinfo)
  • 8、nginx解析漏洞(%00空字节)
  • 9、总结
    • 1)轻量级检测绕过
    • 2)路径/文件扩展名检测绕过
    • 3)文件内容检测方式


1、概念

解析漏洞主要是一些特殊文件被Apache、IIS、Nginx等Web服务器在某种情况下解释成脚本文件格式并得以执行而产生的漏洞


2、Apache解析漏洞 CVE-2017-15715

影响范围:2.4.0~2.4.29版本

此漏洞形成的根本原因,在于 , 正则表达式中 , 正则表达式中 ,正则表达式中不仅匹配字符串结尾位置,也可以匹配\n 或 \r ,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

上传文件test.php. 抓包 修改 php后面的点(2e) 为 换行(0a)
访问 test.php%0a


3、Apache AddHandler解析漏洞

Apache默认一个文件可以有多个后缀名,每次识别从右到左识别,当最右边的后缀无法识别时,则继续向左识别。mime.types中记录apache可识别的后缀名

添加AddHandler,使得任何文件只要包含.php后缀名的文件都会被当作php文件解析为了使php文件可以被解析,用户自己添加了AddHandler:AddHandler application/xhttpd-php .php


4、IIS6 解析漏洞(;

基于文件名:该版本默认会将*.asp;.jpg此种格式的文件名,当成asp解析。

原理是服务器默认不解析 ; 号及其后面的内容相 当于截断


5、IIS6 解析漏洞(*.asp/目录

基于文件夹名,该版本默认会将 *.asp/目录下的所有文件当成asp解析。

当在网站下建立文件夹的名字为*.asp、*.asa、*.cer、*.cdx 文件夹,那么其目录内的任何扩展名的文件都会被IIS当做asp文件来解释并执行。

注意:微软不认为这一个是漏洞,因为正常情况下,是无法创建 *.asp 命名的文件夹的。


6、IIS7 解析漏洞(ISAP或CGI的模式下)

服务器是使用IIS7环境,并且在ISAP或CGI的模式下,在任意文件,如test.jpg后面加上 /.php ,会自动将test.jpg解析为php文件。

例如:127.0.0.1/test.jpg/.php 会被解析成 127.0.0.1/test.php


7、nginx解析漏洞(cgi.fix_pathinfo)

nginx查看url,得到.php结尾,将路径传递给php fastcgi处理程序,nigin传递给php的路径为
在这里插入图片描述

php根据url映射,在服务器寻找xxx.php文件,但是xxx.php文件不存在,由于cgi.fix_pathinfo是默认开启。php会继续检查 路径存在的文件,并将多余部分当作PATH_INFO,接着找到文件存在.jpg文件,后以php形式执行.jpg内容,并将/xxx.php 存储在PATH_INFO后丢弃。
在这里插入图片描述

  • 举例来说:
    1)上传了一个图片木马文件:upload/1.jpg
    2)然后访问方式是:upload/1. jpg /1.jlkk/1.php
    3)这时后系统会从后面开始找,先去找1.php,没找到;接着往前找1.jlkk,也没找到;再往前找1. jpg,找到了。
    4)系统就会把找到的1.jpg来当成是最后的一个1.php来当成PHP文件执行。

8、nginx解析漏洞(%00空字节)

Nginx如下版本: 0.5.*、0.6.*、0.7 <= 0.7.65、0.8 <= 0.8.37 该漏洞不受cgi.fix_pathinfo影响,当其为0时,依旧解析。

  1. 生成一个upload/info.jpg格式的木马文件
  2. 使用burp抓包,访问info.jpg,修改为info.jpg…php , 在16进行模式下,修改jpg后面的 . ,为00
  3. 访问时就直接访问upload/info.jpg .php
  4. 这时就直接会把info.jpg当成info.php来执行。

9、总结

从攻击者的角度来给上传分类:

1)轻量级检测绕过

a.绕过前端JavaScript检测:使用Burp抓包改包。
b.绕过服务器端MIME类型检测:使用Burp抓包改包。

2)路径/文件扩展名检测绕过

黑名单检测方式

  • 文件名大小写绕过;
  • 名单列表绕过;
  • 特殊文件名绕过;
  • 0x00截断绕过;
  • .htaccess文件攻击;
  • 本地文件包含漏洞;
  • Apache解析漏洞;
  • IIS解析漏洞;
  • Nginx解析漏洞;

白名单检测方式

  • 0x00截断绕过;
  • 本地文件包含漏洞;
  • Apache解析漏洞;
  • IIS解析漏洞;
  • Nginx解析漏洞;

3)文件内容检测方式

对文件进行恶意代码注入,再配合解析漏洞(或文件包含漏洞)。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/712637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

USB 3.0 Rx Detect之超速U盘的识别

1 USB超速SerDes原理介绍 1.1 SerDes Rx.Detect SerDes Rx.Detect的原理比较简单&#xff0c;就是通过一个逻辑电路比较RC时间常数的大小。 - 当Rx不存在时&#xff0c;RC时间常数较小。 - 当Rx存在时&#xff0c;RC时间常数较大。 下面将详细描述其原理。 Figure 1-1 USB 3.0电…

SuperMap 的 Environment.initialization(this)空指针

如果你把ndk和动态权限等等都设置好了&#xff0c;还发现Environment.initialization(this)还有空指针问题存在。就试试我这个方法 许可文件要用10i的&#xff0c;别用11i的 SuperMap 有个so库文件是放在armeabi-v7a文件夹下的&#xff0c;armeabi-v7a不要放在jniLibs目录下&…

深度理解:Redis Hash(散列表)实现原理

Redis是一种开源的&#xff0c;基于内存的数据结构存储系统&#xff0c;可以用作数据库、缓存和消息代理。它支持多种类型的数据结构&#xff0c;例如字符串、散列表、列表、集合、有序集合等。今天我们将重点讨论Redis的一个重要数据结构&#xff1a;Hash&#xff0c;也叫散列…

Linux网络概念

1.1网络 是由若干结点和连接这些结点的链路组成&#xff0c;网络中的结点可以是计算机&#xff0c;交换机、路由器等设备 网络设备有&#xff1a;交换机、路由器、集线器 传输介质有&#xff1a;双绞线、同轴电缆、光纤 1.2互联网 把多个网络连接起来就构成了互联网&#…

vue+antd——实现拖拽上传文件——技能提升

最近看到有2023年博客之星的入围状况&#xff0c;提示我还差24篇高质量文章才可以入围。前两年由于比较勤奋&#xff0c;文章篇数足够&#xff0c;因此没有遇到这种提示过。现在补上几篇文章&#xff0c;希望可以入围吧。 1.html代码 <template><div class"clea…

编译linux内核(三)

内核配置选项[Centos] 挑选核心功能选项介绍1. General setup&#xff08;通用选项&#xff09;2. Enable loadable module support3. Enable the block layer4. Processor type and features(CPU 的类型与功能选择)5. Power management and ACPI options(电源管理功能)6. Bus …

【Python 随练】❀ 绘制正方形

题目&#xff1a; 画图&#xff0c;学用rectangle画方形。 简介&#xff1a; 在本篇博客中&#xff0c;我们将介绍如何使用Python的绘图库来画方形。我们将使用rectangle函数来绘制方形&#xff0c;并提供一个完整的代码示例来演示其用法。 绘制方形&#xff1a; 要绘制方…

Dom4j在某节点上添加已有的Element节点

需求&#xff1a;有两个xml文件需要解析&#xff0c;将A文件的节点解析之后放到了一个List<Element> list的集合中了&#xff0c;然后解析B文件&#xff0c;将list的内容填充到B中去。 众所周知&#xff0c;下面这段代码是可以添加一个节点元素的。 SAXReader reader n…

数通王国历险记之以太网和MAC地址

系列文章目录 数通王国历险记&#xff08;3&#xff09; 目录 前言 一&#xff0c;以太网的定义 二&#xff0c;如何理解以太网 2.1&#xff0c;以太网是一种广播式数据链路层协议 2.2&#xff0c;以太网支持多点接入 2.3&#xff0c;个人电脑的网络接口遵循的就是以太网…

Apikit 自学日记:如何分享 API、项目

开启/关闭在线分享 您可以在线分享项目给团队以外的人&#xff0c;其他人可以通过分享链接在线查看API文档并且进行API测试。通过这种方式查看API文档不需要注册账号&#xff0c;用户可方便查看接口文档和测试接口。 在项目内&#xff0c;点击进入项目管理菜单&#xff0c;选择…

【国产虚拟仪器】基于ZYNQ7045+V7 FPGA的多通道数据同步采集设计方案(二)

多通道数据采集电路主要流程为实现4路模拟信号接收&#xff0c;通过模数转换、信 号处理后的数据经过光纤传输到总站。多通道数据采集电路由模拟信号采集单元、 数字信号处理单元和信号转接板构成&#xff0c;组成框图如图4-1所示。 为了对带宽内的多个关键频点进行侦察监测&a…

Qt的未来发展趋势:跨平台、用户体验和AI的突破

Qt的未来发展有以下几个方面的趋势&#xff1a; 跨平台和多端支持&#xff1a;随着移动设备和嵌入式系统的普及&#xff0c;Qt将继续扩展其跨平台和多端支持能力。Qt已经在移动平台上取得了一定的成功&#xff0c;并且正在不断改进和优化移动开发工具和功能。未来&#xff0c;Q…

Tcl常用命令汇总

往期文章链接&#xff1a; 1&#xff09;基础篇&#xff1a;包括置换方法&#xff0c;特殊字符&#xff0c;incr与append用法&#xff0c;以及执行方式。 Tcl常用命令备忘录: 基础篇 2&#xff09;列表篇&#xff1a;包括list、concat、lrepeat、lindex、llength、lrange、l…

有趣的turtle(一)

关注“Python专栏”微信公众号&#xff0c;回复暗号【面试大全】&#xff0c;立即领取面试题简历模板。 turtle 是 Python 中用来绘图的标准库&#xff0c;它简单且有趣&#xff0c;很多Python初学者都愿意将它作为第一个学习对象。 下面的内容主要包含 turtle 的基本用法和一…

OpenCV(加载、修改、保存图像)

目录 1、图像加载 2、显示图像 3、修改图像 4、图像保存 OpenCV官方文档查询地址&#xff1a;OpenCV: OpenCV modules 1、图像加载 加载图像&#xff08;用cv::imread )imread功能是加载图像文件成为一个Mat对象&#xff0c;其中第一个参数表示图像文件名称 第二个参数&…

还在一步步搭建平台吗?找对方法更重要喔~

前言&#xff1a; 如今&#xff0c;随着信息化时代互联网的高速发展&#xff0c;繁琐的流程和线下的工作已经不能满足社会发展的需求&#xff0c;这个时候大家都知道系统是唯一一个可以快速解决的方法。但每个企业的需求不一样&#xff0c;成品型的系统未必能满足企业的属性。但…

MySQL数据库--------简单理解文件的相关信息

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com ———————————————————————————————————— 目录 文件的信息 文件的权限 权限的赋予 —————————————————————————————— 插播一些…

INFORMIX存储过程

一、存储过程概述 存储过程是一个用户定义的函数,由存储过程语句(SPL) 和一组SQL语句组成&#xff0c;以可以执行代码形式存储在数据库中&#xff0c;和表、视图、索引等一样&#xff0c;是数据库的一种对象。 存储过程语言SPL&#xff08;Stored Procedure Language&#xf…

硬件重生:PC与数码市场迎来历史性繁荣,搞机佬的春天回来了

在过去的一年里&#xff0c;我们看到了一场全球范围内的数字革命。在这次变革中&#xff0c;PC硬件和数码产品的市场表现令人瞩目&#xff0c;显著反弹。根据我们的调研数据&#xff0c;这一领域的市场规模和销售量都大幅增长&#xff0c;这预示着搞机佬们的春天已经来临。 PC硬…

Vue项目前端部署——nginx方式

Vue项目前端部署——nginx方式 1. 准备好服务器&#xff0c;下载安装nginx并启动2. vue项目编译打包3. 将dist目录上传到服务器上4. 配置nginx安装目录下的nginx.config文件5. 重启nginx6. 访问地址 1. 准备好服务器&#xff0c;下载安装nginx并启动 随便在网上找一篇文章&…