首页| 版块| 我的| 发帖| 消息
主题:论坛被攻击?部分文件被修改加载脚本(文件检查)
zhangjingyu 
测试期间发现,有的时候后台统计数量,和自己记录在纸上的统计数量对不上。最后发现,因为文件夹名称前面有safefile,而它似乎是一个函数,因为在同一文件(filecheck.php)的后面,其完整代码为:
function safefile($dir,$ext='',$sub=1){
    global $md5_a;
    $exts = '/('.$ext.')$/i';
    $fp = opendir($dir);
    while($filename = readdir($fp)){
        $path = $dir.$filename;
        if($filename!='.' && $filename!='..' && (preg_match($exts, $filename) || $sub && is_dir($path))){
            if($sub && is_dir($path)){
                safefile($path.'/',$ext);
            } else{
                $md5_a[$path] = md5_file($path);
            }
        }
    }
    closedir($fp);
}代码不理解是什么意思,但里面提到了md5和md5文件,也就是safefiles.md5。里面的内容是这样一行一行的:
6579981de477fffd96e75d8b081f40e1    ./active.php

前面是文件的md5值(不知道怎么算出来的,也不用去研究,似乎有网站可以做到),后面是对应的文件。在后台“程序文件检查”里会校验文件的md5值,如果修改过,自然这个值就有变化,所以会提示“文件被修改”。实际上这个没什么太大的意义。

经过查看在后台列出来的文件,我发现,只要是safefiles.md5里面提到的文件,后台列表里就没有(打字到这里,我也不确定我说的是否正确)。重命名这个文件,就没法检查了,会提示什么校验文件丢失什么的。那好办,只保留一行就可以了啊,也就是只保留一个文件的检验码。

经过查看,以及和原始安装文件对比,确定ck.php没有修改过,最起码文件内容是完全一样的,所以最后的safefiles.md5文件里只有一行:
1d6ae8565893957a0f900a31412a7aff    ./ck.php

但在后台这个文件还是被标注了“文件被修改”。无所谓,内容没有变化,应该是修改时间不同了,所以md5不一样了,还是前面说的,没有什么实际意义,提示就提示呗。其实,完全可以删除检查safefiles.md5文件的有关代码,或者也可以修改模板文件以删除后台的“文件状态”列,因为只有ck.php会被检查,所以除了唯一它的“文件被修改”外,其余所有文件都是“未知文件”,也没有“文件丢失”。没什么实际意义,但目前也没删除,反正基本都是青一色的“未知文件”(只有一个ck.php文件被修改),而且也不是我们需要关注的地方。

实际需要查看的是我们自行添加的“状态”列,如果这里显示“文件被修改”,那我们就要核对下,是我们自己主动修改的,还是被恶意修改的,这也是这几天经过努力才实现的。
zhangjingyu回帖于2022-11-17 22:59[查看电脑版]
下一页 (1/2)
下一楼»:} elseif ($adminitem == 'filecheck') {
/*程序文件检查*/
if(!$files = reado ..
«上一楼:21楼表格数据添加完成,只有mode目录特别,不知道怎么回事。

查看全部回帖(40)
«返回主帖