前言

RCE得搭配着文件上传的点来进行利用

环境搭建

用docker搭个php7的环境,作者用的php7.0

docker run -itd --name php7 -p 8083:80 php:7.0-apache

安装opcache拓展

  1. 进入docker容器:docker exec -it 容器id /bin/bash
  2. 安装opcache:cd /usr/local/bin && docker-php-ext-configure opcache --enable-opcache && docker-php-ext-install opcache
  3. 重启apache:cd /etc/init.d && ./apache2 restart

查看phpinfo,出现这个说明安装成功:



修改一下php.ini,应用opcache:

cd /usr/local/etc/php && cp php.ini-development php.ini

然后改php.ini:



最后重启一下docker容器,配置生效:

opcache原理

Opache是php中一个生成缓存文件的拓展,当我们访问一个php文件时,他会产生一个缓存文件,下次访问该php文件时,就会直接根据缓存文件回显页面,查看tmp下,已经生成了缓存文件:

RCE操作

想要rce,我们就得覆盖掉生成的bin文件,首先得计算出文件夹的这个system_id,也就是8431e96e6adfc8fc75ad38a0f6a7eb4e,那么这个system_id怎么计算呢?偷别人的脚本(bushi : https://github.com/GoSecure/php7-opcache-override

非常的方便快捷



现在得生成我们的恶意bin文件去覆盖掉原先的bin文件,先分析一下bin文件的结构:



010可以看出,bin文件的文件头是OPCACHE+system_id,由于opcache有个时间戳验证,如果我们伪造的时候,时间戳对不上是不会生效的,上图中的40h处就是时间戳的值,点击40h处,然后看Signed Int64的值,到时直接替换这个值就行了



我们在自己服务器上生成一个恶意的bin文件,改掉时间戳跟system_id的值,上传覆盖phpinfo.php.bin,访问覆盖成功(我这里语法写错了,难崩)

php8的opcahce

在php8后,system_id的生成方式发生了改变,所以7的脚本用不了了,但是8是有规律的,其实我们只要能获取到php的正确版本,就能自己搭建生成一个完全一样的system_id,其余操作都是相同的,唯一不同的就在于system_id的生成

opcache导致的RCE复现的更多相关文章

  1. CVE-2019-0232:Apache Tomcat RCE复现

    CVE-2019-0232:Apache Tomcat RCE复现 0X00漏洞简介 该漏洞是由于Tomcat CGI将命令行参数传递给Windows程序的方式存在错误,使得CGIServlet被命令 ...

  2. 钉钉dingtalk=6.3.5版本RCE复现

    看到网上公开了钉钉RCE的利用方式,第一时间来复现一下. 钉钉dingtalk=6.3.5版本RCE复现 免责声明: 影响版本: 漏洞POC: 漏洞复现: 存在漏洞版本下载地址: 免责声明: 本文章仅 ...

  3. 向日葵RCE复现

    CNVD-2022-10270/CNVD-2022-03672 向日葵RCE复现 前言 向日葵是一款免费的集远程控制电脑手机.远程桌面连接.远程开机.远程管理.支持内网穿透的一体化远程控制管理工具软件 ...

  4. CVE-2022-22947 Spring Cloud Gateway SPEL RCE复现

    目录 0 环境搭建 1 漏洞触发点 2 构建poc 3 总结 参考 0 环境搭建 影响范围: Spring Cloud Gateway 3.1.x < 3.1.1 Spring Cloud Ga ...

  5. Everything 配置问题导致信息泄露复现

    0x00 简介 Everything是一个私有的免费Windows桌面搜索引擎,可以在NTFS卷上快速地根据名称查找文件和目录. "Everything" 是 Windows 上一 ...

  6. Spring Boot Actuator H2 RCE复现

    0x00 前言 Spring Boot框架是最流行的基于Java的微服务框架之一,可帮助开发人员快速轻松地部署Java应用程序,加快开发过程.当Spring Boot Actuator配置不当可能造成 ...

  7. CVE-2019-0708 RCE复现

    漏洞环境 192.168.91.136     windows7 6.1.7601 192.168.91.151      kali Windows7 SP1下载链接: ed2k://|file|cn ...

  8. CVE-2019-10392:Jenkins Git client插件RCE复现

    0x00 简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. 0x01 漏洞概述 Git客 ...

  9. Redis 4.x RCE 复现学习

    攻击场景: 能够访问远程redis的端口(直接访问或者SSRF) 对redis服务器可以访问到的另一台服务器有控制权 实际上就是通过主从特性来 同步传输数据,同时利用模块加载来加载恶意的用来进行命令执 ...

  10. 代码审计之CVE-2019-9081 Laravel5.7 反序列化 RCE复现分析

    本文首发于先知社区:https://xz.aliyun.com/t/5510 环境: php7.2+apache+laravel5.7 漏洞描述: Laravel Framework是Taylor O ...

随机推荐

  1. 0x61 图论-最短路

    B题 Telephone Lines https://ac.nowcoder.com/acm/contest/1055/B 中文题面:https://www.luogu.com.cn/problem/ ...

  2. Java | 个人学习指南笔记

    前言:由于作者已经有C语言,C++和Python语言的基础了,所以在文章的编写时会以这几门编程语言作对比.本文学习自 C语言中文网的 Java 教程,部分内容引用自这.引用内容仅作学习使用. 第1章: ...

  3. 秒杀活动java怎么实现

    秒杀与其他业务最大的区别在于:秒杀的瞬间: (1)系统的并发量会非常的大 (2)并发量大的同时,网络的流量也会瞬间变大. 一个秒杀或者抢购页面,通常分为2个部分,一个是静态的HTML等内容,另一个就是 ...

  4. <vue初体验> 基础知识 3、vue的计数器

    系列导航 <vue初体验> 一. vue的引入和使用体验 <vue初体验> 二. vue的列表展示 <vue初体验> 三. vue的计数器 <vue初体验&g ...

  5. 机器学习-线性分类-支持向量机SVM-合页损失-SVM输出概率值-16

    目录 1. SVM概率化输出 2. 合页损失 1. SVM概率化输出 标准的SVM进行预测 输出的结果是: 是无法输出0-1之间的 正样本 发生的概率值 sigmoid-fitting 方法: 将标准 ...

  6. docker 安装 nacos

    转载请注明出处: https://www.jianshu.com/p/54f6da71ac48

  7. jmap 查看jvm内存大小并进行dump文件内存分析

    本文为博主原创,未经允许不得转载: 1.jmap的使用 Jmap 可以用来查看内存信息,实例个数以及占用内存大小. jmap -histo[:live] 打印每个class的实例数目,内存占用,类全名 ...

  8. spring--FactoryBean和BeanFactory有关系吗

    BeanFactory 和 FactoryBean 是 Spring 框架中的两个不同的概念,两者是雷锋和雷峰塔的关系,就是没有任何关系,它们在 Spring 的依赖注入和 bean 创建过程中扮演不 ...

  9. 问题--C中结构体想要嵌套一个该结构体指针,但是系统无法识别该类型

    代码如下: typedef struct_Person{ char name[64]; int age; //Person* person; //这里会出现一个问题,由于Person是在末尾定义的,那 ...

  10. [kubernetes]服务健康检查

    前言 进程在运行,但是不代表应用是正常的,对此pod提供的探针可用来检测容器内的应用是否正常.k8s对pod的健康状态可以通过三类探针来检查:LivenessProbe.ReadinessProbe和 ...