中间件安全中间件中间件(Middleware)是指一种软件组件,其作用是在不同的系统、应用程序或服务之间传递数据和消息。它通常位于应用程序和操作系统之间,负责在不同的应用程序之间传递数据、协调不同应用程序之间的通信,以及处理网络请求等。
中间件通常是一种插件式架构,允许开发人员将其集成到现有的应用程序中。它可以提供诸如身份验证、授权、缓存、负载均衡、日志记录、安全性等功能,以简化应用程序的开发和部署过程。从广义上讲,中间件涵盖了从 Web 服务器,到身份验证系统,再到消息传递工具等一切内容。从另个一角度来讲,中间件是:jboss、weblgoic、tomcat、apache等。中间件的使用可以提高应用程序的可扩展性、可靠性、可维护性和安全性。
中间件漏洞中间件漏洞是指在中间件软件中存在的安全漏洞,这些漏洞可能被攻击者利用来对系统进行攻击和渗透。中间件漏洞通常包括以下几种:
代码注入漏洞:攻击者可以通过向中间件发送恶意代码,从而执行任意代码或获取敏感数据。
跨站脚本漏洞:攻击者可以通过在中间件输出的网页中插入恶意脚本,来窃取用户信息或进行其他恶意行为。
SQL注入漏洞:攻击者可以通过在 ...
php反序列化漏洞基础概念
序列化:是将变量转换为可保存或传输的字符串的过程;实现函数是serialize()
反序列化:就是在适当的时候把这个字符串再转化成原来的变量使用,就是序列化的逆过程。实现函数是unserialize()
序列化和反序列化结合起来,可以轻松地存储和传输数据,使程序更具维护性。
序列化格式
类型
结构
Object
O:length:class name:attribute number:{attr1;value1;attr2;value2;}
Array
a:number:{key1;value1;key2;value2;}
String
s:length:value;
Integer
i:value;
Boolean
b:value; //(0=False,1=True)
Null
N;
Double
d:value;
pointer reference
R:number
123456789101112<?phpclass example{protected ...
XML外部实体注入原理与实战XML的定义XML 指可扩展标记语言(Extensible Markup Language)。XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
它在 HTML 之后开发,来弥补 HTML 的不足。HTML 用于定义数据的展示,专注于它应该是什么样子。反之,XML 用于定义数据如何被组织。
例如,HTML 中,你的标签为<title>, <h1>, <table>, <p>,以及其它。这些东西都用于定义内容如何展示。<title>用于定义页面的标题,<h1>标签定义了标题,<table>标签按行和列展示数据,并且<p>表示为简单文本。反之,XML 没有预定义的标签。创建 XML 文档的人可以定义它们自己的标签,来描述展示的内容。
123456789<?xml version="1.0" enco ...
服务器端请求伪造漏洞基础客户端请求客户端请求指的是由客户端设备(如个人计算机、智能手机、平板电脑等)或软件(浏览器、各种APP)发出的请求,以获取指定的网页、图片、视频或其他资源。比如当用户在浏览器中输入URL或点击链接时,浏览器会自动发起HTTP请求,请求服务器返回指定的资源。
服务器端请求服务器上的应用程序或服务会提供一些功能接口,比如API接口,用于与其他服务进行数据交互。这些由服务器向其他的服务器发起的请求称之为服务器端请求。
服务器端请求伪造服务器端请求伪造(Server-side Request Forgery)简称SSRF,是指攻击者通过伪造服务器端请求,从而使服务器发起对第三方系统的攻击或访问。攻击者通常会使用受害者服务器上的应用程序作为代理来发起请求,以使请求看起来像是由服务器发起的。
漏洞形成原因由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制,导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。
漏洞危害
窃取数据:攻击者可以伪造 ...
Apache Log4j 简介Apache log4j 是 Apache 的一个开源项目, Apache log4j2 是一个 Java 的日志记录工具。该工具重写了 log4j 框架,并且引入了大量丰富的特性。我们可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。
漏洞简介log4j2 中存在 JNDI 注入漏洞,当程序记录用户输入的数据时,即可触发该漏洞。成功利用该漏洞可在目标服务器上执行任意代码。
下面是触发漏洞的两部分关键代码:
org.apache.logging.log4j.core.pattern.MessagePatternConverter 的 format() 方(表达式内容替换):
这部分内容重点就在于代码的主要内容就是一旦发现日志中包含 ${ 就会将表达式的内容替换为表达式解析后的内容,而不是表达式本身,从而导致攻击者构造符合要求的表达式供系统执行。
在 ${ 中可以使用的部分关键词如下:
log4j-java
123456${java:version} g ...
SpringBoot简介Spring介绍Spring 是 java web 里非常常见的组件了, 自然也是研究的热门, 好用的漏洞主要是 Spring Boot Actuators 反序列化
Actuators介绍Spring Boot 基本上是 Spring 框架的扩展。 Actuator 是 Springboot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator ,开发者可以很方便地对应用系统的某些监控指标进行查看、统计等。在 Actuator 启用的情况下,如果没有做好相关权限控制,非法用户可通过访问默认的执行器端点( endpoints )来获取应用系统中的监控信息。
常见端点信息Spring Boot 1.x 版本默认内置路由的根路径以 / 开始, 2.x 则统一以 /actuator 开始
https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/html/production-ready-endpoints.html
路径
描述
/auto ...
Shiro简介Apache Shiro 是一种功能强大且易于使用的Java安全框架,它执行身份验证、授权、 加密和会话管理,可用于保护任何应用程序的安全。
Shiro提供了应用程序安全性API来执行以下方面:
1)身份验证:证明用户身份,通常称为用户”登录”;2)授权:访问控制;3)密码术:保护或隐藏数据以防窥视;4)会话管理:每个用户的时间敏感状态。
上述四个方面也被称为应用程序安全性的四个基石。
漏洞发现Shiro组件识别在访问及登录时抓包,如果响应头set-cookie中显示rememberMe=deleteMe,说明使用了Shiro组件
Shiro漏洞搜索通过 fofa、zoomeye、shodan 这类平台搜索相关特征来发现目标。
例如 fofa 的搜索关键词:
12header="rememberme=deleteMe" header="shiroCookie"
Shiro漏洞检测工具https://github.com/fupinglee/ShiroScan
https://github.com/sv3nbeast/ ...
Fastjson简介Fastjson 是阿里巴巴公司开源的一款 JSON 解析器,它可以解析 JSON 格式的字符串,是一个 Java 库, 支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 Java Bean。
可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。
Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。
https://www.runoob.com/w3cnote/fastjson-intro.html
历史漏洞Fastjson <=1.2.24 反序列化远程命令执行漏洞Fastjson <=1.2.41 反序列化远程命令执行漏洞Fastjson <=1.2.42 反序列化远程命令执行漏洞Fastjson <=1.2.43 反序列化远程命令执行漏洞Fastjson <=1.2.45 反序列化远程命令执行漏洞Fastjson <=1.2.47 反序列化远 ...
Thinkphp简介Thinkphp 是一种开源框架。是一个由国人开发的支持 windows/Unix/Linux 等服务器环境的轻量级PHP开发框架。
很多cms就是基于 thinkphp 二次开发的,所以 thinkphp 出问题的话,会影响很多基于 thinkphp开发的网站。
基于thinkphp的几个cms框架
Thinkphp历史漏洞
版本
漏洞类型
ThinkPHP3.2.3
缓存函数设计缺陷可导致Getshell
ThinkPHP3.2.3
最新版update注入漏洞
ThinkPHP3.2.X
find_select_delete注入
ThinkPHP3.X
order_by注入漏洞
ThinkPHP5.0.X
sql注入漏洞
ThinkPHP5.0.10
缓存函数设计缺陷可导致Getshell
ThinkPHP5
SQL注入漏洞&&敏感信息泄露
ThinkPHP5.X
order_by注入漏洞
ThinkPHP5.X
远程代码执行
Thinkphp历史漏洞发现
默认页面、错误页面
...
Struts2简介Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web 应用的开源MVC框架,主要提供两个版本框架产品: Struts1和Struts2;Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2是Struts的下一代产品,是在 struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。
Struts2历史漏洞原理分析https://tttang.com/archive/1583/
https://su18.org/post/struts2-5/
Struts2历史漏洞环境搭建1https://github.com/vulhub/vulhub/tree/master/struts2
Struts2历史漏洞发现Struts2框架识别
通过网页后缀来进行判断,如 .do 或者 .action
通过 /struts/w ...