真实黑客案例,thinkcmf日志注入一句话木马
发布于 作者:苏南大叔 来源:程序如此灵动~苏南大叔最近接到委托,拯救一台被黑客攻占的网站服务器。经过和黑客之间不断的攻防战役,苏南大叔慢慢稳定下了局面。然后就可以清晰的看到黑客的一条攻击途径。那么,本文中,苏南大叔就这个thinkcmf
的漏洞攻击方式说一说。
大家好,这里苏南大叔的“程序如此灵动”博客,主要讲述一些计算机代码的事情。本文讲述一个thinkcmf
系统的漏洞利用及解决方案。本文测试环境:thinkcmf@1.0
,thinkphp@3.2.3
,php@5.6
。
注意:这个漏洞虽然和thinkphp@3.2.3
有关系,但是核心部分确实不是thinkphp
引起的,而是thinkcmf
的漏洞。
漏洞描述
本文中的漏洞利用途径非常隐蔽,苏南大叔要不是仔细观察了日志很久,也想不到居然是如此利用的。当然,这个漏洞的利用,核心还是eval
一句话木马。
eval($_POST[f]);
漏洞的利用,就是写入这个木马,然后再执行这个木马即可。那么,黑客是如何写入这个木马的呢?又是如何执行这个木马的呢?
写入一句话木马
植入木马的过程,请求的链接地址是:
首先,这个漏洞的基础是:thinkphp@3.2.3
存在默认的日志路径和名称。在thinkcmf@1.0
中,这个默认日志路径类似:
/data/runtime/Logs/Portal/22_01_01.log
下面有相关描述:
其次,黑客的eval
请求操作形成了一个异常,虽然异常信息并没有报错显示。但是,却写入到了上述默认的日志文件中。
ERR: 模板不存在:themes/www/Portal/Index/<?php eval($_POST[f]);?>.html
报错信息是templateFile
参数,表示某个模版文件,因为这个模版文件的参数名称就是个一句话木马。因为这个模版文件必然是不存在的,所以,异常信息存入了日志文件中。需要注意的是:<?php ?>
这种标记被写入到了日志之中。
执行一句话木马
通过苏南大叔的测试,出问题的还是display
逻辑。这个漏洞允许require
服务器上面的任何文件,包括上一步中生成的这个默认的日志文件。那么,这个时候,一句话木马的eval
语句就被执行了。
这里假设上述日志文件名称是22_01_01.log
的话,那么,执行木马的请求地址就是:
值得补充的一点是:上述链接请求被执行后,会有个以上述日志文件内容一致的.php
文件出现在cache
文件夹中,然而这个文件并没有任何的利用价值,只是一个副产物罢了。
这里有更详细的描述:
thinkphp
不背这个锅
苏南大叔通过仔细对比官方的thinkphp@3.2.3
,发现确实这个写入木马的操作,并不是thinkphp
引起的,而是thinkcmf
的插件系统引起的。需要特别说明的是:官方thinkphp@3.2.3
,面对同样的植入木马请求,报错的是另外的信息,并没有把一句话木马写入到日志文件之中。
解决方案
如果知道这个攻击途径的原理后,解决方案也就很多了。这里,苏南大叔提供几个可用的思路。
解决方案一(推荐)
nginx
可以拦截参数中带eval
的请求:
server
{
#...
location / {
#...
if ($query_string ~ (eval|insert|group|select)){
return 403;
}
}
}
请参考:
解决方案二(治标不治本,速效)
thinkphp
的index.php
,也可以在代码最顶部拦截非法的action
。这些由thinkcmf
的插件体系带来的action
基本上都有漏洞的嫌疑,大家看着拦截即可,比如:display
和fetch
等等。
$a = @$_GET["a"];
if ( $a == "fetch" || $a == "display" ){
exit("stop");
}
解决方案三(推荐修改)
thinkphp
修改默认的名称逻辑,这个是没有参数可用来设置的,所以直接暴力修改代码即可。这个大家自己修改即可,位置见下图:
或者直接配置log_path
参数修改日志文件路径,把日志文件移动到一个别人找不到的角落,比如:www
目录外边。你自己发挥想象吧~
其它解决方案,待补充。
参考文献
类似的漏洞,可以参考下面的文章:
- https://newsn.net/say/ctf-phar-upload.html
- https://newsn.net/say/ctf-thinkphp-eval.html
- https://newsn.net/say/ctf-thinkphp-cache.html
结束语
thinkcmf
目前的最新版本是6.0
,这个比较古老的1.0
还是有待更新的。更多thinkcmf
的文章信息,请参考:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
666
学习一下
6666
666
来学习下
6
学习
学习一下
学习一下
6
6