服务器端请求伪造漏洞基础客户端请求客户端请求指的是由客户端设备(如个人计算机、智能手机、平板电脑等)或软件(浏览器、各种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 ...
简介一个基于J2EE的开放源代码的应用服务器
JBoss 是一个管理 EJB 的容器和服务器,但 JBoss 核心服务不包括支持servlet/JSP 的WEB容器,一般与Tomcat 或 Jetty 绑定使用。 Jboss 是 Java EE 应用服务器(就像Apache是web服务器一样),专门用来运行 Java EE 程序的。
Jboss历史漏洞访问控制不严导致的漏洞
JMX Console未授权访问
Getshell Administration Console 弱口令 Getshell
CVE-2007-1036 – JMX Console HtmlAdaptor Getshell
CVE-2010-0738 – JMX控制台安全验证绕过漏洞
反序列化漏洞
CVE-2013-4810 – JBoss EJBInvokerServlet 反序列化漏洞
CVE-2015-7501 – JBoss JMXInvokerServlet 反序列化漏洞
CVE-2017-7504 – JBoss 4.x JBossMQ JMS 反序列化漏洞
CVE-2017-12149 – ...
远程命令执行漏洞命令执行命令执行是指计算机程序接受用户输入的命令,并按照命令的要求执行相应的操作。命令可以执行各种操作,例如读取文件、创建文件、修改文件、运行程序、删除文件等。命令执行通常是通过一个命令行界面或终端窗口进行的。在命令行界面中,用户可以输入各种命令来操作计算机系统,而系统会相应地执行这些命令。命令行界面通常用于系统管理员、程序员或高级用户等需要更精细控制计算机系统的人员使用。
命令执行漏洞远程命令执行漏洞(remote command execution),简称RCE。一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后后台会对该IP地址进行一次ping测试,并返回测试结果。 如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交恶意命令,从而导致漏洞的发生。
命令执行与代码执行命令执行执行的是系统命令。代码执行执行的是程序代码。
漏洞危害
继承Web服务器程序的权限,去执行 ...
代码执行代码执行是指服务器上的解释器按照程序编写的指令和算法逐步执行代码的过程。
代码执行漏洞远程代码执行(remote code execution)简称RCE,由于应用程序在调用一些能够将字符串转换为代码的函数(如PHP中的eval)时,没有考虑用户是否控制这个字符串,则会导致代码执行漏洞的发生。WebShell能够执行代码,本质上就是利用了代码执行的函数。
漏洞危害1、执行PHP代码 获取服务器内容或相关信息2、向服务器写WebShell 利用代码PHP代码功能,往服务器中写入shell脚本3、控制服务器 利用shell脚本,上传大马,甚至控制服务器
RCE和GetshellRCE指的是攻击者通过利用应用程序或系统中的漏洞,成功地在目标系统上执行任意代码的能力。攻击者通常会使用RCE来获取对目标系统的控制,以进行恶意活动,例如数据盗取、删除数据或在系统上安装恶意软件等。“Getshell”是指攻击者成功地在受攻击系统上获得一个可操作的shell(命令行界面),使得攻击者可以在系统上执行任意命令。攻击者通常会使用getshell来进一步扩大其攻击范围或占领系统。RCE是一种攻击技术 ...