当前位置: 首页 > article >正文

Docker php文件本地包含--pearcmd.php利用

目录

前言

环境搭建

pearcmd.php巧妙利用

渗透


前言

docker包含日志文件,基本不可能,就以我自身的一个项目来说,在尝试包含日志文件时发现,客户将他的日志文件从定向到了设备文件,而php没有包含设备文件的权限

然后我们就想如何包含,发现客户的文件目录里有一个phpinfo(),然后可以使用phpinfo实现临时文件的包含。但是这个包含的成功率经测试不是很高。

所以我们这里再说一个新招

环境搭建

docker环境直接拉就可以了,然后会将你的当前目录映射到docker容器中

docker run -d --name web -p 8080:80 -v $(pwd):/var/www/html php:7.4-apache

pearcmd.php巧妙利用

pecl是PHP中用于管理扩展而使用的命令行工具,而pear是pecl依赖的类库。在7.3及以前,pecl/pear是默认安装的;在7.4及以后,需要我们在编译PHP的时候指定--with-pear才会安装。

docker环境中是有这个文件的如下图

原本pear/pcel是一个命令行工具,并不在Web目录下,我们是访问不到的。但我们遇到的场景比较特殊,是一个文件包含的场景,只要我们可以猜到路径,那么我们就可以包含到pear中的文件,进而利用其中的特性来搞事。  

如何利用

下面来看一下register_argc_argv这个配置,这个配置子docker的php环境中是默认开启的如下图所示,那这么个东西有啥子用,不急我们接着往下看

当开启了register_argc_argv这个选项,用户的输入将会被赋予给$argc$argv$_SERVER['argv']几个变量

如果PHP以server形式运行,且他有$_SERVER变量,而且开启了register_argc_argv这个选项,且request_info.argc不存在,就会出现http数据包中的query-string就会被作为$_server['argv']的值。我们来看一下

 pear中获取命令行argv的函数,他是先获取$argv,如果argv不存在再尝试$_SERVER['argv],我们可通过query-string控制$_SERVER['argv]。 然后pear中会有一个可以利用的参数config-create,这个命令需要传入两个参数,其中第二个参数是写入的文件路径,第一个参数会被写入到这个文件中。我们在query-string中传递config-create,这个东西就会被pearcmd.php调用。然后pearcmd.php两个参数在通过query-string进行获取。这样我们可以构造如下payload。注意config-create前面有一个空格不能忘记

 config-create /&file=/usr/local/lib/php/pearcmd.php&/<?=phpinfo()?> /tmp/hello.php

/&file=/usr/local/lib/php/pearcmd.php 要包含的文件

<?=phpinfo()?> 要包含的内容

/tmp/hello.php要写入的文件

渗透

抓包传值

 我们进入docker容器中查看文件是否成功上传

成功上传虽然有乱码但是代码已经传递上去

尝试包含所写如文件

包含成功

 


http://www.kler.cn/news/288933.html

相关文章:

  • Prometheus+Grafana监控数据可视化
  • 反序列化漏洞(一)
  • flume系列之:批量并行启动、停止、重启flume agent组
  • 设计模式之中介者模式
  • Pixelmator Pro for Mac 专业图像处理软件【媲美PS的修图软件】
  • 微信小程序 - 自定义头部导航栏开发
  • 【区块链 + 物联网】车载终端可信分账应用 | FISCO BCOS应用案例
  • 使用docker部署tensorrtllm推理大模型baichuan2-7b
  • 安装包丨WebGIS开发环境搭建及所需工具
  • 2024-MongoDB中国用户大会
  • Pandas 17-行操作和列操作
  • JavaWeb - Vue项目
  • 软考高级网络规划设计师含金量高吗?
  • 数据传输安全——混合加解密(国密)
  • 使用安信可Ai-WB2-12F开启wifi与手机通信TCP-IP(AT指令)
  • 在Spring框架中,如何实现依赖注入?请列举几种注入方式。请解释Spring Boot的自动配置特性,并讨论其如何简化Web应用开发。
  • 释放GPU潜能:PyTorch中torch.nn.DataParallel的数据并行实践
  • PhpStorm下调试功能配置
  • 【C语言】结构体新的理解
  • css重置样式表 reset.css 格式化默认css样式
  • JavaWeb基础 -- SpringMVC请求和响应
  • Unity 3D学习资料集合
  • 山东大学OLED透明展示柜案例:科技赋能,创新展示新体验
  • 使用HTTP代理注意的点
  • shell脚本发送随机请求
  • 计算机视觉之 GSoP 注意力模块
  • 《第二十六章 IO 流 - 字节流》
  • 在项目中使用 redis存储 数据,提高 项目运行速度
  • 【Linux】 理解 Linux 中的 `dup2` 函数
  • Spring框架中的@EventListener注解浅谈