当前位置: 首页 > news >正文

【免杀】————4、Webshell如何bypass安全狗,D盾

前言

相信各位师傅都有自己过waf一句话的思路,我这写一下自己常用的思路与及具体方法,如有错误,还望大家斧正。上次很多师傅问我要的web漏扫的github地址抱歉还不能给你们,(毕设没答辩完,而且还没写完Orz)

Webshell

这里,我主要是写phpwebshell的bypass(主要是其他的没研究过),安全狗的版本是在官网下载的apache4.0版本。

D盾是2.0.9的

在bypass之前我们得先了解一下最基本的webshell的组成。

所以不管webshell再怎么变化,都必须满足这两点。我们就可以根据这两点来进行变化从而达到bypass的目的。当然我们要绕过waf,首先就得先了解waf的检测机制,这里我们先测试安全狗的,先准备几个文件。

扫描一下

带有eval的敏感字符与及敏感传参的$_POST并没有报毒,可以猜测waf的一部分机制是参数追踪与及综合判定。

Bypass

现在我们就可以尝试一些方法进行绕过。

1、关键字变形

对于关键字变形,能用的实在太多了,php是个非常强大的语言对于字符串的各种变化都支持的非常好。我们可以用进制转换,十六进制,八进制之类的。

这样子就bypass了安全狗,或许会有人会说,为什么不用eval而用assert。其实我也想用eval但是,eval并不是一个函数,不支持这样子的调用。具体分析可以自行百度一下。但是很明显这样子过不了D盾

问题不大,我们可以尝试更多的方法。

   2. 算术运算

我们可以同通过自增,异或,取反等方法来获得我们想要的字母,再组合成函数,动态调用即可。
例如:
通过定义a然后进行自增运算得到其他文明想要的字符,但是注意并不能进行自减

但是我们这样子取出来的只有小写字符,并不能得到我们想要_POST,_GET。在PHP中,两个字符串执行异或操作以后,得到的还是一个字符串。所以这里我们就可以用异或,取反来取我们想要的大写字母。
写个php脚本。

把能想到特殊字符全部丢进去得到遍历异或的结果,然后再取我们想要的字符。这里我们就以取_POST为例子。
_可以用|和#来进行异或得到

然后一个个找出来,得到的结果就是:

结合我们上面的自增我们可以得到以下代码

测试一下,可以过安全狗,但是过不了D盾,可是我们的安全等级下降了,问题不大,继续肝。

   3.编码加拼接

通过base64与及rot13编码,动态函数调用得到以下代码

稳过安全狗,但是还是没有过D盾,可是等级我们再次降低了一个级别,变成二级了。

我们可以再结合一下上面所说的,把自增运算与及参数的传递打破一下检测的规则。

检测一下:

可以发现,安全狗我们再次无压力,并且D盾等级再次降低,降到了一级,只报了一个变量函数,针对这一点,我们再改一下。这次我们可以采用数组的方式,经过多次变换,再加上参数扰乱达到bypass的目的。
代码如下:

测试如下:

可以发现我们已经bypass掉了安全狗,D盾,深信服,360主机卫士。

当然远不止这种方法,php实在太灵活了。

  • uopz_function()
  • uasort()
  • uksort()
  • array_uintersect_uassoc()
  • array_udiff_assoc()

等等,都可以用来bypass,用法可以自己尝试。
我这贴出两种思路,这个一句话是在鹏城杯线下赛中出现的,通过自增得到关键字,然后定义类,类内函数自调用来进行bypass。

另一种,我们可以利用php的反射机制,获取注释的内容,然后拼凑出assert,从而动态执行,代码如下。

检测效果如下:

这样子也可以bypassD盾安全狗 等。
Bypass的思路还有:

  • 缓存写webshell
  • 回调函数
  • 正则匹配绕过
  • 匿名函数

In the end

不管是什么waf,摸清楚规则,不断尝试才是王道,借用前辈的一句话。
“知识面决定攻击面”。
共勉。

转自:https://mp.weixin.qq.com/s/aAK2pLf3XX8AKz2-UoQbYQ

相关文章:

  • 【免杀】————5、过D盾webshell分享
  • 国家网络空间安全保障体系
  • 浅谈SSRF漏洞
  • 寻找隐藏在CloudFlare和Tor后的真实IP
  • 【Docker】————1、docker安全基线整理
  • 【公链安全】go-ethereum链安全审计
  • 【应急基础】Linux下进程隐藏的方法及其对抗
  • 【应急响应】Windows应急响应操作手册
  • 使用base64+gzinflate压缩编码来加密webshell
  • 社工查询网址汇总
  • Linux主机安全测评
  • EOS系统架构图解
  • 【算法】————1、冒泡排序
  • 【算法】————2、选择排序
  • 【算法】————3、插入排序
  • [deviceone开发]-do_Webview的基本示例
  • 【comparator, comparable】小总结
  • 【React系列】如何构建React应用程序
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • httpie使用详解
  • HTTP中GET与POST的区别 99%的错误认识
  • Javascript编码规范
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Objective-C 中关联引用的概念
  • oschina
  • React Native移动开发实战-3-实现页面间的数据传递
  • Spark学习笔记之相关记录
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 工作手记之html2canvas使用概述
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 前端存储 - localStorage
  • 入手阿里云新服务器的部署NODE
  • 设计模式走一遍---观察者模式
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​Linux·i2c驱动架构​
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # 数论-逆元
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (10)STL算法之搜索(二) 二分查找
  • (23)Linux的软硬连接
  • (C语言)共用体union的用法举例
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (超详细)语音信号处理之特征提取
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • ../depcomp: line 571: exec: g++: not found
  • .dwp和.webpart的区别
  • .NET NPOI导出Excel详解