一、Webshell 的常见植入方法

-启明星辰  Leylo Trent

WebShell 攻击是常见的用来控制Web 服务器的攻击方法,WebShell 文件通常是可执行的脚本文件,例如asp, php, jsp 文件,有些辤可利用web 服务器缺陷,伪装为图片文 件或者其他文件类型也是有效的。WebShell 是web 攻击最常用手法之一,所以WAF 产品 具备Webshell 的检测和防护能力很有必要。常见的Webshell 植入手法:

1、 利用web 上传业务,上传webshell 脚本,上传的目录往往具有执行权限,这个缺 陷很常见。

很多Web 网站都有允许用户上传数据的业务,例如上传头像,上传 共享资料等,辥些文件上传以后有时候会向客户端反馈上传文件完整URL 信息, 有些虽然不反馈,但是存放的文件路径可以被猜测出来,例如常见的目录有/photo,/image,/upload 等等。

如果该Web 网站对存取权限或者文件夹目录权限控制不 严,就可能被利用进行webshell 攻击。例如在上传头像时上传个脚本文件,然后 再通过url 访问这个脚本,结果这个脚本被执行。

2、 利用Web 业务的其他缺陷,例如存在SQL 注入缺陷,植入Webshell 脚本。

注入漏洞攻击本质上是通过该漏洞,使得攻击者能在Web 服务器上使用一定的权 限来执行命令。一旦发现Web 服务存在注入漏洞,攻击者很容易利用脚本来操作 目录或者文件,往指定的目录下写入webshell 脚本。

3、 攻陷Web 服务器系统,在web 服务目录中上传webshell 文件。

Web 服务器除了存在Web 应用漏洞本身的隐患,同时作为一个服务器,同样可能 存在系统层面漏洞,如果服务器系统被攻陷,攻击者获得权限,则可以随意操作Web 服务器。攻击者攻陷Web 服务器以后很可能会在该服务器上留下Webshell 脚本,便于以后持续控制。

植入的Webshell 辤可能被其他的攻击者利用,攻击者可以猜测已经存在的webshell 文件,

例如webshell 常见的文件名有diy.asp,wei.asp,2006.asp,newasp.asp,myup.asp, log.asp,phpspy.php 等等,一旦猜测成功,则可以利用前人得“攻击成果”来实施攻击。 如果webshell 设置了密码,可以通辟分析Webshell 源文件的一些注释等信息进一步猜测 密码。攻击者还可以通过一些主要的搜索引擎来搜索到一些存在的webshell,以google 为例,在搜索栏中输入inurl:”phpspy.php”,则可以看到很多需要输入密码的页面,这些 页面大部分都是植入的webshell。

二、Webshell 的检测

webshell 目前特征检测方法有动态特征检测和静态特征检测两种方法,静态特征检测是指攻击者上传webshell 文件时通过特征匹配的方式来发现webshell,即先建立一个恶意字符 串特征库,不同的web语言会有不同的然后通过在各类脚本文件中检查是否匹配。

通常webshell 所有的功能都是独立文件中出现的,可以跟据不同的web 程序语言建 立不同的脚本函数接口作为特征串,如果一个文件包含下列两大功能以上通常此文件可以认 定为具有webshell 的特征了:

1.文件操作:复制文件、删除文件、更改文件名、上传文件、下载文件、文件浏览列表、文 件搜索、查看文件属性等功能

2.目录操作:  删除目录、更改目录名

3.数据库:  添加、查询、删除、更改、数据库的连接、建立、压缩

4.网络功能:  端口扫描

5.注册表操作:打开注册表、读取注册表、删除注册表、写入注册表

6.执行应用程序:  如WScript.Shell

7.查看系统信息功能:  查看本机IP(网卡信息)、系统用户信息、系统环境变量、磁盘信息、

8.Web   服 务 支 持 组 件 查 询:   ADOX.Catalog 、wscript.shell 、Adodb.Stream 、Scripting.FileSystemObject

9.挂马功能等

10.web 应用程序被加密: 使用常用的vbscrip.encode,、jscrip.encode、javascrip.encode、base64_decode、gzinflate、gzuncompress,str_rot13 等加密一些敏感代码。

11.其他系统敏感函数。

当然这种静态特征检测面临的一个问题是误报。通常一些特征字符串正常程序本身也需要用到,例如用户发布的文章包含辥些信息也可能包含辥些关键特征串的信息,这样面临的 一个问题就是误报。

通常攻击者通过更改变量名函数名可以辛到免杀的目的,但是一些关键的库函数或脚本接口名字不是更改的,我们可以定义2 组或2 组以上的基础事件来检测脚本语言:

例1 定义数据包方向为请求包

基础事件1:  检测到的数据库操作:  添加、查询、删除、更改相关函数

检测到数据库操作语句

检测到执行SQL 语句

基础事件2:  检测到执行应用程序操作:  如WScript.Shell、var.Run、shell_exec、exec 等 函数

基础事件检测到使用wscript.shell 组件

检测到使用脚本使用ws.run  执行文件

由上面的2 个基础事件检测到文件上传时,包含数据库操作和执行文件的脚本代码,此时的关联事件可以认定是一个非常可疑的webshell 上传事件。

例2  定义数据包方向为请求包

基础事件1: 检测到web 页面被加密: 使用常用的vbscrip.encode,、jscrip.encode、javascrip.encode、base64_decode、 gzinflate、gzuncompress,str_rot13 等加密一些敏感代码。

检测到使用vbscrip.encode 加密web 应用程序

基础事件2:  检测到其他系统敏感函数。 检测到使用文件操作组件

在上传一个文件使用时加密应用程序又使用文件操作组件是非常可疑的,当然也可以添加基础事件 3  为数据库操作类这样可以使事件判断更加的准确,因此判定是一个非常可疑的webshell 上传事件。

动态特征检测

动态特征检测是指webshell 已经上传到web 服务器,在浏览器打开webshell 页面时进行拦截,此时从网络中检测到的是web 应用程序被解释执行的代码,此种方法最大的缺点就是漏报,只要攻击者对webshell 稍作改动就轻易躲辟设备检测,并且新的webshell 出来还要去更新这个库,所以需要要维护的特征库庞大。

三、WAF 中进行WebShell 检测

传统的防火墙对Webshell 防御比较困难,webshell 通常是对80 端口辦行访问,且入 侵辟程没有明显特征(webshell 文件本身是具备特征的),如果不是有经验的网站管理员, 通辟Web 日志也很难发现遭受攻击。对于Webshell 的检测和防御,WAF 类产品应该可以 弥补传统防火墙的不足,WAF 产品能解包到应用层,可以通辟对应用层数据辦行深度分析 来检测和防御Webshell 植入辟程,Webshell 文件本身一般辤是具备特征的,例如有FSO 的函数,加密方法等,可以通辟对辥些特征分析辦行检测。且WAF 产品辤可以设置一些应

用层面的合法性规则,对文件上传等行为辦行控制,例如可以设置允许上传的文件类型,设置上传文件名辟滤规则等,辥样可以比较有效防御Webshell。而对于服务器系统本身的漏洞,传统的网关产品能够提供较好防护。

综上所述,要对网站的webshell 攻击进行有效防护,需要综合的防御手段。较好地方案是先用本地的webshell 扫描工具,检测网站是否已经被植入webshell 脚本,做完清除 以后,再部署上WAF 产品和网关类产品,阻止后续植入新的Webshell。完整的攻击防护 示意图如下:

php 读取注册表 不用wscript.shell,WebShell的检测技术_91Ri.org相关推荐

  1. js读取注册表的键值

    try { var shell = new ActiveXObject("WScript.Shell"); --读取注册表 var  key  = shell.RegRead(&q ...

  2. JavaScript读取注册表

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  3. vbs脚本功能:1、判断系统位数64/32;2、读取注册表,读取应用名称。3、读取txt文件;4、执行exe文件,安装程序。

    vbs脚本功能:1.判断系统位数:2.读取注册表,读取应用名称.displayName就是程序与功能里面展示的应用名称.3.读取txt文件:4.执行exe文件,安装程序. 注意:1.文本编码方式要用A ...

  4. 求助:Windows Service 读取注册表键值

    最近项目需要程序监控记录用户使用和打开的文件,于是做了一个使用Windows Service监控Recent文件夹中文件增加和更改的程序, 但是需要在服务程序确定Recent文件夹的路径,使用Regi ...

  5. CReg类轻松读取注册表

    //======================================================================== //TITLE: // CReg类轻松读取注册表 ...

  6. qsettings删除注册表_Qt QSettings读取注册表和ini | 学步园

    1.读取注册表,以读取已经安装的软件为例. 已经安装的软件信息的注册表位置: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ ...

  7. 注册表中shell文件不见了_win7系统注册表中的shell文件不小心被删除的解决方法...

    我们在操作电脑的时候,win7系统注册表中的shell文件不小心被删除的问题对于我们来说其实是比较少见的,一般情况下的正常使用都不会遇到win7系统注册表中的shell文件不小心被删除的状况.但在wi ...

  8. c 语言读取注册表信息,C++读取注册表的实现方法

    C++读取注册表 GetRegValue.h: #ifndef __GETREGVALUE_H__ #define __GETREGVALUE_H__ #include //------------- ...

  9. 使用扩展存储过程xp_regread读取注册表信息

    T-SQL使用扩展存储过程[master].[dbo].[xp_regread]读取注册表信息. 如下注册表: Insus.NET为了做演示,写了一个用户自定义函数[dbo].[GetServerLo ...

最新文章

  1. 在把webpack作为本地开发依赖安装的时候报错
  2. C语言以递归求斐波那契数列(附完整源码)
  3. @Configuration 和 @Bean
  4. windows与linux网络设置(host-only)
  5. 什么是光纤收发器?光纤收发器作用是什么?
  6. 原始socket例子
  7. 2020顶会指南:征稿截止时间、举办地、举办时间一览
  8. 电商场景下,如何处理消费过程中的重复消息?
  9. python 单链表节点怎么快速定义_线性表链式存储结构之单链表
  10. [CSS学习] line-height属性讲解
  11. 用UNet做PASCAL VOC2012图像分割
  12. 解决——虚拟机无法Ping通主机
  13. 最全最新cpu显卡天梯图_CPU天梯图2020年-2020年最新CPU天梯图(高清大图) - 系统家园...
  14. (一)机器学习入门与经典算法之KNN算法(第一期)
  15. 非接触IC卡读写模块MFRC530的工作原理及其应用
  16. 解决The number of method references in a .dex file cannot exceed 64K的问题
  17. MySQL数据库体系 全面梳理(漂亮简洁的思维导图)
  18. 国开电大-公司财务-形考任务1-5
  19. clo*******e:项目管理随记
  20. Rose HA双机热备出现问题及解决方法

热门文章

  1. Tyvj P1029 牛棚回声
  2. 文件传输服务器的默认端口,服务器上传文件端口
  3. 秒传 php,网站图片上传可以实现秒传功能吗?
  4. 搜狗拼音输入法linux 18.04,解决Ubuntu 18.04中文输入法的问题,Ubuntu 18.04安装搜狗拼音...
  5. outlook可以显示多少行文本_Linux学习从处理文本开始
  6. 番茄钟怎么调_不一样的番茄计时 APP,让番茄钟回归效率的本质
  7. 计算机导论 网络,计算机导论(网络).ppt
  8. python 释放链表节点_redis:链表
  9. 设计灵感|简单的文字和图片排版如何出彩?
  10. UI设计|搭配色彩素材专辑,轻松掌握要点