0x1 基本情况
偶然发现一台web服务器很怪异,其网站页面上增加了一堆外文的页面链接,点击一篇进去之后,内容如下图所示:
该网站是中文网站,绝不可能存在上述的页面内容,同时页面中嵌入一堆的JS代码。很明显,该网站已经被黑,未避免遭受进一步的危害,紧急采取措施让服务器下线。由于该台服务器部署于单位异地远程机房,下线后无法直接对服务器进行分析,只是采取远程协同分析日志文件的方式(拿到一些web日志文件,以及一些异常PHP文档),因此无法实施深入分析。
服务器是windows系统,使用Apache作为web服务器,网站基于PHP+WordPress开发。服务器基本情况:
0x2 页面简单分析
上图中的JS代码如下表所示:
经过简单分析,很明显上表中的这段代码应该是攻击者的XSS跨站漏洞利用代码,主要用于获取访问该页面的用户的cookie信息,根据函数名称getCookie也很容易得知其功能。
上述代码中base64加密部分解密后后内容如下:
可知,攻击者XSS服务器为193.238.46.57,地址查询如下图所示,目前该页面无法访问。
0x3 日志分析
1、access.log日志
分析该日志,发现了密码暴力猜解记录、漏洞攻击历史记录、wordpress登陆操作、网页爬虫等记录。
a) 大量暴力破解或DDOS攻击报文
通过查看日志发现,每天有大量的IP访问wordpress网站xmlrpc.php文件。利用POST方式提交发送数据,由于日志中无法看到POST数据报文内容,猜测应该是用于暴力密码穷举;wordpress管理登陆接口做了防暴力破解防护,利用xmlrpc.php接口可以绕过上述登陆限制,可以通过post数据到xmlrpc.php进行密码破解尝试,该行为也导致服务器资源损耗严重。
b) 大量漏洞攻击记录
日志中同样发现大量的漏洞攻击记录,尤其是对ThinkPHP5远程代码执行漏洞的利用尝试,说明恶意网络攻击行为很频繁。下表是服务器一天中遭受漏洞攻击的情况:
提取恶意URL列表如下:
c) Wordpress登陆操作
从access.log 中发现了一些Wordpress后台管理成功登陆的操作,说明Wordpress的账户密码已失陷,根据时间和登陆IP判断不属于管理员。同时这些操作重复次数多,且发生操作的IP也不定,因此怀疑本台服务器的攻击者不止一个,可能是遭受多个自动化的网络攻击行动所致。
[03/Mar/2020:00:45:53 +0800] "GET /wp-login.php HTTP/1.1" 302 6 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36" |
---|
[03/Mar/2020:00:45:55 +0800] "GET /wordpress/wp-login.php HTTP/1.1" 200 3129 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36" |
[03/Mar/2020:00:45:57 +0800] "POST /wordpress/wp-login.php HTTP/1.1" 200 4116 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36" |
[03/Mar/2020:00:45:59 +0800] "GET /wp-admin/post-new.php HTTP/1.1" 404 17318 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36" |
[03/Mar/2020:00:46:00 +0800] "GET /wp-admin/plugin-install.php?tab=upload HTTP/1.1" 404 17318 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36" |
[03/Mar/2020:00:46:05 +0800] "GET /wp-admin/theme-editor.php HTTP/1.1" 404 17318 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36" |
[03/Mar/2020:00:48:11 +0800] "GET /administrator/index.php?option=com_content&view=article&layout=edit HTTP/1.1" 301 6 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36" |
d) 网页爬虫记录
分析一天的日志文件,从中发现了如下的爬虫信息,如下表所示,其中SEMrushBot和头条爬虫在这一天中最为活跃。
SEMrushBot | Mozilla/5.0 (compatible; SemrushBot/6~bl;+http://www.semrush.com/bot.html) |
---|---|
百度爬虫 | Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html) |
头条爬虫 | Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; https://zhanzhang.toutiao.com/) |
Bing爬虫 | Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) |
谷歌爬虫 | Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.92 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) |
Moz爬虫 | Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com) |
神马搜索 | Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 YisouSpider/5.0 Safari/537.36 |
对于网站运营者来说,发现网站被黑后采取措施对被黑服务器系统进行清理。但是其实由于“搜索引擎爬虫”的不辞辛劳的卖力干活,其实网站被黑的页面已被爬取并留存证据。
2、error.log日志
查看error.log发现了一些问题,比如大批量的错误提示在一堆怪异英文名字命名的PHP文件中“找不到“check_is_bot.php”文件,最早出现的提示是2018年1月20日,说明服务器早在2年前就已经被黑,如下表:
于是,跑到C:\phpStudy\WWW\wordpress2\wp-content\plugins\anything-order-by-terms\modules\,发现目录下确实多了一堆怪异英文名字的PHP文件。
anything-order-by-terms是一个wordpress插件,通过该插件,可以在管理屏幕上的内置列表中轻松拖放来安排任何帖子类型和术语。(使用者已不知道是否自己安装)
改名下总共有430多个PHP文件以及几十个php.suspected文件,一些php文件名列表如下图所示:
同时,发现这些文件的生成时间是:2018年1月12日15:29分钟。
于是到往前追溯,发现1月12日13:33有异常的错误日志,关联到404.php
此外,在这些目录下面,确实发现check_is_bot.php相关的文件:check_is_bot.php.suspected,同时在目录下也发现了其他的一堆以php.suspected结尾的文件,如下图所示,判断应该是被杀毒软件重命名了。
check_is_bot.php的文件内容如下:
解码后的PHP代码如下图所示:
打开任意一个怪异英文名php文件,发现其实是一个html页面,其中每个页面首部都添加了一段PHP代码,用于包含check_is_bot.php,并且执行一段js代码。如下表所示:
jscs.min.js的内容查看如下:
简单分析代码,先对M5s字符串进行处理,处理的代码如下,即每隔2个字节经过parseInt转换,再转换成字符串,接着调用setTimeout执行。
0x4 小结
本次分析只是简单记录服务器被黑的情况,由于网站本身对外提供服务功能有限,日常访问使用人数不多,导致运营者基本没有维护管理,从几年都没有发现问题可以看出。相信这种情况,很多单位都存在,有些小网站系统由于一时的业务需要,利用开源框架架设完毕后,功能能用就放着不管了,后续不会投入资源进行更新、维护和管理,甚至都不记得有这个网站系统。随着网络安全监督力度加大,这些容易被忽视的网站很容易出现违法违规情况,如果遭受网络攻击后造成不良影响,可能影响企业的正常经营活动,建议必须投入资源关注:
1、汇总摸清单位所有对外服务器的情况;
2、明确各个服务器使用和管理责任部门和人员;
3、实施网站日常巡查制度;
4、勤更新升级补丁;
5、限制网站后台管理;
6、定期实施网络安全评估;
7、投入资源建设、升级网站安全防护软硬件系统。
*本文原创作者:cgf99,本文属于FreeBuf原创奖励计划,未经许可禁止转载