在威胁领域,web shell并不是一种新事物。Web shell是一种用PHP、ASL、Perl等语言编写的脚本(选用的语言视可用的环境而定),它可以被上传到web服务器,便于进行远程管理。安装web shell通常都不是出于一种好的目的,攻击者通常将其安装在被盗用的服务器上,一旦安装到位,web shell将会允许攻击者完全接管受害者的服务器,它也可以被用来攻击内部系统。
在最近的一次调查中,我发现在一个共享平台上,一个被盗用的网站正在传播网络钓鱼页面。我设法获取了包含钓鱼工具包的档案,却发现里面还包含一个web shell。它也被安装在了服务器中,而且位置很容易找到。这个web shell名为“RC-SHELL”,它并不是新出现的脚本(我在2013年曾经提到过),但它在VT中的检出率非常低(4/55),而且在几个小时前刚刚完成第一次上传,也许它已经进行了改进或者更新?
新型的web shell功能非常强大,能为攻击者提供多种特性。因为图片比文字更有说服力,我决定在下面详细介绍一下web shell的界面,并且展示它们的特性。和通常一样,这个web shell是用PHP编写的, 因为凭证是写死的,所以其访问web界面时会受到限制。登录密码位于源代码中,需要通过快速搜索彩虹表来测试登录名和密码吗?不,这是因为访问权限是开放的(通过修改代码,身份验证被禁用)。需要注意的是,源代码中也包含所有者的电子邮件地址。
当你访问URL时,这是默认的界面:
在这个界面上,你可以看到主机的信息和基本的PHP设置,例如“安全模式”状态、可用的数据库支持。上面的一行菜单中包含所有的特性,让我们来一个个浏览一下。
“Files”菜单用来访问文件管理器,它可以浏览本地文件系统,或者对文件执行各种操作 (复制、删除、重命名、移动等):
“Search”菜单用来执行文件搜索操作,你也可以寻找文件中包含的特定内容 (例如“grep”):
“Upload”菜单用于将本地文件系统中的文件进行转移。文件可以通过本地驱动器(攻击者的电脑上)上传,或从远程位置取出(使用HTTP、FTP这一类的普通协议):
“Cmd”菜单用于对目标执行shell指令(这是web shell真正的核心特性)。执行命令后,将输出返回给浏览器:
“Eval”菜单和“Cmd”菜单具有相同的功能,但它只执行本机的PHP代码。这是一个“PHP Shell”:
“FTP”菜单提供了一个强大的FTP客户端,例如WinSCP和其他图像工具:
“SQL”菜单提供了PHPMysqlAdmin这类工具。可以和SQL服务器相互作用:
“Mailers”菜单,顾名思义,是一种用来发送垃圾邮件的工具。这种活动基于一个CSV文件,它可以发送简单的电子邮件:
“Calc”菜单是一个工具箱,提供哈希计算器、编码器、转换器等工具:
“Tools”菜单是我的首选。它提供了许多用于攻击其他资源的工具,例如强力攻击、代码注入、端口扫描器等:
最后两个菜单是用于管理进程的,并且显示系统主机的信息,例如CPU、内存、文件系统等:
正如你所看到的,新型的web shell功能非常强大。为了减少风险, 最佳的做法是:
•在受限制的环境中(VM、Docker container)运行web服务器。
•不允许通过sudo命令获取访问特权。
•不要开放数据库全部的DBA访问权限,对数据库/表的访问权限进行限制,只认可必要的SQL命令。
•使用出口过滤器,限制与外界的通信。
•保护好你的web服务器路径。