wordPress/ target=_blank class=infotextkey>WordPress是一个知名的开源内容管理系统(CMS),用于创建网站和个人博客。根据预计,目前有35%的网站使用这一知名CMS,如此之大的比例也使其成为了威胁参与者的理想目标。WordPress平台存在的一大弱点就是允许攻击者破坏网站的安全性,而这个弱点会随着网络安全形势的严峻而更加恶化。
平时,我们经常可以看到有攻击者针对CMS平台发起攻击,这已经不再是一个新闻。威胁行为者已经发现,对网站进行攻击可以成为一种攻破组织资产的有效手段。这篇文章首先介绍我们在野外观察到的Payload示例,列举出针对WordPress的不同类型的攻击,深入揭秘攻击者是如何利用非法获取的管理员访问权限、API、Alfa-Shell部署和seo投毒来实现攻击。
这种方法需要使用管理员的帐户和密码访问使用WordPress架构的站点。攻击者可能会利用漏洞,或使用泄露的密码及弱密码实现登录,这一过程可以通过向目标站点的/wp-login.php发送POST请求来实现。
使用弱密码登录的攻击示例:
攻击者进行暴力破解时所使用的密码:
成功登录后,具有管理员访问权限的攻击者就能操作多个选项,攻击者通常会进行如下操作:
1、安装带有后门的自定义主题;
2、安装插件以上传文件。
在成功获得管理员特权后,通常会进行这两种操作,此外攻击者还可以选择更改管理员密码,或创建新的管理员帐户。最常用的方法是使用公共的主题,利用远程代码执行(RCE)漏洞来嵌入自定义的后门。除此之外,还有一些文件上传的插件,攻击者可以借助这些插件直接上传Payload。
应该注意的是,我们经常见到一个后门会部署具有相似功能的另一个后门。当Payload/命令/代码被编码在Cookies或POST数据中时,使用GET或POST请求就可以完成部署。解码的逻辑位于此前部署的后门内部。在部署后,攻击者将收到新上传组件的URL。
我们观察到的另外一个值得注意的功能是能修改已经存在的.php文件,从而使恶意请求更加隐蔽。首先,记录所有可写的路径,选择一个合适的随机路径,然后修改所选的文件。
在已经使用的Payload中,修改现有.php文件的功能:
在实际案例中,修改后的程序功能已经应用于index.php之中,以在Unix隐藏文件(点文件)中包含使用.ico作为扩展名的恶意脚本,并伪装成图标。
使用隐藏的.ico文件修改WordPress index.php的示例:
另一个值得关注的功能是,可以影响其他相邻的域名。要实现这一点,需要Web服务器具有多个域名,并且需保证当前用户对该目录具有写访问权限。
尝试将Payload上传到相邻域名:
众所周知,攻击者可能会将WebShell部署到其攻击的WordPress网站上。在这里,我们将重点介绍ALFA TEAM/solevisible使用的高级工具之一——Alfa-Shell。
Alfa-Shell:
Solevisible的GitHub帐户:
这个WebShell为远程代码执行提供了一个用户友好的界面。例如:注册CGI Handler以允许执行Perl、Python或Bash脚本。Alfa-Shell还可以从WordPress配置文件中获取数据库凭据,从而进行数据库转储,并列举出所有虚拟域名和DNS设置。
用于执行各种类型脚本的CGI Handler:
部署的Bash脚本示例:
该WebShell还支持多种平台,包括windows。实际上,它能够从开发人员网站下载反向Shell并执行。
Alfa Team制作的简单Windows反向Shell二进制文件:
被攻击者的WordPress也可以作为重定向到广告页面的网站,可以通过修改主题的JAVAScript文件或页眉/页脚生成器功能(例如:wp-contentthemestwentyseventeenfunctions.php)来实现。经过修改后的JavaScript可以将用户重定向到攻击者指定的网站。
经过混淆后的JavaScript重定向:
重定向后指向的网页:
攻击者利用被攻击的WordPress网站做的另一类行为是搜索引擎优化(SEO)。我们发现,已经部署的PHP脚本会在GET请求中接收关键字。
WordPress“搜索引擎”:
脚本首先检查User-Agent是否与以下正则表达式中的其中一条相匹配,并检查$_SERVER[“REMOTE_ADDR”](发出HTTP请求的参与者的IP地址)的反向DNS查询是否包含google子字符串。如果发现,则将$isbot变量设置为1。
部署脚本的片段:
如果$isbot不为0,则使用相同的关键字,对硬编码的URL地址发出另一个HTTP请求。
部署脚本的片段:
如果返回的文本长度小于1000个字符,则使用必应(Bing)搜索引擎执行其它查询,并将与特定正则表达式匹配的结果附加到$text后面。
攻击者使用的文本:
如果再次执行相同的查询,就会返回最终的html页面,并将其保存在服务器上。
最终页面:
如果未设置$isbot,并且HTTP_REFERER包含类似于Google、Bing或Yahoo的字符串,则将其重定向到另外一个网站。
部署脚本的片段:
遭到入侵的WordPress网站也可能会被用于发布虚假或误导性文章,其中的内容往往很少,或者没有真实的细节。取而代之的是,攻击者往往会使用引人注目的标题,并编造吸引人注意的故事。
在遭到入侵的站点上发布的故事示例:
从以上示例可以看出,被攻击的站点发布了带有明显语法错误或煽情报导的故事。通常,这些文章的内容难以被理解。攻击过程是通过WordPress的XML-RPC应用程序编程接口(API)来实现的,该接口可以传输数据并执行多项任务,例如上传新文件、编辑和发布帖子。
POST /xmlrpc.php和metaWeblog.newPost(左侧)以及帖文内容(右侧)示例:
攻击者可以使用POST /xmlrpc.php和metaWeblog.newPost,这允许将博客内容直接(甚至远程)发布到WordPress网站。
上面提到的示例,只是目前已知攻击者会使用的一些技术。实际上,如果没有保证良好的安全性,易受攻击的WordPress站点很容易遭到攻击者的滥用。为了降低被攻击的风险,我们建议用户使用双因素认证(2FA)插件来防止凭据滥用,同时建议扫描未修复的漏洞。用户和网站管理员可以采用以下防护措施:
1、部署基本的安全防御措施,以减少网站的攻击面;
2、禁用或删除过时的或易受攻击的插件;
3、使用虚拟补丁程序来修复补丁不可用的漏洞,特别是针对需保障业务连续性的系统更要关注这一点;
4、应用权限最小化原则;
5、定期将CMS更新到最新版本,包括CMS中使用的插件。