一次web后门生成过程溯源

华盟原创文章投稿奖励计划

文章来源于网络:大仲的书屋

上周末,朋友网站(www.x.com)被入侵,百度上搜出许多博彩页面。印象中他网站不是第一次被入侵,上次被入侵还是半年前了。朋友的安全服务商来应急后并未彻底清除后门。在答应请客吃饭后决定帮看看。

网站是用phpcms搭建,版本是phpcms v9。先来看一下网站上收集到的信息,第一个就是网站某个php文件被插入了require '/tmp/.app/phpcms';,根据这个路径看了下内容,就是博彩页面内容,看上去还是一套phpcms 应用,随机产生页面,并只对搜索引擎有效。

第二个是在caches 目录下发现了webshell 暂且叫做houmen.php,用stat查看了下时间信息,并截图记录(习惯上),随后就备份了下,删除了后门。看后门时间应该是半年前那次的,没有删除。删除后门后,开始浏览其他信息。再次浏览网站目录的时候发现后门神奇的生成了。搜了下这段时间的access日志,没有POST请求,日志中没有关键词。删除后门后,没过一小时又生成。

针对这种情况,第一时间想到用inotify来监控看下生成文件前后还有哪些文件被访问到。使用inotifywait 进行监控,当后门再次出现时inotify 并未给出满意答案。可能由于php那个缓存机制导致inotify未监控到php文件的调用顺序。

尝试全站搜索字符串,并未搜到后门信息,猜测后门信息可能在数据库内。

linux除了inotify 还有auditd 工具,不光能监控文件,还能监控系统调用,使用auditctl添加规则后,可以看houmen.php生成时整个php调用流程。根据auditd输出信息提取路径得到具体调用流程如下:

网站目录/phpcms/base.php  网站目录/.htaccess  网站目录/index.php/.htaccess  网站目录/index.php  网站目录/phpcms/base.php  网站目录/phpcms/libs/functions/global.func.php  网站目录/phpcms/libs/functions/extention.func.php  网站目录/phpcms//libs/functions/autoload  网站目录/phpcms/libs/functions/autoload/plugin.func.php  网站目录/phpcms/libs/functions/autoload/video.func.php  网站目录/caches/configs/system.php  网站目录/phpcms/libs/classes/application.class.php  网站目录/phpcms/libs/classes/param.class.php  网站目录/caches/configs/route.php  网站目录/phpcms/modules/formguide/index.php  网站目录/phpcms/model/sitemodel_model.class.php  网站目录/phpcms/libs/classes/model.class.php  网站目录/phpcms/libs/classes/db_factory.class.php  网站目录/caches/configs/database.php  网站目录/phpcms/libs/classes/mysql.class.php  网站目录/phpcms/model/sitemodel_field_model.class.php  网站目录/phpcms/libs/classes/cache_factory.class.php  网站目录/phpcms/libs/classes/cache_file.class.php  .....  网站目录/caches/houmen.php

这里根据auditd给出的目录,从目录中看到caches字样,猜测这大概是黑客利用cache功能写的后门,后边的日志分析阶段证实了这个猜测。

根据auditd给出的后门创建时间,到web的access 日志里去查看相应时间的日志:

以下日志为手动生成日志,仅供说明原理  243.125.71.46 - - [25/Mar/2019:20:10:20 +0800] "GET /houmen.php HTTP/1.1" 404  243.125.71.46 - - [25/Mar/2019:20:10:20 +0800] "/index.php?m=formguide&c=index&a=show&formid=1&siteid=1 HTTP/1.1" 200 400  243.125.71.46 - - [25/Mar/2019:20:10:26 +0800] " GET /houmen.php HTTP/1.1" 200 40023  243.125.71.46 - - [25/Mar/2019:20:10:32 +0800] "GET /?gid=83157124407 HTTP/1.1" 200 40023  243.125.71.46 - - [25/Mar/2019:20:10:40 +0800] "GET /?ctid=89110007864 HTTP/1.1" 200 40023  243.125.71.46 - - [25/Mar/2019:20:10:46 +0800] "GET /?ctid=98816131019 HTTP/1.1" 200 40023

通过日志可以看到,黑客访问了index.php?m=formguide&c=index&a=show&formid=1&siteid=1这个路近后生成后门。结合前面的cache信息可以猜测数据库某个跟cache相关表里有formid=1 并且siteid=1的数据记录里包含后门信息。用mysql数据库连接软件连上后在x_model 这个表里发现

一次web后门生成过程溯源

图片.png

这里的modelid应该就是formid了,修改了setting信息,试了试这里确实是生成后门的内容。phpcms把数据库里内容当做php执行,这种做法不妥,至少得加恶意代码过滤,不仔细找后门,不容易发现,留的后相对文件后门来说隐秘性更高。

华盟知识星球入口

删除后门,删除数据库里保存的后门,后续观察吧,安全这事,是个持续过程。

本文原创,作者:fox,其版权均为华盟网所有。如需转载,请注明出处:https://www.77169.net/html/233396.html

发表评论