Web|Web Shell 简介

Web-Shell 简介
Web-Shell是一种可以将其上传到web服务器的脚本文件,实现远程控制服务器。
攻击者可以利用SQL注入、远程文件包含(remote file inclusion, RFI)、FTP等常见漏洞,甚至可以使用跨站点脚本(cross-site scripting, XSS)作为社会工程攻击的一部分,上传恶意Web-Shell脚本。Web-Shell本身并不能利用远程漏洞实施攻击,它总是攻击成功后的第二步(这个阶段也称为post-exploitation)。
Web-Shell可以用目标web服务器支持的任何语言编写。最常见的如PHP和ASP、Perl、Ruby、Python和Unix shell脚本。
比较常见的Web-Shell有 China Chopper, WSO, C99 and B374K等。

为什么使用Web-Shells ?

  • 持久的远程访问:Web-Shell通常包含一个后门,允许攻击者远程访问并控制服务器,这将为攻击者省去在每次访问受攻击服务器时都需要利用漏洞的不便。
  • 特权升级: 攻击者可以通过利用系统上的本地漏洞来执行特权升级攻击,从而获得最高权限。
  • 用作中继点,转向入侵网络内其它主机。攻击者可能希望监视(嗅探)系统上的网络流量,扫描内部网络以发现活动主机,枚举网络中的防火墙和路由器。
  • 作为僵尸网络中的bot使用,向其它外部网络发起攻击。这为攻击者增加了额外的“匿名”层,因为他们使用第三方系统来发起攻击。

安装Web-Shell的方式
Web-Shell可以通过许多Web应用程序漏洞或配置缺陷进行安装,如:
  • 跨站点脚本(XSS)
  • SQL注入
  • 应用或服务的漏洞(例如、WordPress或其他CMS应用程序)
  • 文件处理漏洞(例如,上传过滤或分配权限)
  • Remote File Include (RFI) 和 Local File Include (LFI)漏洞
  • 公开的管理接口

如何检测Web-Shell
以下现象表示是你的系统可能已被Web-Shell感染:
  • 网站非正常时间的高使用率(由于潜在的上传和下载活动)
  • 具有不寻常的时间戳的文件(例如,比安装的web应用程序最近更新的文件)
  • 在外网可访问的地方(网络根目录)存在可疑文件
  • 文件包含可疑关键字引用,如exe或eval
  • 日志中发现意外网络连接。例如: 文件发起异常的网络请求(例如,JPG文件使用POST参数发出请求),或从内部子网到DMZ服务器的可疑登录,反之亦然
  • web服务器进程执行的可疑shell命令(如目录遍历)

如何防御Web-Shell
Web-Shell的安装通常是通过web应用程序漏洞或配置错误实现的。因此,识别和关闭这些漏洞对于避免潜在的危害至关重要。以下提供了些预防Web-Shell的最佳实践:
  • 定期更新应用程序和主机操作系统,以确保对已知漏洞的保护
  • 在web服务器上实现最小权限原则: 降低攻击者升级特权或横向转向其他主机的能力
  • 在面向Internet的系统和企业内部网络之间部署非军事区(DMZ),限制两者之间的交互以及记录进出流量
  • 确保web服务器的正确配置,包括禁用或阻塞所有不必要的服务和端口,白名单,阻止外部访问管理界面,不使用默认密码登录
  • 利用反向代理(如mod_security)限制可访问的URL路径
  • 用户输入验证来限制remote file inclusion和remote file inclusion漏洞
  • 定期对系统和应用程序进行漏洞扫描
  • 部署web应用程序防火墙(WAF)


【Web|Web Shell 简介】https://www.us-cert.gov/ncas/alerts/TA15-314A

    推荐阅读