一、什么是Webshell
Webshell是一种由攻击者在操作系统上部署的一种特殊脚本,通常是将其编写为web脚本语言(php、jsp、asp)或其他语言脚本。攻击者通过web服务器提供的一个web后门,即可远程控制web服务器,进而获得web服务器的权限。
<?php
eval($_GET['cmd']);
?>
上面是一段 PHP 代码实现的 web shell,其中 eval($_GET['cmd']) 的含义是接受一个 GET 参数 cmd 并执行其内容。
二、Webshell的危害
从操作系统层面上看,Webshell会从指定路径下查找可用的Shell(如bash、cmd等),并将正常请求发往web服务器。同时,Webshell还会往文件注入来获取权限的代码,甚至修改系统配置文件或者上传web木马,从而将服务器上的所有文件拷贝一份到另外一台计算机上,让攻击者获取服务器的控制权。这会直接导致服务器被攻击者控制,完全暴露在攻击的风险之下。
从应用层面上看,Webshell可以通过读写文件进行钓鱼、上传木马或敏感文件等恶意行为直接对网站或整个服务器造成巨大的损失。
三、如何检测Webshell
第一步是针对web服务器上面存在的web脚本,采取防范措施,只有授权人员才能使用,防止被黑客使用。第二步是运用防护软件,一旦检测到webshell的木马文件,及时做出反应并清除木马。第三步是要加强文件访问控制功能,确保在运行web脚本的时候只有合法用户才具有访问的权限。
find / -name php.deface -type f -exec grep -l “eval(base64_decode” {} \; > list.txt
这个命令会在整个服务器中搜寻出Webshell木马,可以通过这些木马的后缀名,如.php,来检测出在网站中被感染的PHP文件,并加以处理。
四、如何预防Webshell的攻击
预防Webshell需要我们从多个方面做到全面的保护。首先,系统产品的安全性很重要,所以我们要定期地安装补丁程序,及时更新操作系统和防病毒软件。其次,只有少数人员有管理员账户的使用权限,并定期更改密码。同时,我们需要限制软件的使用范围和操作命令,加强访问控制功能。
$_POST['cgi-bin'] = str_replace("
上述代码是一个Web后门攻击例子,其中$_POST['cgi-bin']是攻击者通过网络发出的指令,该代码会把攻击者的php脚本写入开放的文件夹,然后由被攻击者运行,从而获得控制web服务器的权限。因此,正确的做法是应该将文件上传到敏感目录之前,对上传文件的格式和内容进行严格的校验,防止攻击者通过web上传Webshell。
五、Webshell的应急响应
一旦有人破解站点,发现文件被替换或添加了一些奇怪的代码,可以使用 git , diff , cmp命令来判断并排除被入侵的文件。
#查看文件是否被修改过
git diff
cmp 命令
#比较已有文件,原文件为a.txt,修改了的文件为b.txt
cmp -lb a.txt b.txt
以上两种方法都可以查看文件是否存在修改,以便进行应急处理。
六、总结
Webshell是一种可以在Web服务器通过Web服务运行的后门程序,不仅可以让攻击者随意控制被攻击服务器上的所有文件,而且无法被看作是普通的网络攻击,防护难度非常高。
因此,我们需要谨慎对待web服务器上面的所有信息,保持良好的网络健康习惯,防止遭受到webshell的攻击。