渗透测试

Webshell工作原理与免杀学习

最近学习了一些Webshell相关的知识,来补充一下,这是一个大块,绕过的姿势千奇百怪,就算市面上出来的也有很多,还是好好学习。

Webshell工作原理

php常见的eval类型一句话木马

eval:将字符串按照PHP代码执行;
在这里进行了文件操作的演示,其原理就在于当前PHP脚本文件会去读取并执行变量值的内容。

针对Webshell的免杀

如何针对市面上各种WAF而使Webshell做到免杀?
对WAF查杀的规则
1、上传文件时发现在文件内的敏感信息从而报毒查杀
2、创建好Webshell进行连接时发现其动作以及信息进行报毒查杀
3、….
大致的查杀规则就这两种,在这也针对这两种查杀规则来进行免杀学习

有的WAF检测到webshell不会显示文件。

针对类型一的免杀demo编写

针对检测到文件中的敏感信息从而报毒查杀这一情况的免杀,也是最为常见的,在代码中进行多次加密以及其他逻辑方面的混淆变形来绕过WAF查杀规则。

先拿最常见的一句话进行测试,使用WAF对其进行扫描,毫无疑问被杀

通过利用一些PHP的函数对其进行变形(当然首要条件就是变形后此一句话依旧可以执行)
一、使用匿名函数进行创建
create_function(arg,code)
将执行的一句话代码作为函数的代码部分,并让其执行,因为不需要参数所以参数传入空,可以执行但是不幸被查杀,检测数create_function中所包含一句话木马。

这里来稍用点心思判断一下WAF的判断规则,WAF检测到a变量对应的create_function中所引入的变量对应是一句话,从而报毒查杀。

让a变量的值为字符串,字符串当然不会报错。但是也反应了WAF并没有那么智能,会检测里边的值进行回溯。

直接调用会出错,来尝试一下二次引用,看会不会查杀。

如果是在别的WAF下,提示信息会更详细一些,a变量指向了creat_function然后指向了一句话。

如何不以变量函数的形式来让其执行?
array_map(回调函数,数组)——————为数组的每个元素应用回调函数。

虽然还是提示create_function对应一句话,但是却没有了变量指向。

既然不会检测字符串中的值是否危险,就将payload完全变为一个字符串

定界符的使用

按照原样输出内部的东西,特殊字符不需要转义,但是变量会被解析(如果不让其解析需要对$进行转义)。

此时的思路以及所使用的函数:
让payload以字符串的方式被写入到某个目录,然后再在webshell中对其进行引用
tempnam(dir,prefix)————在指定目录建立一个具有唯一文件名的文件,可以指定其前缀
sys_get_temp_dir()————获取环境变量中的缓存目录
fopen————打开文件或url
fwrite————写入某个文件



OK,这样就通过缓存目录做到了免杀的效果。

在PHP中也还有相当一部分的函数可以进行混淆与变形,这些还得不停地去学习。

接下来看一看针对类型二如何免杀。

针对代码逻辑对连接工具进行微调

Webshell已经上传到目标站点,但是自己逻辑写的比较深,现阶段常用的工具(比如菜刀)并没有集成,导致工具连不了。

这里简单拿base64做演示学习。

正常代码,菜刀可连接并执行命令:

当我们写的时候对参数传入的值要用base64加密来进行一定的混淆绕过时:


执行不了,因为我们需要对传入的值进行base64加密,用fiddler抓一下菜刀发出去的包看一下里边的数据
执行ipconfig后传出去的值是这些

明显不是,细心的同学可能会发现里边有一串base64的值,其实拿出来就可以直接用了

在这我们对菜刀进行微调
在菜刀的配置文件中发现PHP的base参数是%s,里边的值刚好就是菜刀所发出去的数据,其实里边已经进行了一定的绕过,不过是针对服务器WAF对所传入的值检测较为严格的情况下,这时WAF已经关闭,对于简单的情况反而兼容不了

将多余的数据删除,只留下一个%s

再次执行,正常

其他类型

不出现eval、assert、system等关键字的免杀

file_get_contents()————将整个文件读入字符串(可以为远程文件)

目标txt文件的内容可以为eval、assert、system等

利用system

上传普通的eval一句话安全狗会拦截,将eval改为system就可以绕过上传

利用assert

其他webshell免杀技巧[更新]

利用回调函数来创建后门

这两天在找资料中无意又翻到了P神的博客,又看到了不少干货,也没啥犹豫的加入了P神的小密圈,最近要花点时间把小密圈里边的东西好好看看。

参阅文章

漏洞银行:如何绕过WAF查杀规则–换向思维免杀webshell
漏洞银行:安全狗上传 + webshell免杀
一些不包含数字和字母的webshell
创造tips的秘籍-PHP回调后门

(1)

本文由来源 Yokeen's blog,由 SecJack 整理编辑!

关键词:, ,

热评文章

发表评论