zoukankan      html  css  js  c++  java
  • 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

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    Finding Palindromes POJ
    吉哥系列故事——完美队形II HDU
    Period II FZU
    生日礼物&&Supermarket
    炮兵阵地[状态压缩DP]
    最小表示法 P1368
    Period
    最长异或路径
    Luogu P5490 扫描线
    解方程
  • 原文地址:https://www.cnblogs.com/devi1/p/13486399.html
Copyright © 2011-2022 走看看