框架漏洞
因为尝试访问/Runtime/Temp/2bb202459c30a1628513f40ab22fa01a.php的确成功,所以很有可能就是这个漏洞。虽然图都挂掉了,但是大概也能看懂。漏洞的成因大概就是ThinkPHP框架的缓存函数S()是以File方式,在/Runtime/Temp下生成缓存php文件,而且缓存文件名固定。另外乌云的这个漏洞详情没有公开,能找到的文章只有这篇。
本地搭建
一不小心下成了1.1版本,不过应该也没有太多的不同,这里我需要安装两个所需的php插件,并设置可写
$yum installphp-mbstring
$yum installphp-gd
$chmod777 -R wwwroot
浏览/Runtime/Temp目录发现如下文件:
27cdbc1fb1747e4f56dfb350211408e1.php
2923514e8f7dfe49ac5aebd5073e6000.php
5f172c2585b382a65d91e0c51a64dc7f.php
77278367caf1eb2690f686654d77e163.php
ea40274ec2c219aa956e2d44e586834d.php
其中如下两个文件是跟用户有关的文件:
5f172c2585b382a65d91e0c51a64dc7f.php
ea40274ec2c219aa956e2d44e586834d.php
这个两个文件内容一样,但不一定同时存在,内容如下:
//000000000000a:1:{s:2:"u1";s:13:"Administrator";}
?>
分析利用
如果用户名中存在用换行符或者回车,即可让语句从单行注释中逃逸出来:如注册一个名为%0aphpinfo();//的用户并登陆,这里需要注意注册以及登陆框会将输入url编码,所以要在burp里还原%0a,