不用反弹怎么拿shell有什么用

之前在网上看到很多师傅们总结嘚linux反弹shell的一些方法为了更熟练的去运用这些技术,于是自己花精力查了很多资料去理解这些命令的含义将研究的成果记录在这里,所謂的反弹shell指的是我们在自己的机器上开启监听,然后在被攻击者的机器上发送连接请求去连接我们的机器将被攻击者的shell反弹到我们的機器上,下面来介绍分析几种常用的方法

方法1: 反弹shell命令如下:

首先,使用nc在kali上监听端口:


可以看到shell成功反弹到了kali上面可以执行命令:
在解释这条反弹shell的命令原理之前,首先需要掌握几个点

linux文件描述符:linux shell下有三种标准的文件描述符,分别如下:

还有就是>&这个符号的含義最好的理解是这样的:

当>&后面接文件时,表示将标准输出和标准错误输出重定向至文件
当>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符

也有师傅把&这个符号解释为是取地址符号学过C语言的小伙伴们都知道&这个符号代表取地址符,在C++中&符號还代表为引用这样做是为了区分文件描述符和文件,比如查看一个不存在的文件要把标准错误重定向到标准输出,如果直接cat notexistfile 2>1的话則会将1看作是一个文件,将标准错误输出输出到1这个文件里而不是标准输出,而&的作用就是为了区分文件和文件描述符:

理解了上面这些知識下面来解释一下这一条反弹shell的命令首先,bash -i代表在本地打开一个bash然后就是/dev/tcp/ip/port, /dev/tcp/是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调鼡建立一个socket连接,>&后面跟上/dev/tcp/ip/port这个文件代表将标准输出和标准错误输出重定向到这个文件也就是传递到远程上,如果远程开启了对应的端口去监听就会接收到这个bash的标准输出和标准错误输出,这个时候我们在本机CentOS输入命令输出以及错误输出的内容就会被传递显示到远程。
在本地输入设备(键盘)输入命令在本地看不到输入的内容,但是键盘输入的命令已经被输出到了远程然后命令的执行结果或者錯误也会被传到远程,查看远程可以看到标准输出和标准错误输出都重定向到了远程:
那么,0>&2也是可以的代表将标准输入重定向到标准错误输出,而标准错误输出重定向到了/dev/tcp/ip/port这个文件也就是远程,那么标准输入也就重定向到了远程

只是把输出输送到远程终端

后面多了0>&1囷0>&2表示将输入也送入终端。即想在centos虚拟机的输入要在kali中输入,显示结果也在kali中显示但是第一种的输入是在centos中输入。

}

shell与telnetssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转

通常用于被控端因防火墙受限、权限不足、端口被占用等情形。

什么是反弹为什么要反弹

假设我们攻击了一台机器,打开了该机器的一个端口攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式我们叫做正向连接。远程桌面web服务,sshtelnet等等,都是正向连接

l   某客户机中了你的网马,但是它在局域网内你直接连接不了。它的ip会动态改變你不能持续控制。

l   由于防火墙等限制对方机器只能发送请求,不能接收请求

l   对于病毒,木马受害者什么时候能中招,对方的网絡环境是什么样的什么时候开关机,都是未知所以建立一个服务端,让恶意程序主动连接才是上策。

}

1、想办法利用漏洞将自己的脚本洳wget默认信任ftp文件漏洞将自己伪装过的文件让服务器自己下载到到其主机中
2、当用户再次用wget时就会执行我们伪装的文件
3、如我们可以在伪裝的文件里放一个tcp连接的bash,则用户的服务器会自动的连接我们服务器的端口。
这样我们就不担心对方用户不接受外界请求了或者对方不断变換IP啦他的主机会自动找我们连接,好像间谍哈哈~

}

我要回帖

更多关于 拿shell有什么用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信